Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

save and compile automatically

Tags:

emacs

GNU 23.1.1

By clicking the F5 button I can compile my project. However, I want to extend this so that any unsaved work would be saved and then compiled.

Normally I just do C-x-s to save then click F5. But can I add a line that will save without having to ask me do I want to save then it will compile, all done automatically?

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

Hope you understand me?

Many thanks for any advice,

like image 946
ant2009 Avatar asked Jan 14 '10 06:01

ant2009


3 Answers

Put (setq compilation-ask-about-save nil) in your .emacs to automatically save (without asking) before you compile or recompile.

like image 173
Matt Curtis Avatar answered Oct 16 '22 13:10

Matt Curtis


On every Emacs I use (from the 19.34 to 24), compile do ask for saving unsaved buffer before proceeding. I'm very surprise it is not the case for you.

So just M-x compile (f5 for you) will ask to save unsaved buffer.

you can customize compilation-ask-about-save to nil if you want compile to unconditionally save all buffer, or let it to it's default non nil value if you want to be asked.

like image 40
Rémi Avatar answered Oct 16 '22 11:10

Rémi


You can use (save-some-buffers 1) to save all buffers containing changes.

Wrap it up with a function together with compile like so:

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

Then set F5 to run this function instead of plain compile.

Use (save-some-buffers) (no argument) if you prefer Emacs to ask you about each buffer to be saved. Also, you might want to make the compilation-command customisable, as it is with compile... I'll leave that to you though.


Getting it to work

You also have to add (interactive), see full example below.

(defun save-all-and-compile ()
  (interactive)
  (save-some-buffers 1)
  (compile compile-command))
(global-set-key [f5] 'save-all-and-compile)
like image 45
Michał Marczyk Avatar answered Oct 16 '22 11:10

Michał Marczyk