Next: , Previous: , Up: サーバーとしてのEmacsの使用   [Contents][Index]


40.2 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サーバーにfile1file2、...をvisitするよう指示します。Emacsはfile1をvisitしているバッファーを選択して、他のバッファーをバッファーリストの最後に隠します(複数バッファーの使用を参照してください)。指定されたすべてのファイルを終了したら(たとえば各サーバーバッファーでC-x #をタイプしたら)、emacsclientプログラムは終了します。

サーバーバッファーを終了すると、そのバッファーがサーバーバッファーを作成する前から存在していたバッファーでないかぎり、そのバッファーもkillされます。しかしserver-kill-new-buffersnilにセットした場合、別の基準が使用されます。この場合、サーバーバッファーの終了は、ファイル名が正規表現server-temp-file-regexpにマッチするときは、バッファーをkillします。これはある種の一時ファイルを区別するための仕組みです。

C-x #は、さまざまなファイルを編集する、保留されている外部要求が他にないかチェックして、次のそのようなファイルを選択します。サーバーバッファーに辿り着くのに、C-x #だけを使わなければならない訳ではありません。サーバーバッファーに手動で切り替えることもできます。しかしC-x #は、emacsclientに終了したことを告げる方法なのです。

変数server-windowの値をウィンドウやフレームにした場合、C-x #は常に次のサーバーバッファーを、そのウィンドウまたはそのフレームに表示します。

emacsclientが接続した際には、サーバーは通常はクライアントフレームのexit方法を告げるメッセージを出力します。server-client-instructionsnilにセットすると、このメッセージは抑制されます。