Next: , Previous: , Up: プログラムのコンパイルとテスト   [Contents][Index]


28.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進、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 (関数定義)である必要はありません。

このコマンドはeval-last-sexpが行うのと同じ方法で、defvar/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です。eval-expression-print-maximum-characterは、文字として表示される最大の整数を超える値を抑制します。