2010-12-06 6 views
7

emacsの「再コンパイル」コマンドに "-yes"フラグを渡すことはできますか?emacs(再コンパイル-y)

私は完全に(e)lispのノウハウが不足しています。私は自分のラテックスコードをコンパイルするためにEmacsの外に行くの病気になったので、私は私の.emacsへの結合次のキーを追加しました:

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

は、それが自動的に表示されることがあり、次のプロンプトに「はい」とお答えすることは可能です: "コンパイルプロセスが実行されている、それを殺すか?(はいまたはいいえ)。"

また、開いているウィンドウを作成して、自動的に下にスクロールする出力を表示できますか?面白いものは、典型的にそこにあります。 「C-x o、end-of-buffer」という再コンパイル後に次のコマンドを連鎖させる可能性があります。

ありがとうございます!ここで

+1

それともは - エラーをhalt-onから 'pdflatex'(または同様のもの)に変更します。 – cYrus

答えて

7

があなたの最初の問題(現在のコンパイルを中断することを)解決するためにいくつかのコードです:あなたの第二の問題については

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

(コンパイルの出力をスクロール)、ちょうどcompilation-scroll-outputユーザ設定をカスタマイズします。

+0

それは働いて、ありがとう。 – qonf

2

私は何らかの理由でkill-compilationをEmacs 23.2のignore-errorsに入れて、プロセスが実行されていないときに動作させる必要があります。そうでなければ素晴らしい作品です。

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

latex/pdflatexでkill-compilationを試してみると、うまくいかなかった。私はラテックスがSIGINTに反応しないためだと考えています。

代わりに、compilationバッファのprocess-kill-without-queryビットを最初に設定し、それを閉じて(実行中のプロセスを強制終了する)次のハックを使用しています。

(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) 
) 
0

他のソリューションはsfeuzと同じ理由のために私のために動作しませんでしたが、私は名前でハードコードされたバッファを殺すの核オプションを好きではなかったです。

ここでyes-or-no-pはアドバイスすることにより、その特定の質問にyes autoanswers短いソリューションです:

ftp://download.tuxfamily.org/user42/compilation-always-kill.el

(ソース:http://www.emacswiki.org/CompilationMode)あなただけの `渡すことができ

関連する問題