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

51.2.1 変数の確認と設定

C-h v var RET

変数 var (describe-variable) の値とドキュメントを表示します。

M-x set-variable RET var RET value RET

変数varの値をvalueに変更してください。

変数の値を確認するには、C-h v (describe-variable) を使用します。これにより、ミニバッファを用いて補完機能付きで変数名が読み込まれ、その変数の値とドキュメントの両方が表示されます。例えば、

C-h v fill-column RET

次のような表示になります:

fill-column is a variable defined in ‘C source code’.
Its value is 70

  Automatically becomes buffer-local when set.
  This variable is safe as a file local variable if its value
  satisfies the predicate ‘integerp’.
  Probably introduced at or before Emacs version 18.

Documentation:
Column beyond which automatic line-wrapping should happen.
Interactively, you can set the buffer local value using C-x f.

You can customize this variable.

「You can customize the variable」と記述された行は、この変数がユーザーオプションであることを示しています。C-h vはユーザーオプションに限定されず、カスタマイズ不可能な変数も指定可能です。

特定のカスタマイズ可能な変数を設定する最も便利な方法は、M-x set-variable を使用することです。これにより、ミニバッファ(補完機能付き)で変数名が読み込まれ、次に再度ミニバッファを使用して新しい値となる Lisp 式が読み込まれます(M-n を使えば、編集用に古い値をミニバッファに挿入できます)。例えば、

M-x set-variable RET fill-column RET 75 RET

fill-column を 75 に設定します。

M-x set-variable はカスタマイズ可能な変数に限定されていますが、次のような Lisp 式を用いて任意の変数を設定できます:

(setq fill-column 75)

このような式を実行するには、M-: (eval-expression) と入力し、ミニバッファに式を入力してください(Emacs Lisp式の評価を参照)。あるいは、*scratch* バッファに移動して式を入力し、その後 C-j と入力してください(Lispインタラクションバッファを参照)。

特に断りのない限り、Emacsをカスタマイズするあらゆる手段と同様に、変数の設定は現在のEmacsセッションにのみ影響します。今後のセッションで変数を変更する唯一の方法は、初期化ファイルに記述することです(Emacs初期化ファイルを参照してください)。

カスタマイズ可能な変数を設定し、カスタマイズインターフェースを使用したくない場合は、setopt マクロを使用できます。例えば:

 M-: (setopt fill-column 75) RET

あるいは、初期化ファイルで次のように記述することも可能です:

 (setopt fill-column 75)

これは setq と同様に動作しますが、変数に特殊なセッター関数が定義されている場合、setopt を使用するとそれらが自動的に実行されます。また、カスタマイズ不可能な他の変数に対して setopt を使用することもできますが、これは setq を使用するよりも効率が劣ります。

また、setopt のバッファローカル版である setopt-local もあり、これを使用して、例えばモードフック(Hooks を参照)などのカスタマイズ可能なオプションに対して、バッファ固有の値を設定できます。

これは setq-local と同様に動作しますが、変数に特殊なセッター関数が定義されている場合、setopt-local を使用するとそれらが自動的に実行されます。また、カスタマイズ不可能な他の変数に対して setopt-local を使用することもできますが、これは setq-local を使用するよりも効率が劣ります。

現在のバッファ内でのみカスタマイズ可能な変数の値を変更したい場合は、setopt-local マクロを使用できます。例えば:

 M-: (setopt-local fill-column 75) RET

あるいは、初期化ファイルでこれを実現したい場合は、以下のコードをモードフック内に記述してください。これにより、そのモードのバッファ内でこの変数が自動的にカスタマイズされます(Hooksを参照):

 (setopt-local fill-column 75)