emacs 経由でファイルにアクセスする場合と emacsclient 経由でファイルにアクセスする場合の違いは何ですか?

emacs 経由でファイルにアクセスする場合と emacsclient 経由でファイルにアクセスする場合の違いは何ですか?

私が質問する理由は、Thunderbird 外部エディター拡張機能 (エディターは として指定) を使用する場合を除いて、ほとんどの点で似ているように見えるからです。この emacsclient インスタンスで作成されたフレームを(が機能しない場合もあります)emacsclient -cで閉じると、このフレームに関連付けられたバッファーも強制終了されます (通常の emacsclient の動作ではありません)。C-x C-cC-x #

そして、一般的には、C-x C-cそのフレーム内で別のバッファにアクセスしない限り、フレームを閉じるだけです。その後、C-x C-cemacs 全体を閉じようとします。この動作をどう理解すればよいでしょうか?

答え1

Emacs では、Ch k を押して、知りたいキーの組み合わせを入力すると、任意のキーのヘルプを取得できます。Ch k Cx # を押すと、次の結果が返されます。

Cx # は、`server.el' 内の対話型コンパイル済み Lisp 関数であるコマンド server-edit を実行します。

Cx # にバインドされています。

(サーバー編集 &optional ARG)

次のサーバー編集バッファに切り替え、現在のバッファに対して「完了」と表示します。サーバー バッファが現在のものである場合、「完了」としてマークされ、オプションで保存されます。クライアントが要求する前にバッファが存在しなかった場合は、バッファも削除されます。クライアントのすべてのバッファが「完了」としてマークされると、クライアントに通知されます。

MH ファイルなどの一時ファイルは、質問されることなく常に保存され、バックアップされます。(変数 'make-backup-files' が nil の場合、バックアップは禁止されます。特定のバッファーでローカルに設定して、そのバッファーのバックアップを禁止することができます。) 変数 'server-temp-file-regexp' は、どのファイル名が一時的であるかを制御します。

プレフィックス引数付きで呼び出された場合、またはサーバー プロセスが実行されていない場合は、サーバー プロセスを起動するだけで済みます。Cx # によって呼び出されます。Cx # は、'server.el' 内の対話型コンパイル済み Lisp 関数であるコマンド server-edit を実行します。

Cx Ccも同様

Cx Cc は、`files.el' 内の対話型コンパイル済み Lisp 関数であるコマンド save-buffers-kill-terminal を実行します。

Cx Cc, にバインドされています。

(save-buffers-kill-terminal &optional ARG)

各バッファを保存することを提案し、現在の接続を終了します。現在のフレームにクライアントがいない場合は、Emacs 自体を終了します。

プレフィックス ARG を使用すると、すべてのファイル参照バッファを暗黙的に保存してから強制終了します。

emacsclient が編集するファイル名のリストとともに起動された場合、これらのファイルのみを保存するように求められます。

関連情報