GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Killing-Emacs.html ・ emacs-doc.conao3.com

43.2.1 Emacsの終了

Emacsを終了させるとは、Emacsプロセスの実行を終了させることを意味します。ターミナルからEmacsを起動した場合、通常は親プロセスが制御を再開します。Emacsを終了させるための低レベルプリミティブはkill-emacsです。

コマンド: kill-emacs &optional exit-data restart

このコマンドはフック kill-emacs-hook を呼び出し、その後 Emacs プロセスを終了して強制終了させます。

exit-data が整数の場合、それが Emacs プロセスの終了ステータスとして用いられます。(これは主にバッチ運用において有用です。バッチモードを参照してください。)

exit-data が文字列の場合、その内容(に続いて改行)がターミナルの入力バッファに投入され、シェル(または次に入力を読み込むプログラム)がそれを読み取れるようになります。ただし、Emacs がターミナル上で対話的に動作していない場合や、投入に特別な権限が必要な場合、あるいはこのプラットフォームでサポートされていない場合は、投入処理は暗黙的にスキップされます。

exit-data が整数でも文字列でもなく、あるいは省略されている場合は、プログラムの正常終了を示す(システム固有の)終了ステータスを使用することを意味します。

restart が nil でない場合は、単に最後に終了するのではなく、現在実行中の Emacs プロセスと同じコマンドライン引数を用いて、新しい Emacs プロセスを起動してください。

kill-emacs 関数は通常、より上位のコマンドである C-x C-c (save-buffers-kill-terminal) を介して呼び出されます。The GNU Emacs Manual の Exiting を参照してください。また、Emacs が SIGTERM または SIGHUP のオペレーティングシステムシグナルを受信した場合(例:制御端末が切断された場合)、あるいはバッチモードで動作中に SIGINT シグナルを受信した場合(Batch Mode を参照)にも、自動的に呼び出されます。

変数: kill-emacs-hook

この通常のフックは、Emacsを終了させる前に kill-emacs によって実行されます。

kill-emacs はユーザー操作が不可能な状況(例:端末が切断されている場合)でも呼び出されるため、このフックの関数ではユーザーとの対話を試みるべきではありません。Emacs のシャットダウン時にユーザーと対話したい場合は、後述する kill-emacs-query-functions を使用してください。

Emacsを終了すると、保存済みのファイルを除き、Emacsプロセス内のすべての情報が失われます。誤ってEmacsを終了させると多くの作業内容が失われる可能性があるため、save-buffers-kill-terminalコマンドは、保存が必要なバッファや実行中のサブプロセスがあるかどうかの確認を求めます。また、異常フックkill-emacs-query-functionsも実行します:

ユーザーオプション: kill-emacs-query-functions

save-buffers-kill-terminal が Emacs を終了させる際、標準的な確認を行った後、kill-emacs を呼び出す前に、このフック内の関数を呼び出します。関数は出現順に、引数なしで呼び出されます。各関数はユーザーに追加の確認を求めることができます。いずれかの関数が nil を返した場合、save-buffers-kill-emacs は Emacs を終了させず、このフック内の残りの関数も実行しません。kill-emacs を直接呼び出しても、このフックは実行されません。

コマンド: restart-emacs

このコマンドは save-buffers-kill-emacs と同じ動作をしますが、最後に現在の Emacs プロセスを単に終了させるのではなく、現在実行中の Emacs プロセスと同じコマンドライン引数を用いて、新しい Emacs プロセスを再起動します。