【发布时间】:2014-06-26 23:13:26
【问题描述】:
这是我的场景:
我正在开发一个包含以下目录/模块的项目:
|--proj
|-- src
|-- Foo
|-- FooModule1.hs
|-- FooModule2.hs
|-- Bar
|-- BarModule1.hs
BarModule1.hs 看起来像这样:
module BarModule1 where
import Foo.FooModule1
...
我还有一个.cabal 文件将src 指定为hs-source-dirs,当然这两个模块都在其中列出。
当我在 Emacs 中的文件 BarModule1.hs 中执行 C-c C-l 时,它会说:
proj/src/Bar/BarModule1.hs:3:8:
Could not find module `Foo.FooModule1'
Use -v to see a list of the files searched for.
Failed, modules loaded: none.
我还想将hlint 与flymake-haskell-multi-load 一起使用,如果我用M-x flymake-haskell-multi-load 激活该模式,hlint 将始终显示找不到模块@ 的错误987654333@,因为它不知道.cabal 文件,我在其中指定了hs-source-dirs: src。
所以我的问题是:我怎样才能让haskell-mode 和flymake/hlint 了解我的项目目录/模块树,以便它找到所有模块?
或者,我怎样才能让他们知道我的.cabal 文件中指定的模块?
【问题讨论】:
-
如果您使用的是 cabal 文件,那么为什么不使用 cabal 本身呢?首先确保您当前的缓冲区是与 .cabal 文件位于同一文件夹中的文件,然后是
C-u M-x compile RET cabal repl RET -
你使用的是什么版本的haskell-mode?最新和最伟大的是非常了解阴谋集团。同样适用于 ghc-mode IIRC
-
C-u M-x compile RET cabal repl RET 适用于 repl 但不能修复 flymake/hlint 问题我使用的是 haskell-mode 13.7
标签: haskell emacs haskell-mode