[英]switching component for ghc-mod
我有一个项目,其主要的cabal组件是一个库
library
hs-source-dirs: src
...
并且还定义了
executable todo
if !flag(example)
Buildable: False
ghc-options: -Wall
cpp-options: -DGHCJS_BROWSER
default-language: Haskell2010
hs-source-dirs: example/todo
other-modules: TodoDispatcher
TodoStore
TodoComponents
main-is: Main.hs
现在,如果我尝试键入检查一个文件,我会收到以下错误
Configuring react-flux-1.0.3...
EXCEPTION: types:
Could not find module ‘TodoDispatcher’
Use -v to see a list of the files searched for.
如果我从命令行这样做,我得到
$ ghc-mod --ghcOpt=-v7 type example/todo/TodoViews.hs 29 28 not sandboxed
EXCEPTION: types:
Could not find module ‘TodoDispatcher’
Locations searched:
.stack-work/dist/x86_64-osx/Cabal-1.22.8.0/build/TodoDispatcher.hs
.stack-work/dist/x86_64-osx/Cabal-1.22.8.0/build/TodoDispatcher.lhs
.stack-work/dist/x86_64-osx/Cabal-1.22.8.0/build/TodoDispatcher.hsig
.stack-work/dist/x86_64-osx/Cabal-1.22.8.0/build/TodoDispatcher.lhsig
src/TodoDispatcher.hs
src/TodoDispatcher.lhs
src/TodoDispatcher.hsig
src/TodoDispatcher.lhsig
.stack-work/dist/x86_64-osx/Cabal-1.22.8.0/build/autogen/TodoDispatcher.hs
.stack-work/dist/x86_64-osx/Cabal-1.22.8.0/build/autogen/TodoDispatcher.lhs
.stack-work/dist/x86_64-osx/Cabal-1.22.8.0/build/autogen/TodoDispatcher.hsig
.stack-work/dist/x86_64-osx/Cabal-1.22.8.0/build/autogen/TodoDispatcher.lhsig
所以它似乎忽略了我尝试使用类型检查的当前文件属于的组件的hs-source-dirs
设置,而是考虑了包中第一个组件的那个,就像cabal repl默认做的那样
By default cabal repl loads the first component in a package.
我怎样才能改变全局状态呢?
好的,所以这是你应该做的,以使这个工作:
您需要编辑cabal文件并将组件的标志更改为
`Buildable : True`
然后,您可以键入check
$ ghc-mod --ghcOpt=-v7 type example/todo/TodoViews.hs 29 28 not sandboxed 29 24 29 34 "[Char]" 27 25 33 12 "TextInputArgs" 27 9 33 12 "ReactElementM [
在Emacs中:
你可能需要退出Emacs
你需要打开你的文件和haskell-process-load-file
(又名Cc Cl,又名Space msb)
它应该加载了正确的“目标”,这是cabal中“组件”的haskell模式说法。 如果那样有效,那么ghc-mod也应该。 (?)
http://haskell.github.io/haskell-mode/manual/latest/Interactive-Haskell.html
14.8.1更改REPL目标
使用haskell-session-change-target,您可以更改REPL会话的目标。
在REPL会话开始后,在haskell-interactive-mode缓冲区中调用haskell-session-change-target并从可用目标中选择
- 测试
- 基准
- 可执行文件
- 图书馆
回答“是”以重新启动会话并运行测试,基准测试,可执行文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.