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

12.10.4 Lisp方言の選択

Emacs Lispファイルを読み込んだりLispバッファを評価したりする際、バッファローカル変数 lexical-binding を用いてLisp方言が選択されます。

変数: lexical-binding

このバッファローカル変数が nil 以外の場合、Emacs Lisp のファイルおよびバッファは、デフォルトで動的束縛ではなく字句束縛を用いるモダンな Lisp 方言で評価されます。nil の場合は、すべてのローカル変数に動的束縛を用いる旧来の方言が使用されます。この変数は通常、ファイルローカル変数として Emacs Lisp ファイル全体に設定されます(ファイルローカル変数 を参照)。なお、他の同様の変数とは異なり、この変数はファイルの1行目で設定する必要があります。

実際には、方言の選択とは、Emacs Lispファイルの1行目が次のようになることを意味します:

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

現代の語彙結合方言、および

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

従来の動的型付け専用ダイアレクト向け。(これはレキシカルバインディング・クッキーとして知られています。)宣言がない場合は従来のダイアレクトが使用されますが、これは将来のリリースで変更される可能性があります。宣言がない場合は、コンパイラが警告を表示します。

eval 呼び出しを用いて Emacs Lisp コードを直接評価する場合、eval の引数 lexical が nil 以外であれば、字句束縛が有効になります。Eval を参照してください。

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