我可以更改emacs的默认编译命令吗?

Ste*_*eve 14 emacs dot-emacs

make -k我运行时Emacs默认使用该命令compile.但是,我几乎从不认为make在错误之后继续运行是有用的,所以我总是删除-k标志.有没有办法改变我的默认值,.emacs以便它只是make

cri*_*ito 14

(setq compile-command"make")

或.emacs中的类似内容就足够了.

有关详细信息,请键入

(setq compile-command "make") 
Run Code Online (Sandbox Code Playgroud)

它描述了调用Mx编译时使用的变量.

在那里,你应该看到它调用compile-command和a

C-h f compile
Run Code Online (Sandbox Code Playgroud)

告诉你这个默认为"make -k".以上都是简化,但如果您需要进一步挖掘,所有信息都应该在这些命令中.

  • @Steve,来自[setq-default`的Elisp参考手册](http://www.gnu.org/software/emacs/manual/html_node/elisp/Default-Value.html):"如果SYMBOL不是当前缓冲区的缓冲区本地,并没有自动标记缓冲区本地,`setq-default`与`setq`具有相同的效果.`compile-command`不是自动缓冲局部的,并且在执行`.emacs`时它通常不会是缓冲区本地的,所以它通常不会产生影响. (2认同)

Ste*_*alt 6

由于我需要针对不同模式的不同编译器,因此我使用以下代码段(此处显示了javascript):

(require 'compile)
(add-hook 'js-mode-hook
          (lambda ()
            (set (make-local-variable 'compile-command)
                 (format "jshint %s" (file-name-nondirectory buffer-file-name)))))
Run Code Online (Sandbox Code Playgroud)

这将运行“ jshint”作为我的编译命令。然后,我还可以将钩子添加到其他语言,并根据需要自定义每种钩子。