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にセットすると、このメッセージは抑制されます。