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


Emacs默认使用该命令 make -k 我跑的时候 compile。不过,我差不多 决不 认为有用是有用的 make 错误后继续,所以我 总是 去除 -k 旗。有没有办法改变我的默认值 .emacs 所以它就是这样 make


2666
2018-01-05 20:06


起源

对于X的所有值,“我可以在Emacs中更改X”的答案为“是”。 - AShelly
AShelley,完全正确。唯一真正的问题是,“我如何在Emacs中更改X?” - Cheeso


答案:


(setq compile-command“make”)

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

有关详细信息,请键入

C-h f compile

它描述了调用M-x编译时使用的变量。

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

C-h v compile-command

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


12
2018-01-05 20:15



为此,两者之间是否存在有效差异 (setq compile-command ...) 和 (setq-default compile-command ...)? - Steve
不知道史蒂夫 - C-h f setq和C-h f setq-default提供了更多信息,但无法真正破译。 - cristobalito
@Steve,来自 Elisp参考手册 setq-default:“如果SYMBOL对于当前缓冲区不是缓冲区本地的,并且没有自动标记缓冲区本地, 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”作为我的编译命令。然后我可以为其他语言添加钩子,并根据我的需要自定义每个语言。


4
2017-11-28 10:55