2015-10-19 12 views
1

Я новичок в haskell, поэтому у меня нет глубокого понимания о том, как работает ghc-mod и как cabal-install-подобные инструменты построения хэскеллских миров движутся под капотом.Почему ghc-mod powered neco-ghc работает только в корневом каталоге проекта?

Но я как-то нашел плагины vim haskell от github, в том числе neco-ghc плагин для автоматического завершения работы от ghc-mod, который казался мне очень привлекательным.

Проблема заключалась в том, что она работает только на исходных кодах исходного кода проекта 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 .. почему это происходит?

+5

Поскольку 'ghc-mod' 5.4.0 настаивает на [запуске из корневого каталога проекта] (https://hackage.haskell.org/package/ghc-mod-5.4.0.0/changelog). Дело не в том, что он не знает, как найти корневой каталог и 'chdir()' ему: он специально хочет, чтобы вы сделали это заранее. Когда-нибудь авторы 'ghc-mod' могут начать понимать концепцию обратной совместимости и почему некоторые люди так сильно волнуются. На этот день пока что-то довольно далеко. – lcd047

+1

Обновление 'neco-ghc' [должно помочь] (https://github.com/eagletmt/neco-ghc/pull/56). – lcd047

+0

@ lcd047 Иисус, ты моя жизнь! Почему бы вам не оставить эти комментарии в качестве ответа, чтобы я мог его принять? – June

ответ

4

Отправка ответа в соответствии с запросом: ghc-mod 5.4.0 настаивает на том, чтобы быть run from the project's root directory. Это нарушает различные сторонние программы, которые зависят от ghc-mod. Плагин neco-ghc был updated, чтобы справиться с этим, другие программы dropping support for ghc-mod.