Previous: Terminal-Specific, Up: Starting Up


37.1.4 コマンド行引数

Emacsを始動するときにコマンド行引数を使ってさまざまな動作を要求できます。 一日に一度より多くEmacsを始動する必要はないでしょうし、 しばしばEmacsセッションをそれより長く動かし続けるでしょうから、 コマンド行引数はほとんど使いません。 実際、コマンド行引数を使う癖は避けたほうがよいです。 そのような癖をつけると、Emacsを必要以上に終了したり再始動するからです。 これらのオプションは2つの理由で存在します。 (別のプログラムから起動される)他のエディタと互換性があるようにするのと、 シェルスクリプトから特定のLispプログラムを実行できるようにするためです。

本節では、Emacsがコマンド行引数を処理する方法と、 それらをカスタマイズする方法について述べます。

— Function: command-line

この関数は、Emacsを呼び出すときに指定されたコマンド行引数を解析して処理し、 ユーザーのファイル.emacsをロードし始動メッセージを表示する。

— Variable: command-line-processed

この変数の値は、コマンド行引数を一度処理し終えるとtである。

dump-emacsを呼んでEmacsを再ダンプするときには、 この変数にnilを設定すれば、 新たにダンプしたEmacsでコマンド行引数を処理するようにできる。

— Variable: command-switch-alist

この変数の値は、ユーザー定義のコマンド行オプションの連想リストである。 この変数は、読者が要素を追加できるように存在する。

コマンド行オプション(command line option)は、 つぎの形のコマンド行の引数である。

          -option

command-switch-alistの要素はつぎの形である。

          (option . handler-function)

handler-functionは、オプションoptionを処理するために呼ばれ、 オプション名を唯一の引数として受け取る。

コマンド行のオプションには引数が続く場合もある。 そのような場合、handler-functionは 変数command-line-args-leftからすべての残りのコマンド行引数を 調べることができる。 (コマンド行引数全体のリストはcommand-line-argsにある。)

コマンド行引数は、ファイルstartup.elの 関数command-line-1が解析する。 コマンド行引数も参照。

— Variable: command-line-args

この変数の値は、Emacsに渡されたコマンド行引数のリストである。

— Variable: command-line-functions

この変数の値は、認識できないコマンド行引数を処理する関数のリストである。 つぎに処理する引数に特別な意味がないと、 このリストの関数をnil以外の値を返すまで現れる順に呼び出す。

これらの関数は引数なしで呼び出される。 これらの関数では、呼び出し時に束縛される変数argiを介して 対象となるコマンド行引数を参照できる。 (いま対象となっている引数を除く)残りの引数は 変数command-line-args-leftにある。

関数がargiを認識して処理したときには、 その引数を処理したことを表すためにnil以外の値を返すこと。 後続の引数の一部も処理した場合には、 command-line-args-leftから それらを削除することで処理したことを示せる。

これらの関数すべてがnilを返すと、 訪問するファイル名として引数を用いる。