GNU 23.1.1
通过单击F5按钮,我可以编译我的项目.但是,我想扩展它,以便保存任何未保存的工作然后编译.
通常我只是执行Cxs保存然后单击F5.但是我可以添加一行保存而不必问我是否要保存然后它会编译,所有都自动完成?
; Compile program using <F5>
; Save all unsaved files here, then compile
(global-set-key [f5] 'compile)
Run Code Online (Sandbox Code Playgroud)
希望你能理解我?
非常感谢任何建议,
Rém*_*émi 15
在我使用的每个Emacs上(从19.34到24),编译确实要求在继续之前保存未保存的缓冲区.我很惊讶你不是这样的.
所以只需Mx编译(f5为你)将要求保存未保存的缓冲区.
如果你想编译无条件地保存所有缓冲区,你可以自定义编译 - ask-about-save为nil,或者如果你想被问到,可以将它设置为默认的非零值.
您可以使用(save-some-buffers 1)保存包含更改的所有缓冲区.
用一个函数包装它,compile如下所示:
(defun save-all-and-compile ()
(save-some-buffers 1)
(compile compile-command))
Run Code Online (Sandbox Code Playgroud)
然后设置F5以运行此函数而不是纯编译.
(save-some-buffers)如果您更喜欢Emacs询问有关要保存的每个缓冲区,请使用(无参数).此外,您可能希望使编译命令可自定义,因为它compile...我会留给您的.
您还必须添加(interactive),请参阅下面的完整示例.
(defun save-all-and-compile ()
(interactive)
(save-some-buffers 1)
(compile compile-command))
(global-set-key [f5] 'save-all-and-compile)
Run Code Online (Sandbox Code Playgroud)