Next: emacsclient
のオプション, Previous: TCP Emacs server, Up: サーバーとしてのEmacsの使用 [Contents][Index]
emacsclient
の呼び出しemacsclient
プログラムを使う一番簡単な方法は、シェルコマンド‘emacsclient
file’を実行する方法です。ここでfileはファイル名です。これはEmacsサーバーに接続して、Emacsプロセスの既存のフレームの1つ
— グラフィカルなフレーム、またはテキスト端末のフレーム(フレームとグラフィカルなディスプレイを参照してください) —
でfileをvisitするよう指示します。それから、そのフレームを選択して編集を開始できます。
Emacsサーバーが存在しない場合、emacsclient
はエラーメッセージと共に終了します(このハプニングによるエラー終了は、emacsclient
にたいして‘--alternate-editor=\"\"’オプションを使用して回避できる。emacsclient
のオプションを参照されたい)。Emacsプロセスに既存のフレームがない場合 — これはサーバーがデーモン(サーバーとしてのEmacsの使用を参照してください)として開始されたときに発生し得ます —
は、emacsclient
を呼び出した端末でEmacsフレームをオープンします。
オプション‘-c’でグラフィカルなディスプレイ、‘-t’を使用しテキスト端末で新しいフレームを開くように、emacsclient
に強制することもできます。emacsclient
のオプションを参照してください。
単一のテキスト端末で実行している場合、emacsclient
のシェルとEmacsサーバーを、次の2つの方法で切り替えることができます。1つ目は、Emacsサーバーと、別の仮想端末でemacsclient
を実行して、emacsclient
を呼び出した後にEmacsサーバーの仮想端末に切り替える方法です。2つ目は、Emacsサーバー自身からShellモード(対話的なサブシェルを参照してください)、またはTermモード(Termモードを参照してください)を使ってemacsclient
を呼び出す方法です。emacsclient
は、Emacs配下のサブシェルのときだけブロックするので、依然としてファイルの編集にEmacsを使用できます。
Emacsサーバーでfileの編集を終えたら、そのバッファーでC-x #
(server-edit
)とタイプします。これはファイルを保存して、emacsclient
プログラムに終了を告げるメッセージを送り返します。通常、EDITOR
を使うプログラムは、何か他のことを行なう前にエディター
— この場合はemacsclient
— の終了を待ちます。
かわりに編集をキャンセルしたければ、M-x server-edit-abortコマンドを使用します。これはemacsclient
プログラムにメッセージを送り返して、バッファーを何も保存せずにabnormalなexitステータスでexitするよう指示します。
複数のファイル名を引数にしてemacsclient
を呼び出すこともできます。‘emacsclient
file1 file2
...’は、Emacsサーバーにfile1、file2、...をvisitするよう指示します。Emacsはfile1をvisitしているバッファーを選択して、他のバッファーをバッファーリストの最後に隠します(複数バッファーの使用を参照してください)。指定されたすべてのファイルを終了したら(たとえば各サーバーバッファーでC-x
#をタイプしたら)、emacsclient
プログラムは終了します。
サーバーバッファーを終了すると、そのバッファーがサーバーバッファーを作成する前から存在していたバッファーでないかぎり、そのバッファーもkillされます。しかしserver-kill-new-buffers
をnil
にセットした場合、別の基準が使用されます。この場合、サーバーバッファーの終了は、ファイル名が正規表現server-temp-file-regexp
にマッチするときは、バッファーをkillします。これはある種の一時ファイルを区別するための仕組みです。
各C-x
#は、さまざまなファイルを編集する、保留されている外部要求が他にないかチェックして、次のそのようなファイルを選択します。サーバーバッファーに辿り着くのに、C-x
#だけを使わなければならない訳ではありません。サーバーバッファーに手動で切り替えることもできます。しかしC-x
#は、emacsclient
に終了したことを告げる方法なのです。
変数server-window
の値をウィンドウやフレームにした場合、C-x
#は常に次のサーバーバッファーを、そのウィンドウまたはそのフレームに表示します。
emacsclient
が接続した際には、サーバーは通常はクライアントフレームのexit方法を告げるメッセージを出力します。server-client-instructions
をnil
にセットすると、このメッセージは抑制されます。