2010-01-14 21 views
6

GNU 23.1.1guardar y compilar automáticamente

Al hacer clic en el botón F5 puedo compilar mi proyecto. Sin embargo, quiero extender esto para que cualquier trabajo no guardado sea guardado y luego compilado.

Normalmente solo hago C-x-s para guardar y luego hago clic en F5. Pero, ¿puedo agregar una línea que se guardará sin tener que preguntarme si quiero guardar, entonces se compilará, todo se hará automáticamente?

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

Espero que me entienda?

Muchas gracias por cualquier consejo,

+0

Creo que está preguntando cómo hacer que Emacs guarde automáticamente cada vez que compila? Verifique mi respuesta a continuación para saber cómo hacer esto. –

+0

Aunque es un poco diferente de lo que está pidiendo, esta receta para agregar un 'after-save-hook' me sirvió de algo: http://rtime.felk.cvut.cz/~sojka/blog/compile- on-save/ – Manav

Respuesta

7

Puede utilizar (save-some-buffers 1) para guardar todos los tampones que contienen cambios.

envolverlo con una función junto con compile así:

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

asentando después F5 para ejecutar esta función en lugar de compilación normal.

Use (save-some-buffers) (sin argumento) si prefiere que Emacs le pregunte sobre cada buffer que se guardará. Además, es posible que desee hacer el comando de compilación personalizable, como lo es con compile ... Sin embargo, se lo dejo a usted.

+3

Le recomendaría que use una tecla (o una combinación) en su área principal de escritura, en lugar de algo fuera del camino como F5 para hacerlo. –

+2

Obteniendo este error 'command-execute: argumento de tipo incorrecto: commandp, save-all-and-compile' al escribir F5 después de agregar esta línea' (global-set-key [f5] 'save-all-and-compile) ' para atar la llave. Estoy en Emacs 24.5.1. –

13

En cada Emacs que uso (del 19.34 al 24), compile, solicite guardar el almacenamiento intermedio no guardado antes de continuar. Estoy muy sorprendido de que no sea el caso para ti.

Así que solo M-x compile (f5 para usted) le pedirá que guarde el almacenamiento intermedio no guardado.

puede personalizar compilación-preguntar-sobre-guardar en nil si desea compilar para guardar incondicionalmente todo el búfer, o dejarlo en su valor predeterminado no nil si desea que se le pregunte.

+0

Sí, tienes razón. Te pide que guardes. Sin embargo, preferiría que no se me pidiera que guardara nada en cada compilación. Normalmente siempre tengo más de 1 búfer abierto y me gustaría guardar cualquier cosa sin que se me pida cada compilación. – ant2009

+3

luego personalizar la compilación-preguntar-sobre-guardar. Es solo por esto (¿guardar todo el buffer sin preguntar antes de la compilación)? –

15

Ponga (setq compilation-ask-about-save nil) en su .emacs para guardar automáticamente (sin preguntar) antes de compilar o recompilar.

Cuestiones relacionadas