12.10.4 Lisp方言の選択

Emacs LispファイルのロードやLispバッファーを評価するとき、バッファーローカルな変数lexical-bindingを用いてLisp方言が選択されます。

Variable: lexical-binding

このバッファーローカルな変数が非nilなら、Emacs Lispファイルとバッファーはダイナミックバインディングではなく、デフォルトではレキシカルバインディングを使用する現代的なLisp方言を用いて評価される。nilならすべてのローカル変数にたいしてダイナミックバインディングを使用する古い方言が使用される。この変数は、通常はファイルローカル変数として、Emacs Lispファイル全体にたいしてセットされる(ファイルローカル変数を参照)。他のファイルローカル変数などとは異なり、ファイルの最初の行でセットされなければならないことに注意。

実際のところは以下のような見た目をしたEmacs Lispファイルの1行目が方言の選択を意味します:

;;; ...  -*- lexical-binding: t -*-

これは現代的なレキシカルバインディングの方言の場合で、

;;; ...  -*- lexical-binding: nil -*-

これは古いダイナミックのみの方言です。何も方言の指定がなければ古い方言が使用されますが、これは将来のリリースで変更されるかもしれません。方言の指定がないと、コンパイラーは警告を発するでしょう。

eval呼び出しを使用してEmacs Lispコードを直接評価するとき、evallexical引数が非nilなら、レキシカルバインディングが有効になります。evalについてを参照してください。

レキシカルバインディングは*scratch*バッファーで使用されるLisp Interactionモード、および*ielm*バッファーで使用されるIELMモードでも有効であり、M-: (eval-expression)を通じた式の評価や、Emacsとemacsclient (emacsclient Options in The GNU Emacs Manualを参照)の--evalコマンドラインオプション(Action Arguments in The GNU Emacs Manualを参照)を処理する際にも有効です。

This page has generated for branch:work/emacs-30_69b16e5c63840479270d32f58daea923fe725b90, commit:5e3f74b56ff47b5bcef2526c70f53f749bbd45f6 to check Japanese translation.