当我运行compile
命令时,Emacs默认使用make -k
命令。然而,我几乎从来不认为在错误后继续执行make
是有用的,所以我总是删除-k
标志。是否有一种方法可以在我的.emacs
中更改默认设置,使其只使用make
命令?
(setq compile-command "make")
在你的 .emacs 文件中添加类似的内容应该就足够了。
要获取更多信息,请输入
C-h f compile
这段文字描述了在调用"M-x compile"时使用了哪些变量。
在此过程中,你会发现它调用了compile-command和一个
C-h v compile-command
告诉你,这默认为"make -k"。上面的所有内容都是简化版,如果需要深入挖掘,所有信息都应该在这些命令中。(setq compile-command ...)
和(setq-default compile-command ...)
之间是否有有效的区别? - Stevesetq-default
的说明:“如果一个符号对于当前缓冲区不是本地缓冲区,并且没有被自动标记为本地缓冲区,则setq-default
具有与setq
相同的效果。” compile-command
不是自动缓冲区本地化的,通常在执行.emacs
期间它也不会成为缓冲区本地化,因此通常不会有任何影响。 - cjm由于不同模式需要不同的编译器,因此我使用以下代码片段(此处显示为JavaScript):
(require 'compile)
(add-hook 'js-mode-hook
(lambda ()
(set (make-local-variable 'compile-command)
(format "jshint %s" (file-name-nondirectory buffer-file-name)))))
这个命令是运行“jshint ”。我还可以添加其他语言的钩子,并根据我的需求进行自定义。
(file-name-sans-extension buffer-file-name)
来获取不带扩展名的文件名。例如,(format "rustc %s && %s" (file-name-nondirectory buffer-file-name) (file-name-sans-extension buffer-file-name))
。 - Jake Ireland