私は現在、LaTeX ドキュメントの作成と編集に emacs を使用しています。コンパイルするときは、外部プログラムを使用して pdf にコンパイルします。現在、私の.emacs
ファイルに次のコードがあると、ファイルを保存するたびに、emacs がドキュメントを pdf にコンパイルし始めます。
(defun auto-compile-latex ()
(save-window-excursion
(async-shell-command (format "cd %s; scons -u" default-directory))))
(add-hook 'LaTeX-mode-hook '(lambda ()
(add-hook 'after-save-hook 'auto-compile-latex nil 'make-it-local)))
M-x compile
保存する習慣があり、バックグラウンドで起動するため、作業を続けることができるため、 よりもこれを好みます。ただし、コンパイル プロセスが終了しても、目立つ通知は表示されません。
理想的には、コンパイル プロセスが終了するたびに次の関数を実行したいと考えています。
(defun latex-compilation-status (exit-code)
(if (/= exit-code 0)
(setq mode-name (propertize mode-name 'face 'font-lock-warning-face))
(setq mode-name (propertize mode-name 'face 'mode-line-highlight))))
そうすれば、コンパイルが成功したかどうかに応じて、モード ラインの色を自動的に変更できます。ただし、emacs のドキュメントを調べたところ、完了後に実行されるフックについての言及は見つかりませんでしたasync-shell-command
。サブプロセスの終了ステータスを示すメッセージがミニバッファーにあることは知っていますが、そのときに入力していると、気づきにくいことがよくあります。
または、シェル コマンドが完了するのを待ってから、すぐに色を変更することもできます。ただし、これにより、コンパイル中に emacs 全体がフリーズしますが、これは望ましくありません。
プロセス中にemacsがフリーズすることなく、コンパイルの最後にこの指示を適用するにはどうすればよいですか?