我是哈斯克爾的新手,所以我對ghc-mod
的工作方式以及如何構建哈斯克爾世界的工具如何在引擎蓋下移動沒有深入的瞭解。爲什麼ghc-mod驅動的neco-ghc只能在項目根目錄下工作?
但我不知何故從github上找到vim haskell插件,包括neco-ghc自動補全插件,這些插件都支持ghc-mod
這對我來說很有吸引力。
問題是,它只適用於項目級別的haskell源代碼cabal-install
已初始化的項目,而它根本不適用於stack
初始化項目。用下面的命令生成
我的目錄結構:
~ $ mkdir my_project && cd my_project
~/my_project $ cabal init
~/my_project $ cabal sandbox init
這將產生
my_project
|-- Setup.hs
|-- cabal.sandbox.config
|-- src/Lib.hs
自動完成的作品(它表明前奏模塊的關鍵字),當我編輯Setup.hs
但我暗示什麼,當我嘗試編輯src/Lib.hs
。
我:NecoGhcDiagnotics
命令輸出
Current filetype: haskell
ghc-mod is executable: 1
omnifunc: necoghc#omnifunc
neocomplete.vim: 0
neocomplcache.vim: 2
YouCompleteMe: 0
vimproc.vim: 900
ghc-mod: 5.4.0.0
Imported modules: Prelude
Number of symbols in Prelude: 0
當我編輯src/Lib.hs
而
Current filetype: haskell
ghc-mod is executable: 1
omnifunc: necoghc#omnifunc
neocomplete.vim: 0
neocomplcache.vim: 2
YouCompleteMe: 0
vimproc.vim: 900
ghc-mod: 5.4.0.0
Imported modules: Distribution.Simple, Prelude
Number of symbols in Prelude: 235
是,當我編輯Setup.hs
命令的輸出。
它顯然看起來像ghc-mod
沒有檢測到任何符號當我編輯src/Lib.hs
..爲什麼會發生這種情況?
因爲'ghc-mod' 5.4.0堅持[從項目的根目錄運行](https://hackage.haskell.org/package/ghc-mod-5.4.0.0/changelog)。並不是它不知道如何找到根目錄和'chdir()':它特別希望你事先做好。有一天,'ghc-mod'的作者可能會開始理解向後兼容的概念,以及爲什麼有些人會爲此做出如此大的冒險。這一天似乎相當遙遠。 – lcd047
升級'neco-ghc' [應該幫助](https://github.com/eagletmt/neco-ghc/pull/56)。 – lcd047
@ lcd047耶穌,你是我的救星!你爲什麼不把這些評論作爲答案,以便我可以接受? – June