Emacsの起動時にコマンドライン引数を使用して、さまざまな操作を要求できます。なお、Emacsの推奨される使い方は、ログイン後に一度だけ起動し、すべての編集を同一のEmacsセッション内で行うことです(The GNU Emacs ManualのEntering Emacsを参照してください)。このため、コマンドライン引数をあまり頻繁に使用することはないかもしれませんが、セッションスクリプトからEmacsを呼び出す場合や、Emacsのデバッグを行う際には有用です。本節では、Emacsがコマンドライン引数をどのように処理するかについて説明します。
この関数は、Emacsの起動時に指定されたコマンドラインを解析・処理し、(その他の処理と併せて)ユーザーのinitファイルを読み込んで起動メッセージを表示します。
コマンドラインの処理が完了すると、この変数の値は t になります。
dump-emacs-portable を呼び出して Emacs を再ダンプする場合(Building Emacs を参照)、ダンプされた新しい
Emacs が新しいコマンドライン引数を処理できるように、あらかじめこの変数を nil
に設定しておくとよいでしょう。
この変数は、ユーザー定義のコマンドラインオプションとそれに関連付けられたハンドラ関数のalistです。デフォルトでは空ですが、必要に応じて要素を追加できます。
コマンドラインオプションとは、コマンドライン上の引数であり、次のような形式をとります:
-option
command-switch-alistの要素は次のようになります。
(option . handler-function)
CAR, option は文字列であり、コマンドラインオプションの名前(先頭のハイフンを含む)です。handler-function は option を処理するために呼び出され、オプション名を唯一の引数として受け取ります。
場合によっては、コマンドラインにおいてオプションの後に引数が続きます。このような場合、handler-function は残りのすべてのコマンドライン引数を変数 command-line-args-left で取得できます(後述)。(コマンドライン引数の全リストは
command-line-args に含まれます。)
なお、command-switch-alist の処理では、option 内の等号を特別に扱うことはありません。つまり、コマンドラインに --name=value のようなオプションがある場合、car が文字通り --name=value である
command-switch-alist
メンバのみがこのオプションに一致します。このようなオプションをパースしたい場合は、代わりに command-line-functions を使用する必要があります(後述)。
コマンドライン引数は、startup.el ファイル内の command-line-1 関数によって解析されます。また、The
GNU Emacs Manual の Command
Line Arguments for Emacs Invocation も参照してください。
この変数の値は、Emacsに渡されたコマンドライン引数のリストです。
この変数の値は、まだ処理されていないコマンドライン引数のリストです。
この変数の値は、認識されないコマンドライン引数を処理するための関数リストです。処理対象となる次の引数に特別な意味がない場合、このリスト内の関数が、いずれかが非nil値を返すまで、出現順に呼び出されます。
これらの関数は引数なしで呼び出されます。この時点で一時的にバインドされる変数 argi
を通じて、対象のコマンドライン引数にアクセスできます。残りの引数(現在の引数を除く)は、変数 command-line-args-left に格納されます。
関数が argi 内の引数を認識して処理した際は、その引数を処理したことを示すために、nil 以外の値を返す必要があります。また、以下の引数の一部も処理した場合は、それらを command-line-args-left から削除することでその旨を示すことができます。
これらの関数がすべて nil を返す場合、その引数はアクセス対象のファイル名として扱われます。