我最近从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用法?
答案 0 :(得分:1)
将默认编译命令设置为更符合您风格的内容:
(setq compile-command "cabal build")
在第一次编译之前,如果您不在正确的目录中,则可以使用cd
函数更改当前工作目录。此后,您只需点击g
缓冲区中的*compilation*
即可重新编译,或将recompile
函数绑定到您喜欢的密钥。
我通常使用屏幕一侧的代码和另一侧的编译缓冲区; C-x `
会将您带到下一个错误,M-n
和M-p
会在编译缓冲区中导航错误。