Next: , Previous: , Up: The Emacs Editor   [Contents][Index]


41 サーバーとしてのEmacsの使用

さまざまなプログラムが、特定のテキスト断片を編集するために、あなたが選択したエディターを呼び出すことができます。たとえば、バージョンコントロールシステム(バージョンコントロールを参照してください)は、バージョンコントロールログを入力するためのエディターを呼び出し、Unixのmailユーティリティーは送信メッセージの入力にエディターを呼び出します。慣例により、選択するエディターは、環境変数EDITORで指定されます。しかしEDITORを‘emacs’にセットした場合、Emacsが呼び出されますが、これは便利な方法ではありません — なぜなら新しいEmacsプロセスが開始されるからです。なぜこれが不便かというと、新たなEmacsプロセスは、既存のEmacsプロセスのバッファー、コマンドヒストリー、その他の情報を共有しないからです。

Emacsをedit server(編集サーバー)としてセットアップして、Emacsが外部からの編集リクエストを“listen”し、それに応じて動作させることにより、この問題を解決できます。Emacsサーバーを開始するにはさまざまな方法があります:

Emacsサーバーを一度開始すると、emacsclientというシェルコマンドを使用してEmacsに接続して、ファイルをvisitするよう指示できます。環境変数EDITORに‘emacsclient’をセットすれば、外部プログラムは編集のために既存のEmacsプロセスを使用できます。23

変数server-nameを使って、一意なサーバー名を与えることにより、同一マシン上で複数のEmacsサーバーを実行することができます。たとえばM-x set-variable RET server-name RET "foo" RETは、サーバー名を‘foo’にセットします。emacsclientプログラムはTCPソケット使用の有無に応じて‘-s’オプション、または‘-f’オプション(emacsclientのオプションを参照)で、名前によりサーバーを指定できます(emacsclientのオプションを参照)。

複数のEmacsデーモン(初期化オプションを参照)を実行したい場合には、以下のようにデーモンごとにそれぞれ独自のサーバー名を与えることができます:

  emacs --daemon=foo

The Emacs server can optionally be stopped automatically when certain conditions are met. To do this, set the option server-stop-automatically to one of the following values:

empty

This value causes the server to be stopped when it has no clients, no unsaved file-visiting buffers and no running processes anymore.

delete-frame

This value means that when the last client frame is being closed, you are asked whether each unsaved file-visiting buffer must be saved and each unfinished process can be stopped, and if so, the server is stopped.

kill-terminal

This value means that when the last client frame is being closed with C-x C-c (save-buffers-kill-terminal), you are asked whether each unsaved file-visiting buffer must be saved and each unfinished process can be stopped, and if so, the server is stopped.

一意なサーバー名によりサーバーを定義した場合、他のEmacsインスタンスからそのサーバーに接続し、server-eval-at関数を使用して、そのサーバーでLisp式を評価できます。たとえば(server-eval-at "foo" '(+ 1 2))は、式(+ 1 2)をサーバー‘foo’で評価して、3を返します(そのような名前のサーバーが存在しない場合はエラーをシグナルします)。現在のところ、これは主に開発者に有用な機能です。

オペレーティングシステムのデスクトップ環境がfreedesktop.org-compatible (これはほとんどのGNU/Linuxやその他の最近のUnix風GUIが該当する)なら、emacsclientでEmacsサーバーに接続するために‘Emacs (Client)’メニューエントリーを使用できます。デーモンがすでに実行中でなければ開始されます。


Footnotes

(23)

別の環境変数を使うプログラムもいくつかあります。たとえば、TeXが‘emacsclient’を使うようにするには、環境変数TEXEDITを‘emacsclient +%d %s’にセットします。


Next: ハードコピーの印刷, Previous: Emacsからのシェルコマンドの実行, Up: The Emacs Editor   [Contents][Index]

This page has generated for branch:master, commit:762705fb24fd90db318f2e51c1e762452d26f7e2 to check Japanese translation.