2010-12-06 10 views
7

¿Es posible pasar un indicador "-yes" al comando "recompile" en emacs?emacs (recompile -y)

Perdón por mi falta total de (e) ceceo know-how. Me harté de ir fuera de Emacs para compilar el código de látex, por lo que añade la siguiente clave de unión a mis .emacs:

(global-set-key (kbd "<f12>") 'recompile); 

¿Es posible responder de forma automática 'sí' a la siguiente mensaje que puede aparecer: "Se está ejecutando un proceso de compilación; ¿matarlo? (Sí o no)".

Además, es posible hacer que la ventana que se abre y muestra la salida para desplazarse hacia abajo automáticamente. Lo interesante es típicamente allá abajo. Tal vez sea posible encadenar el siguiente comando después de recompilar: "C-x o, end-of-buffer".

Gracias!

+1

O tal vez usted podría pasar '- halt-on-error' to 'pdflatex' (o similar). – cYrus

Respuesta

7

Aquí hay algo de código para resolver el primer problema (interrumpiendo la compilación actual):

(defun interrupt-and-recompile() 
    "Interrupt old compilation, if any, and recompile." 
    (interactive) 
    (ignore-errors (kill-compilation)) 
    (recompile)) 

Para su segundo problema (el desplazamiento de la salida de la compilación), acaba de personalizar la configuración de usuario compilation-scroll-output.

+0

Funcionó, gracias. – qonf

2

De alguna manera tengo que poner kill-compilation en un error de ignorar con Emacs 23.2 para que funcione cuando no se está ejecutando ningún proceso. De lo contrario, funciona muy bien.

(defun interrupt-and-recompile() 
    "Interrupt old compilation, if any, and recompile." 
    (interactive) 
    (ignore-errors 
    (kill-compilation)) 
    (recompile) 
) 
2

Siempre que he intentado usar kill-compilation con el látex/pdflatex no funcionó. Supongo que es porque el látex no responde a SIGINT.

En su lugar estoy usando el siguiente truco, que primero establece el process-kill-without-query bit del compilation -buffer y luego lo cierra (lo que mata el proceso en ejecución).

(defun interrupt-and-recompile() 
    "Interrupt old compilation, if any, and recompile." 
    (interactive) 
    (ignore-errors 
    (process-kill-without-query 
     (get-buffer-process 
     (get-buffer "*compilation*")))) 
    (ignore-errors 
    (kill-buffer "*compilation*")) 
    (recompile) 
)