在Emacs中编写Haskell编码时,发布cabal构建的最简单命令是什么?

时间:2013-11-24 22:34:07

标签: haskell emacs cabal

我最近从vim切换到了Emacs。显然,标准工作流程总是停留在一个运行的实例中,其中包含多个打开的文件。 (我还不相信这比我习惯的替代方案,“quit-grep-vi-edit-quit-compile等”或多个终端窗口/标签更优越,但至少我给它了试一试。无论如何......)

因此,对于编译文件/项目,通常要做的事情似乎是M-x compile(或者它的镜头)。这允许您指定编译命令,默认情况下提供make -k。这可能是大多数Emacs黑客倾向于做的项目的合理猜测;但在Haskell中,我显然倾向于cabal,根本没有makefile。即使我指定cabal build,它也不起作用,因为命令是从文件的目录执行的,而该目录不是.cabal文件的位置。

目前,我发现自己正在计算模块层次深度并输入

M-x "compile" Enter Bckspc Bckspc ... "cd ../../../; cabal build" Enter

这感觉不对!

是否有一些更好的选择,或者我应该回到我原来的工作流程,即使它不是惯用的Emacs用法?

1 个答案:

答案 0 :(得分:1)

将默认编译命令设置为更符合您风格的内容:

(setq compile-command "cabal build")

在第一次编译之前,如果您不在正确的目录中,则可以使用cd函数更改当前工作目录。此后,您只需点击g缓冲区中的*compilation*即可重新编译,或将recompile函数绑定到您喜欢的密钥。

我通常使用屏幕一侧的代码和另一侧的编译缓冲区; C-x `会将您带到下一个错误,M-nM-p会在编译缓冲区中导航错误。