2016-03-29 4 views
0

UPDATE: уточнено, что это на Mac OS XКак вы получаете Emacs haskell-mode для поиска модулей в других hs-source-dirs?

Я использую Emacs Прелюдия (который использует Haskell-режим) на Mac OS X, и я создал проект с stack new hello.

Проект он генерирует, как это:

  • привет:
    • ЛИЦЕНЗИИ
    • Setup.hs
    • hello.cabal
    • stack.cabal
    • приложение:
      • Main.hs
    • ЦСИ:
      • Lib.hs
    • тест:
      • Spec.hs

Если я открываю Main.hs в Emacs он показывает это:

module Main where 

import Lib 

main :: IO() 
main = someFunc 

Но Lib указывается как ошибка и размещения моего каретку есть это показывает:

Could not find module 'Lib' 
Use -v to see a list of the files searched for. 

Как вы получаете Emacs haskell-mode для поиска модулей в других hs-source-dirs?

+1

ли 'C-c C-l' загружать его в REPL? Установлен ли '' haskell-process-type' 'auto'? – Carsten

+1

Кстати: может быть, вам следует обновиться до текущего 'haskell-mode' - не уверен, когда была включена поддержка' stack', но, возможно, у вас есть более старая версия - также: почему существует 'stack.cabal'? Это 'stack.yaml' правильно? – Carsten

ответ

0

Наибольший ужас в том, что я исправил это, перезагрузившись.

Я, кажется, активировал его, пробив путь до стека. Путь изменился с моей первоначальной ручной установки на ~/Applications/bin/stack на ~/.local/bin/stack. Я знал, что это изменилось, поэтому я закрыл и перезапустил Emacs, но проблема продолжалась.

Перезагрузка исправлена. Это приносит мне печаль. Я предполагаю, что выход из системы, возможно, сработал так же хорошо.

+1

это была, вероятно, только ваша переменная пути ^^, поэтому перезапуск emacs (действительно перезапуск) и/или оболочка, которую вы использовали, вероятно, тоже были бы прекрасны (проверьте с помощью 'which stack');) – Carsten

+0

@Carsten Я воспроизвел его с нуля после , M-x getenv ENT PATH сразу же показал отсутствующий путь. Это было исправлено путем выхода из системы. Для запуска интерактивной оболочки требуется отдельное исправление.emacs '(setq exec-path (append exec-path '("/usr/local/bin ")))' –

+1

странно, поскольку emacs должен использовать ваш существующий путь (может быть, порядок неправильный - указывает на 'which stack' to правый) - в любом случае самое главное, что он снова работает для вас;) – Carsten