Previous: , Up: Emacsのスタートアップ   [Contents][Index]


41.1.4 コマンドライン引数

Emacs開始時に種々のアクションをリクエストするためにコマンドライン引数を使用できます。Emacsを使う際にはログイン後に一度だけ起動して同一のEmacsセッション内ですべてを行うのが推奨される方法です(Entering Emacs in The GNU Emacs Manualを参照)。この理由によりコマンドライン引数を頻繁に使うことはないかもしれません。それでもセッションスクリプトからEmacsを呼び出すときやEmacsのデバッグ時にコマンドライン引数が有用になるかもしれません。このセクションではEmacsがコマンドライン引数を処理する方法を説明します。

Function: command-line

この関数はEmacsが呼び出された際のコマンドライン引数を解析、処理、そして(とりわけ)ユーザーのinitファイルをロードしてスタートアップメッセージを表示する。

Variable: command-line-processed

この変数の値は一度コマンドラインが処理されるとtになる。

dump-emacs (Emacsのビルドを参照)を呼び出すことによりEmacsを再dumpする場合には、新たにdumpされたEmacsに新たなコマンドライン引数を処理させるために最初にこの変数にnilをセットしたいと思うかもしれない。

Variable: command-switch-alist

この変数はユーザー定義のコマンドライン引数とそれに関連付けられたハンドラー関数のalist。デフォルトでは空だが望むなら要素を追加できる。

コマンドラインオプション(command-line option)は以下の形式をもつコマンドライン上の引数である:

-option

command-switch-alistの要素は以下のようになる:

(option . handler-function)

CARoptionは文字列でコマンドラインオプションの名前(先頭のハイフンは含む)。handler-functionoptionを処理するために呼び出されて、単一の引数としてオプション名を受け取る。

このオプションはコマンドライン内で引数を併う場合がある。この場合には、handler-functionは残りのコマンドライン引数すべてを変数command-line-args-left (以下参照)で見つけることができる(コマンドライン引数のリスト全体はcommand-line-args)。

command-switch-alistの処理はoption内の等号を特別扱いしないことに注意。つまりコマンドラインに--name=valueのようなオプションがなければ、carが文字通り--name=valuecommand-switch-alistのメンバーでなければこのオプションにマッチしない。そのようなオプションをパースしたければ、かわりにcommand-line-functions (以下参照)を使う必要がある。

コマンドライン引数はstartup.elファイル内のcommand-line-1により解析される。Command Line Arguments for Emacs Invocation in The GNU Emacs Manualも参照のこと。

Variable: command-line-args

この変数の値はEmacsに渡されたコマンドライン引数のリスト。

Variable: command-line-args-left

この変数の値はまだ処理されていないコマンドライン引数のリスト。

Variable: command-line-functions

この変数の値は認識されなかったコマンドライン引数を処理するための関数のリスト。次の引数が処理されてそれに特別な意味がないときは、その都度このリスト内の関数が非nilをリターンするまでリスト内での出現順に呼び出される。

これらの関数は引数なしで呼び出される。関数はその時点で一時的にバインドされている変数argiを通じて検討中のコマンドラインにアクセスできる。残りの引数(カレントの引数含まず)は変数command-line-args-left内にあり。

関数がargi内のその引数を認識して処理したときは引数を処理したと告げるために非nilをリターンすること。後続の引数のいくつかを処理したときはcommand-line-args-leftからそれらを削除してそれを示すことができる。

これらの関数すべてがnilをリターンした場合には引数はvisitすべきファイル名として扱われる。