2010-12-06 8 views
7

Ist es möglich, ein Flag "-yes" an den Befehl "rekompilieren" in Emacs zu übergeben?emacs (rekompilieren -y)

Entschuldigen Sie meinen kompletten Mangel an (e) Lisp-Know-how. Ich wurde krank außerhalb Emacs gehen meine Latex-Code zu kompilieren, so fügte ich den folgenden Schlüssel Bindung an meine .emacs:

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

Ist es möglich, automatisch ‚Ja‘ auf die folgende Aufforderung zu beantworten, die angezeigt werden könnten: "Ein Kompilierungsprozess wird ausgeführt; kill it? (Ja oder Nein)."

Ist es auch möglich, das Fenster zu öffnen, das geöffnet wird und den Ausgang zeigt, um automatisch nach unten zu scrollen. Das interessante Zeug ist normalerweise dort unten. Vielleicht ist es möglich, den folgenden Befehl nach der Neukompilierung zu verketten: "C-x o, Ende des Puffers".

Danke!

+1

Oder vielleicht könnten Sie einfach passieren '- Halt-auf-Fehler "zu" pdflatex "(oder ähnlich). – cYrus

Antwort

7

Hier einige Code Ihr erstes Problem (unterbricht die aktuelle Zusammenstellung) zu lösen:

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

Für Ihre zweite Problem (die Kompilierung Ausgabe Scrollen), fertigen Sie einfach den Benutzereinstellungen compilation-scroll-output.

+0

Es hat funktioniert, danke. – qonf

2

Irgendwie muss ich Kill-Compilation in einen Ignore-Fehler mit Emacs 23.2 setzen, um es zum Laufen zu bringen, wenn kein Prozess läuft. Ansonsten funktioniert das super.

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

Immer wenn ich versucht habe, kill-compilation mit Latex/pdflatex zu verwenden, hat es nicht funktioniert. Ich gehe davon aus, dass Latex nicht auf SIGINT reagiert.

Stattdessen verwende ich den folgenden Hack, der zuerst das process-kill-without-query Bit des compilation-Puffers setzt und dann schließt (was den laufenden Prozess tötet).

(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) 
) 
Verwandte Themen