emacsclient オプション ¶emacsclient プログラムには、以下のようなオプション引数を渡すことができます。
emacsclient -c +12 file1 +4:3 file2
‘+line’ または ‘+line:column’ 引数は、次のファイル引数に対する行番号、あるいは行番号と列番号を指定します。これらは Emacs 本体のコマンドライン引数と同様に動作します。アクション引数を参照してください。
emacsclient が認識するその他のオプション引数を以下に示します。
emacsclient が Emacs
への接続に失敗した場合に実行するシェルコマンドを指定します。これは、スクリプト内で emacsclient
を実行する際に便利です。コマンドには引数を含めることができ、それらは"このように"クォートで囲むことができます。現在、クォートのエスケープはサポートされていません。
特例として、command が空文字列の場合、emacsclient は Emacs をデーモンモード(‘emacs --daemon’)で起動し、その後改めて接続を試みます。
環境変数 ALTERNATE_EDITOR は、‘-a’ オプションと同じ効果を持ちます。両方が指定されている場合は、後者が優先されます。
既存のEmacsフレームを使用するのではなく、新しいグラフィカルなクライアントフレームを作成してください。クライアントフレームにおけるC-x C-cの特殊な動作については、以下を参照してください。Emacsが新しいグラフィカルフレームを作成できない場合(例:Xサーバーに接続できない場合)、代わりに‘-t’オプションを指定したときと同様に、テキストターミナルのクライアントフレームの作成を試みます。
MS-Windowsでは、単一のEmacsセッションでグラフィカル端末とテキスト端末の両方、あるいは複数のテキスト端末にフレームを表示することはできません。したがって、Emacsサーバーがテキスト端末で動作している場合、‘-c’オプションは‘-t’オプションと同様に、サーバーの現在のテキスト端末に新しいフレームを作成します。MS-WindowsでEmacsを起動する方法を参照してください。
‘-c’オプションを指定する際にファイル名引数を省略すると、新しいフレームにはデフォルトで*scratch*バッファが表示されます。この動作は変数initial-buffer-choiceでカスタマイズできます(Emacsへの起動を参照してください)。
新しいグラフィカルクライアントフレームが存在しない場合は新規に作成し、存在する場合は既存のEmacsフレームを使用する。
新規に作成したグラフィカルフレームのパラメータを設定します(フレームパラメータを参照)。
Emacsに、指定されたファイルをXディスプレイ display で開くよう指示します(利用可能なXディスプレイが複数ある場合)。
Tell Emacs to evaluate some Emacs Lisp code, instead of visiting some
files. When this option is given, the arguments to emacsclient are interpreted as a list of expressions
to evaluate, not as a list of files to visit.
複雑なLisp式を--evalコマンドラインオプション経由で渡す際、シェルにとって特殊な文字に対して煩雑なエスケープ処理が必要になることがあります。これを避けるには、式内のLisp関数への引数をemacsclientへの追加の個別引数として渡し、式内でserver-eval-args-leftを使用してそれらの引数にアクセスする方法があります。emacsclientに空文字列の引数が渡された場合、それらも含まれます。コードの成否にかかわらず、例えばpopを使用するなどして、式内でserver-eval-args-leftから処理済みの引数を取り除くよう注意してください。そうしないと、Emacsはそれらの引数を個別のLisp式として評価しようとします。
TCP経由でEmacsサーバーに接続するためのサーバーファイル(TCP Emacsサーバーを参照)を指定してください。あるいは、環境変数 EMACS_SERVER_FILE
を設定してサーバーファイルを指定することもできます。(コマンドラインオプションは環境変数よりも優先されます。)
Emacsサーバーは通常、ローカルソケットを使用して接続を待ち受けますが、TCP経由の接続にも対応しています。TCP
Emacsサーバーに接続するには、emacsclientがEmacsサーバーの接続詳細を含むサーバーファイルを読み込む必要があります。このファイルの名前は、~/.emacs.d/serverからの相対パスまたは絶対パスとして、このオプションで指定します。TCP Emacsサーバーを参照してください。
すべてのサーバーバッファが処理し終わるのを待つのではなく、emacsclient
で即座に終了させることができます。Emacs 内でサーバーバッファを編集する時間はいくらでもかけて構いませんし、その中で C-x # と入力してもバッファが終了することはありません。
N秒間Emacsからの応答を待ち、その後断念します。その時間内に応答がない場合、emacsclientは警告を表示して終了します。デフォルトは‘0’で、これは無期限に待機することを意味します。
XEmbedプロトコルを用いて、ID id の親Xウィンドウ内に、emacsclient
フレームをクライアントフレームとして開きます。現在、このオプションは主に開発者にとって有用です。
emacsclient に、Emacs
の待機中やリモートサーバーソケットへの接続中といったメッセージを表示させないようにしてください。
emacsclient
にサーバーから返された結果を表示させないでください。主に、結果ではなく副作用を判定する場合に ‘-e’ と組み合わせて有用です。
server-name という名前の Emacs サーバーに接続します。(このオプションは
MS-Windows ではサポートされていません。)サーバー名は、Emacs サーバー上の変数 server-name で指定されます。このオプションを省略した場合、emacsclient はデフォルトのソケットに接続します。Emacs サーバーの server-name に絶対ファイル名を設定した場合は、server-name に同じ絶対ファイル名を指定してこのオプションに渡し、emacsclient にそのサーバーへ接続するよう指示してください。Emacs
をデーモンとして起動し(初期オプション
を参照)、デーモンが起動するサーバー名を指定した場合は、このオプションを使用する必要があります。
あるいは、環境変数 EMACS_SOCKET_NAME
をサーバーソケットを指すように設定することもできます。(コマンドラインオプションが環境変数よりも優先されます。)
既存のEmacsフレームを使用する代わりに、現在のテキストターミナル上に新しいクライアントフレームを作成します。これは、前述の‘-c’オプションと同様に動作しますが、テキストターミナルフレーム(テキストターミナルを参照)を作成する点が異なります。
MS-Windowsでは、Emacsサーバーがグラフィカルディスプレイを使用している場合、‘-t’は‘-c’と同様に動作しますが、Emacsサーバーがテキストターミナル上で動作している場合は、現在のテキストターミナルに新しいフレームを作成します。
TRAMP(The Tramp ManualのThe
Tramp
Manualを参照)を用いて、Emacsがリモートマシン上のファイルを特定できるよう、ファイル名に付加するプレフィックスを設定してください(Remote
Filesを参照)。これは、主にリモートホストからEmacsサーバーを利用する場合に有用です。リッスンソケットをssh-forwardするか、またはリッスンポートをssh-forwardし(TCP Emacs
serverを参照)、リモートマシン上でserver-fileを利用可能にすることで、リモートマシン上のプログラムはEDITORや同様の環境変数の値としてemacsclientを使用できるようになります。ただし、リモートマシン上のEmacsサーバーと通信する代わりに、TRAMPを用いてローカルのEmacsセッションでファイルにアクセスすることになります。
環境変数 EMACSCLIENT_TRAMP を設定することは、‘-T’
オプションを使用することと同じ効果があります。両方を指定した場合は、コマンドラインオプションが優先されます。
例えば、‘local’と‘remote’という2台のホストがあるとします。
local$ ssh -R "/home/%r/.emacs.socket":"${XDG_RUNTIME_DIR:-${TMPDIR:-/tmp}/emacs%i}${XDG_RUNTIME_DIR:+/emacs}/server" remote
remote$ export EMACS_SOCKET_NAME=$HOME/.emacs.socket
remote$ export EMACSCLIENT_TRAMP=/ssh:remote:
remote$ export EDITOR=emacsclient
remote$ $EDITOR /tmp/foo.txt #Should open in local emacs.
emacsclient が Unix
ドメインソケットを使用していないプラットフォーム(すなわち MS-Windows)を利用している場合や、SSH
実装がそれらをフォワードできない場合(例:バージョン 6.7 より前の OpenSSH)は、代わりに TCP
ポートをフォワードできます。この例では、ローカルの Emacs が TCP ポート 12345 で待ち受けていると想定します。さらに、/home が共有ファイルシステム上にあり、サーバーファイル ~/.emacs.d/server/server が両方のホストで読み取り可能であると想定します。
local$ ssh -R12345:localhost:12345 remote remote$ export EMACS_SERVER_FILE=server remote$ export EMACSCLIENT_TRAMP=/ssh:remote: remote$ export EDITOR=emacsclient remote$ $EDITOR /tmp/foo.txt #Should open in local emacs.
印刷バージョン情報を表示して終了します。
使用状況情報を出力して終了する。
‘-c’ または ‘-t’ オプションによって作成される新しいグラフィカルまたはテキストターミナルフレームは、クライアントフレームとみなされます。クライアントフレームから作成される新しいフレームも、同様にクライアントフレームとみなされます。クライアントフレーム内で
C-x C-c (save-buffers-kill-terminal)
と入力した場合、そのコマンドは通常のようにEmacsセッションを終了させません(Emacsの終了を参照)。代わりに、Emacsはクライアントフレームを削除します。さらに、クライアントフレームに制御権の奪還を待っている
emacsclient がある場合(すなわち、‘-n’
オプションを指定しなかった場合)、Emacsは同じクライアントに属する他のすべてのフレームを削除し、あたかもすべてのフレームで C-x #
を入力したかのように、クライアントのサーバーバッファを終了済みとしてマークします。クライアントフレームが削除された後に残りのフレームが存在しない場合、Emacsセッションは終了します。
例外として、Emacsをデーモンとして起動した場合、すべてのフレームがクライアントフレームとみなされ、C-x C-c でEmacsを終了させることはできません。デーモンセッションを終了するには、M-x kill-emacs と入力してください。
なお、‘-t’と‘-n’のオプションは矛盾しています。‘-t’は現在のテキストターミナルの制御権を取得して新しいクライアントフレームを作成するよう指示する一方、‘-n’はテキストターミナルの制御権を取得しないよう指示します。両方のオプションを指定した場合、Emacsは新しいクライアントフレームではなく、既存のフレーム内で指定されたファイルを参照するため、‘-t’の効果が打ち消されます。