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)
希望你了解我?
非常感谢任何建议,
答案 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)