Emacs Lispモードは、Emacs Lispを編集するための主要なモードです。モードコマンドはM-x emacs-lisp-modeです。
Emacsには、Emacs Lisp式を評価するためのコマンドがいくつか用意されています。これらのコマンドをEmacs Lispモードで使用することで、Emacs Lispコードを書きながらテストすることができます。例えば、関数を書き直した後、その関数定義を評価すれば、それ以降の関数呼び出しで反映させることができます。これらのコマンドはグローバルに利用可能であり、Emacs Lispモード以外でも使用できます。
ミニバッファで Emacs Lisp の式を1つ読み込み、評価して、その値をエコーエリアに出力します (eval-expression)。
ポイント直前のEmacs Lisp式を評価し、その値をエコーエリアに出力します (eval-last-sexp)。
point 以降に含まれる defun を評価し、その値を echo 領域 (eval-defun)
に出力します。
リージョン内のすべてのEmacs Lisp式を評価する。
バッファ内のすべてのEmacs Lisp式を評価します。
M-: (eval-expression)
は、ミニバッファを使用して式を読み込み、それを評価します。(式を評価する前に、現在のバッファは、式を入力したミニバッファではなく、M-: を入力した時点でのバッファに戻ります。)
コマンド C-x C-e (eval-last-sexp) は、バッファ内のポイント直前にある Emacs Lisp
式を評価し、その値をエコーエリアに表示します。評価結果が整数の場合は、他の形式(8進数、16進数、および後述の eval-expression-print-maximum-character
で許可されている場合は文字)の値とともに表示されます。
M-: または C-x C-e
にプレフィックス引数が指定された場合、その値はエコー領域に表示されるのではなく、ポイントにある現在のバッファに挿入されます。プレフィックス引数が 0
の場合、整数出力は他の形式(8進数、16進数、文字)の値とともに挿入されます。また、このようなプレフィックス引数は、変数 eval-expression-print-level および eval-expression-print-length
に基づく出力の省略を防ぎます(後述)。同様に、プレフィックス引数 -1 は eval-expression-print-length の効果を上書きします。
C-x C-e (eval-last-sexp) は
defvar 式を特別に扱います。通常、defvar
式の評価は、それが定義する変数に既に値がある場合、何も行いません。しかし、このコマンドは無条件にその変数を defvar で指定された初期値にリセットします。これは Emacs Lisp
プログラムのデバッグに便利です。defcustom および defface 式も同様に扱われます。なお、本節で説明されている他のコマンドは、eval-defun を除いて、この特別な機能を備えていないことに注意してください。
Emacs Lispモードでは、eval-defun コマンドは C-M-x
にバインドされています。このコマンドは、ポイントを含む、あるいはポイントに続くトップレベルのLisp式を評価し、その値をエコーエリアに出力します。この文脈において、トップレベルの式は「defun」と呼ばれますが、必ずしも実際の
defun(関数定義)である必要はありません。
このコマンドは、defvar/defcustom/defface 形式を eval-last-sexp と同様に処理します。
prefix引数を指定すると、C-M-xは関数定義をEmacs LispデバッガであるEdebug向けにインストルメントします。Emacs LispリファレンスマニュアルのEdebug向けのインストルメンテーションを参照してください。
コマンド M-x eval-region は、リージョン内のテキストを1つ以上のLisp式として解析し、それらを一つずつ評価します。M-x eval-buffer も同様ですが、バッファ全体を評価します。
オプション eval-expression-print-level および eval-expression-print-length
は、評価コマンドの実行結果において、リストを省略する前に出力する最大深度と長さを制御します。eval-expression または eval-last-sexp にゼロのプレフィックス引数を指定すると、リストは全文出力されます。eval-expression-debug-on-error
は、これらのコマンドを使用する際に評価エラーでデバッガが起動するかどうかを制御します。デフォルトは t です。eval-expression-print-maximum-character
は、この値より大きい整数が文字として表示されるのを防ぎます。