ほとんどのEmacsコマンドはプレフィクス引数(prefix
argument)を使用できます。プレフィクス引数はコマンド自身の前に数字を指定するものです(プレフィクス引数とプレフィクスキーを混同しないこと)。プレフィクス引数は常に値により表され、nil
のときはカレントでプレフィクス引数が存在しないことを意味します。すべてのコマンドはプレフィクス引数を使用するか、あるいは無視します。
プレフィクス引数には2つの表現があります。それはraw(生の、加工していない、原料のままの、未加工の)と数字(numeric)です。エディターコマンドループは内部的にraw表現を使用し、Lisp変数もその情報を格納するのにこれを使用しますが、コマンドはいずれかの表現を要求できます。
以下は利用できるrawプレフィクス引数の値です:
nil
はプレフィクス引数がないことを意味する。これの数値的な値は1だが多くのコマンドはnil
と整数1を区別する。
-
。これは後に数字をともなわないM--かC-u
-がタイプされたことを示す。数値的に等価な値は-1だが、整数の-1をシンボルの-
を区別するコマンドがいくつかある。
以下の関数をさまざまなプレフィクスで呼び出して、これらの可能なプレフィクスを説明しましょう:
(defun display-prefix (arg) "rawプレフィクス引数の値を表示する" (interactive "P") (message "%s" arg))
以下はさまざまなrawプレフィクス引数でdisplay-prefix
を呼び出した結果です:
M-x display-prefix -| nil C-u M-x display-prefix -| (4) C-u C-u M-x display-prefix -| (16) C-u 3 M-x display-prefix -| 3 M-3 M-x display-prefix -| 3 ; (C-u 3
と同じ) C-u - M-x display-prefix -| - M-- M-x display-prefix -| - ; (C-u -
と同じ) C-u - 7 M-x display-prefix -| -7 M-- 7 M-x display-prefix -| -7 ; (C-u -7
と同じ)
Emacsにはプレフィクス引数を格納するために2つの変数prefix-arg
とcurrent-prefix-arg
があります。他のコマンドにたいしてプレフィクス引数をセットアップするuniversal-argument
のようなコマンドは、プレフィクス引数をprefix-arg
内に格納します。対照的にcurrent-prefix-arg
はカレントコマンドにプレフィクス引数を引き渡すので、これらの変数をセットしても将来のコマンドにたいするプレフィクス引数に効果はありません。
コマンドは通常はinteractive
内で、プレフィクス引数にたいしてrawと数値のどちらの表現を使用するかを指定します(interactive
の使用を参照)。そのかわりに関数は変数current-prefix-arg
内のプレフィクス引数の値を直接調べるかもしれませんが、これは明確さで劣っています。
この関数はargの有効なrawプレフィクス引数の数値的な意味をリターンする。引数はシンボル、数字、またはリストかもしれない。これがnil
なら値1、-
なら-1がリターンされる。これが数字なら、その数字がリターンされる。リスト(数字であること)なら、そのリストのCARがリターンされる。
この変数はカレントのコマンドにたいするrawプレフィクス引数を保持する。コマンドはこの変数を直接調べるかもしれないが、この変数にたいするアクセスには通常は(interactive
"P")
を使用する。
この変数の値は次の編集コマンドにたいするrawプレフィクス引数である。後続のコマンドにたいしてプレフィクス引数を指定するuniversal-argument
のようなコマンドは、この変数をセットすることによって機能する。
このrawプレフィクス引数の値は、前のコマンドにより使用された値である。
以下のコマンドは、後続のコマンドにたいしてプレフィクス引数をセットアップするために存在します。これらを他の用途で呼び出さないでください。
このコマンドは入力を読み取って、後続のコマンドにたいするプレフィクス引数を指定する。何をしているかわかっているのでなければ、このコマンドを自分で呼び出してはならない。
このコマンドは、後続のコマンドにたいしてプレフィクス引数を追加する。引数argはこのコマンドの前のrawプレフィクス引数であり、これはプレフィクス引数を更新するために使用される。何をしているかわかっているのでなければ、このコマンドを自分で呼び出してはならない。
このコマンドは、次のコマンドにたいして数引数を追加する。引数argはこのコマンドの前のrawプレフィクス引数であり、この値に負の符号が付されて新しいプレフィクス引数を構築する。何をしているかわかっているのでなければ、このコマンドを自分で呼び出してはならない。