次: , 前: Using Interactive, 上: Defining Commands


20.2.2 interactiveのコード文字

以下に述べるコード文字の説明では、 つぎに定義するいくつかのキーワードを含みます。

「補完」
補完を使える。 completing-readを使って引数を読むため、 <TAB>、<SPC>、<RET>は名前を補完する (see Completion)。 ?は補完候補のリストを表示する。
「既存」
既存オブジェクトの名前を必要とする。 不正な名前は受け付けない。 現在の入力が正しくないとミニバッファから抜けるコマンドは動作しない。
「デフォルト」
ミニバッファにユーザーがなにもテキストを入力しないときに 使われるなんらかのデフォルト値。 デフォルトはコード文字に依存する。
「入出力なし」
このコード文字は、入力をまったく読まずに引数を計算する。 したがって、プロンプト文字列を使わず、 読者が指定したプロンプト文字列は無視する。

コード文字はプロンプト文字列を使わないが、 この文字が文字列の最後の文字でない場合には改行を続けること。

「プロンプト」
コード文字の直後にプロンプトが続く。 プロンプトは文字列の終りか改行で終る。
「スペシャル」
このコード文字は、対話指定文字列の先頭でのみ意味を持ち、 プロンプトや改行を必要としない。 これは1つの孤立した文字である。

以下に、interactiveに使うコード文字を説明します。

`*'
カレントバッファが読み出し専用であるとエラーを通知する。 「スペシャル」。
`@'
このコマンドを起動したキー列の最初のマウスイベントが表すウィンドウを選択する。 「スペシャル」。
`a'
関数名(つまり、fboundpを満たすシンボル)。 「既存」、「補完」、「プロンプト」。
`b'
既存バッファの名前。 デフォルトでは、カレントバッファ(see Buffers)の名前を使う。 「既存」、「補完」、「デフォルト」、「プロンプト」。
`B'
バッファ名。 バッファが既存である必要はない。 デフォルトでは、カレントバッファ以外の最近使ったバッファの名前を使う。 「補完」、「デフォルト」、「プロンプト」。
`c'
文字。 カーソルはエコー領域には移動しない。 「プロンプト」。
`C'
コマンド名(つまり、commandpを満たすシンボル)。 「既存」、「補完」、「プロンプト」。
`d'
整数としてのポイント位置(see Point)。 「入出力なし」。
`D'
ディレクトリ名。 デフォルトは、カレントバッファのカレントデフォルトディレクトリ default-directory(see System Environment)。 「既存」、「補完」、「デフォルト」、「プロンプト」。
`e'
コマンドを起動したキー列の最初やつぎのマウスイベント。 より正確には、`e'はリストであるイベントを取得するので、 読者はリスト内のデータを調べられる。 see Input Events。 「入出力なし」。

1つのコマンドの対話指定で複数回`e'を使える。 コマンドを起動したキー列がn個のリストであるイベントである場合、 n番目の`e'は、n番目のそのようなイベントを与える。 `e'では、 ファンクションキーやASCII文字などのリストでないイベントは数えない。

`f'
既存ファイルの名前(see File Names)。 デフォルトディレクトリはdefault-directory。 「既存」、「補完」、「デフォルト」、「プロンプト」。
`F'
ファイル名。 ファイルが既存である必要はない。 「補完」、「デフォルト」、「プロンプト」。
`i'
無関係な引数。 このコードは、引数の値につねにnilを与える。 「入出力なし」。
`k'
キー列(see Keymap Terminology)。 現在のキーマップにおいてコマンドがみつかる(あるいは未定義コマンド)まで イベントを読み続ける。 キー列引数は、文字列かベクトルとして表現される。 カーソルはエコー領域には移動しない。 「プロンプト」。

この種の入力は、describe-keyglobal-set-keyなどの コマンドで使われる。

`K'
キー列であり、読者がその定義を変更することを意図している。 これは`k'と同様に動作するが、 キー列の最後の入力イベントに対しては、 未定義キーを定義済みのものに変換するために(必要なときに)普通使われる 変換処理を抑制する。
`m'
整数としてのマーク位置。 「入出力なし」。
`M'
カレントバッファの入力方式を用いてミニバッファで読んだ任意のテキスト。 文字列として返す (see 入力方式)。 「プロンプト」。
`n'
ミニバッファで読んだ数。 入力が数でないと、ユーザーに再入力を促す。 もし前置引数があってもそれは使わない。 「プロンプト」。
`N'
数値前置引数。 前置引数がなければ、nで数を読む。 数を必要とする。 see Prefix Command Arguments。 「プロンプト」。
`p'
数値前置引数。 (この`p'は小文字。) 「入出力なし」。
`P'
生の前置引数。 (この`P'は大文字。) 「入出力なし」。
`r'
2つの数値引数としてのポイントとマーク。 小さいほうが先にくる。 これは、1つではなく2つの連続した引数を指定する唯一のコード文字。 「入出力なし」。
`s'
ミニバッファで読んだ任意のテキスト。 文字列として返す(see Text from Minibuffer)。 C-jか<RET>で入力を終える。 (これらの文字を入力に含めるにはC-qを使う。) 「プロンプト」。
`S'
ミニバッファで読んだ名前をインターンしたシンボル。 白文字で入力を終える。 (文字列に白文字を含めるにはC-qを使う。) (丸括弧や角括弧などの)通常はシンボルを終える他の文字は、 ここではシンボルを終端しない。 「プロンプト」。
`v'
ユーザーオプションと宣言された変数 (つまり、述語user-variable-pを満たす)。 see High-Level Completion。 「既存」、「補完」、「プロンプト」。
`x'
入力構文で表されたLispオブジェクト。 C-jか<RET>で終える。 オブジェクトは評価しない。 see Object from Minibuffer。 「プロンプト」。
`X'
xのようにLispフォームを読むが、評価しその値がコマンドの引数になる。 「プロンプト」。
`z'
コーディングシステム名(シンボル)。 ユーザーの入力が空であると、引数の値はnil。 see Coding Systems。 「補完」、「既存」、「プロンプト」。
`Z'
このコマンドに前置引数を指定した場合にのみ、 コーディングシステム名(シンボル)。 前置引数がないと、`Z'は引数の値にnilを与える。 「補完」、「既存」、「プロンプト」。