Next: , Previous: , Up: Building   [Contents][Index]


27.9 Emacs Lisp式の評価

Emacs LispモードはEmacs Lispを編集するためのメジャーモードです。これのモードコマンドはM-x emacs-lisp-modeです。

Emacsは、Emacs Lisp式を評価するためのコマンドをいくつか提供します。記述しているEmacs Lispコードをテストするために、これらのコマンドをEmacs Lispモードで使用できます。たとえば、関数を書き換えた後、以降の関数呼び出しでそれを有効にするために、関数定義を評価します。これらのコマンドはグローバルに利用可能で、Emacs Lispモード以外でも使用できます。

M-:

1つのEmacs Lisp式をミニバッファーで読み取り、それを評価して、値をエコーエリアに出力します(eval-expression)。

C-x C-e

ポイントの前のEmacs Lisp式を評価して、値をエコーエリアに出力します(eval-last-sexp)。

C-M-x (Emacs Lispモード)
M-x eval-defun

ポイントの後またはポイントを含むdefunを評価して、値をエコーエリアに出力します(eval-defun)。

M-x eval-region

リージョンのすべてのEmacs Lisp式を評価します。

M-x eval-buffer

バッファーのすべてのEmacs Lisp式を評価します。

M-: (eval-expression)は、ミニバッファーを使って式を読み取り、それを評価します(式を評価する前に、カレントバッファーは、式をタイプするためのミニバッファーではなく、M-:をタイプしたときカレントだったバッファーに切り替わります)。

コマンドC-x C-e (eval-last-sexp)は、そのバッファーのポイントの前にあるEmacs Lisp式を評価して、その値をエコーエリアに表示します。評価した結果が整数のときは、他のフォーマット(8進、16進、文字)も一緒に値を表示します。

M-:およびC-x C-eにプレフィクス引数を与えた場合、値をエコーエリアに表示するのではなく、カレントバッファーのポイント位置に値を挿入します。プレフィクス引数が0の場合、整数出力は他のフォーマット(8進、16進、文字)と一緒に挿入されます。プレフィクス引数は、eval-expression-print-levelおよびeval-expression-print-lengthにしたがった出力の省略も防ぎます(以下参照)。

eval-defunコマンドは、Emacs LispモードではC-M-xにバインドされています。これはポイントを含む、またはポイントの後ろのトップレベルのLisp式を評価して、値をエコーエリアに出力します。このコンテキストでは、トップレベルの式は“defun”として参照されますが、実際のdefun(関数定義)である必要はありません。このコマンドはdefvar式を特別に扱います。通常、defvar式を評価しても、それが定義する変数がすでに値をもっている場合は、何も起こりません。しかし、このコマンドは無条件にdefvarで指定された初期値に変数をリセットします。これはEmacs Lispプログラムをデバッグするとき便利です。式defcustomおよびdeffaceも同様に扱われます。このセクションで説明している他のコマンドは、この特別な機能をもっていません。

プレフィクス引数を指定すると、C-M-xはEmacs LispデバッガーのEdebugのために関数定義をインストルメント(instrument: 処置)します。Instrumenting for Edebug in the Emacs Lisp Reference Manualを参照してください。

コマンドM-x eval-regionは、リージョンのテキストを1つ以上のLisp式として解析して、それらを1つずつ評価します。M-x eval-bufferも同様ですが、これはバッファー全体を評価します。

オプションeval-expression-print-levelおよびeval-expression-print-lengthは、評価コマンドが結果を出力する前に省略する、リストの最大の深さと長さを制御します。eval-expressionまたはeval-last-sexpにプレフィクス引数0を指定すると、リストはすべて出力されます。eval-expression-debug-on-errorは、これらのコマンドが使用されるとき、評価エラーによりデバッガーを呼び出すかを制御します、デフォルトはtです。