GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Prefix-Command-Arguments.html ・ emacs-doc.conao3.com

22.12 プレフィックスコマンド引数

ほとんどのEmacsコマンドでは、コマンド自体の前に指定する数値であるプレフィックス引数を使用できます。(プレフィックス引数とプレフィックスキーを混同しないでください。)プレフィックス引数は常に値で表され、その値はnilとなる場合があり、これは現在プレフィックス引数がないことを意味します。各コマンドは、プレフィックス引数を使用するか、あるいは無視することができます。

接頭辞引数には、rawとnumericの2つの表現形式があります。エディタのコマンドループは内部的にraw表現を使用しており、情報を格納するLisp変数も同様ですが、コマンドではどちらの表現形式も指定可能です。

生のプレフィックス引数が取り得る値は以下の通りです。

さまざまな接頭辞を付けて以下の関数を呼び出すことで、これらの可能性を例示します。

(defun display-prefix (arg)
  "Display the value of the raw prefix arg."
  (interactive "P")
  (message "%s" arg))

さまざまな生のプレフィックス引数を指定して 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      ; (Same as C-u 3.)

C-u -   M-x display-prefix  ⊣ -

M--     M-x display-prefix  ⊣ -      ; (Same as C-u -.)

C-u - 7 M-x display-prefix  ⊣ -7

M-- 7   M-x display-prefix  ⊣ -7     ; (Same as C-u -7.)

Emacsでは、プレフィックス引数を格納するためにprefix-argとcurrent-prefix-argという2つの変数を使用しています。universal-argumentのように他のコマンド用のプレフィックス引数を設定するコマンドは、それらをprefix-argに格納します。これに対し、current-prefix-argは現在のコマンドにプレフィックス引数を渡すため、これを設定しても後続のコマンドのプレフィックス引数には影響しません。

通常、コマンドは interactive の指定において、プレフィックス引数に数値表現と生表現のどちらを使用するかを指定します。(interactive の使用を参照してください。)あるいは、関数が変数 current-prefix-arg でプレフィックス引数の値を直接参照することもできますが、この方法はあまりすっきりしません。

関数: prefix-numeric-value arg

この関数は、有効な生の接頭辞引数の値 arg の数値的な意味を返します。引数にはシンボル、数値、またはリストを指定できます。nil の場合は値 1 が、- の場合は値 −1 が返されます。数値の場合はその数値が、リストの場合はそのリストの CAR(数値である必要があります)が返されます。

変数: current-prefix-arg

この変数には、現在のコマンドに対する生のプレフィックス引数が格納されています。コマンドはこれを直接参照することもできますが、通常のアクセス方法は (interactive "P") を用いることです。

変数: prefix-arg

この変数の値は、next 編集コマンドの生のプレフィックス引数です。universal-argument のように後続のコマンドにプレフィックス引数を指定するコマンドは、この変数を設定することで動作します。

変数: last-prefix-arg

直前のコマンドで使用された生のプレフィックス引数の値。

以下のコマンドは、後続のコマンドにプレフィックス引数を設定するためのものです。それ以外の目的で呼び出さないでください。

コマンド: universal-argument

このコマンドは入力を読み込み、後続のコマンドに対するプレフィックス引数を指定します。内容を十分に理解していない限り、このコマンドを自ら呼び出さないでください。

コマンド: digit-argument arg

このコマンドは、後続のコマンドのプレフィックス引数に値を追加します。引数 arg は、このコマンド実行前の生のプレフィックス引数であり、更新後のプレフィックス引数を算出するために使用されます。内容を十分に理解していない限り、このコマンドを自ら呼び出さないでください。

コマンド: negative-argument arg

このコマンドは、次のコマンドの数値引数に値を加算します。引数 arg は、このコマンド実行前の生のプレフィックス引数であり、その値を反転させることで新しいプレフィックス引数が生成されます。内容を十分に理解していない限り、このコマンドを自ら呼び出さないでください。