Go to the first, previous, next, last section, table of contents.

他のウィンドウですでに動いている Emacs を使う方法はありますか?

`emacsclient' プログラムを使うと 新しく Emacs を起動しないでも すでに動いている Emacs を使って編集することができます. このために Emacs を `server-start' 関数を使って すでに動いている Emacs に対して接続の要求を出して起動します. このためにはコマンドラインから

  emacs -f server-start

と実行するか, または .emacs ファイルで server-start 関数を実行します:

  (if (some conditions are met) (server-start))

このようにして Emacs を起動すると, Emacs は `server' というサブプロセスを起動します. `server' は Unix ドメインのソケットをユーザのホーム・ディレクトリに `.emacs_server' という名前で生成します.

ここで emacsclient を起動すると, このソケットに接続し, コマンド・ラインオプションを `server' に渡します. emacsclient と server は同じファイルシステムを共有しているマシン上で 走らせる必要があります. emacsclient が指定するパス名は Emacs プロセスが走っているマシンで 正しくなくてはなりません. emacsclient の走っているマシン上で同じである必要はありません.

`server' がこれらの要求を受けると, Emacs のプロセスの情報を送り, 次の機会に指定されたファイルを開きます. (Emacs のように行数を指定することができます.) "C-x #" とタイプすると ファイルの編集が終わったことをサーバに伝えます. このとき emacsclient の要求があったときに生成されたバッファに切り替わります. emacsclient が編集していたすべてのファイルが "C-x #" によって閉じられると, Emacs は `server' を終了させます.

gnuserv という emacsclient/server の拡張版が Andy Norman <ange@hplb.hpl.hp.com> によって作成され Emacs Lisp アーカイブから入手できます. gnuserv は Internet ドメインのソケットを使っているので, ネットワーク経由でも接続できます. 任意の Emacs Lisp 式の実行に対応していますが, ファイルを開くことはできません. anonymous FTP でも入手できます (Emacs Lisp Archive: packages/gnuserv.shar).


Go to the first, previous, next, last section, table of contents.