自动保存和编译

时间:2010-01-14 06:09:54

标签: emacs

GNU 23.1.1

单击F5按钮,我可以编译我的项目。但是,我想扩展它,以便保存任何未保存的工作然后编译。

通常我只是做C-x-s保存然后点击F5。但我可以添加一行保存而不必问我是否要保存然后它会编译,所有都自动完成?

; Compile program using <F5>
; Save all unsaved files here, then compile
(global-set-key [f5] 'compile)

希望你了解我?

非常感谢任何建议,

3 个答案:

答案 0 :(得分:18)

(setq compilation-ask-about-save nil)放在.emacs中,以便在编译或重新编译之前自动保存(不要求)。

答案 1 :(得分:15)

在我使用的每个Emacs上(从19.34到24),编译确实要求保存未保存的缓冲区,然后继续。我很惊讶你的情况并非如此。

所以只需M-x编译(f5为你)就会要求保存未保存的缓冲区。

如果你希望编译无条件地保存所有缓冲区,你可以自定义编译 - ask-about-save为nil,或者如果你想被问到,可以将它设置为默认的非零值。

答案 2 :(得分:8)

您可以使用(save-some-buffers 1)保存包含更改的所有缓冲区。

使用函数和compile一起包装,如下所示:

(defun save-all-and-compile ()
  (save-some-buffers 1)
  (compile compile-command))

然后设置F5以运行此函数而不是普通编译。

如果您更喜欢Emacs询问有关要保存的每个缓冲区,请使用(save-some-buffers)(无参数)。此外,您可能希望使编译命令可自定义,与compile一样......我会留给您的。


开始工作

您还必须添加(interactive),请参阅下面的完整示例。

(defun save-all-and-compile ()
  (interactive)
  (save-some-buffers 1)
  (compile compile-command))
(global-set-key [f5] 'save-all-and-compile)