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

19.2.10 評価リストバッファ

*edebug* と呼ばれる 評価リストバッファ を使用して、式を対話的に評価できます。また、Edebug がディスプレイを更新するたびに自動的に評価される式の 評価リスト を設定することも可能です。

E

評価リストバッファ *edebug* (edebug-visit-eval-list) に切り替える。

*edebug* バッファでは、Lisp Interaction モードのコマンド(The GNU Emacs Manual の Lisp Interaction を参照)のほか、以下の特殊コマンドも使用できます:

C-j

ポイントより前の式を外部コンテキストで評価し、バッファ内の値(edebug-eval-print-last-sexp)を挿入します。接頭辞引数が0(C-u 0 C-j)の場合、edebug-print-lengthおよびedebug-print-levelの影響で長い項目(文字列やリストなど)を短縮しません(Edebugでの出力を参照)。

C-x C-e

Edebug外のコンテキスト(edebug-eval-last-sexp)において、ドットより前の式を評価します。

C-c C-u

バッファの内容 (edebug-update-eval-list) から新しい評価リストを作成します。

C-c C-d

そのポインタが属する評価リストグループを削除する (edebug-delete-eval-item)。

C-c C-w

現在の停止位置(edebug-where)でソースコードバッファに戻る。

評価リストウィンドウ内の式は、*scratch* と同様に C-j や C-x C-e で評価できますが、Edebug 外のコンテキストで評価されます。

対話的に入力した式(およびその結果)は、実行を継続すると失われます。しかし、実行が停止するたびに評価される式からなる評価リストを設定することができます。

これを行うには、評価リストバッファに1つ以上の評価リストグループを記述します。評価リストグループは、1つ以上のLisp式で構成されます。グループ間はコメント行で区切られます。

コマンド C-c C-u (edebug-update-eval-list) は、バッファを走査し、各グループの最初の式を用いて評価リストを再構成します。(これは、グループの2番目の式が、以前に計算・表示された値であるという考え方に基づいています。)

Edebugへの各入力により、バッファ内の各式とその現在の値を順に挿入することで、評価リストが再表示されます。また、各式が独立したグループとなるよう、コメント行も挿入されます。したがって、バッファの内容を変えずに再度 C-c C-u と入力しても、評価リストは実質的に変わりません。

評価リストからの評価中にエラーが発生した場合、エラーメッセージは結果であるかのように文字列として表示されます。そのため、現在有効ではない変数を使用した式があっても、デバッグが中断されることはありません。

いくつかの式を追加した後の評価リストウィンドウの表示例を以下に示します。

(current-buffer)
#<buffer *scratch*>
;---------------------------------------------------------------
(selected-window)
#<window 16 on *scratch*>
;---------------------------------------------------------------
(point)
196
;---------------------------------------------------------------
bad-var
"Symbol's value as variable is void: bad-var"
;---------------------------------------------------------------
(recursion-depth)
0
;---------------------------------------------------------------
this-command
eval-last-sexp
;---------------------------------------------------------------

グループを削除するには、そのグループ内にポイントを移動して C-c C-d と入力するか、単にグループのテキストを削除して C-c C-u で評価リストを更新してください。評価リストに新しい式を追加するには、適切な位置に式を挿入し、新しいコメント行を挿入してから、C-c C-u と入力してください。コメント行にハイフンを挿入する必要はありません。その内容は問いません。

*edebug* を選択した後、C-c C-w でソースコードバッファに戻ることができます(Edebug Views を参照)。*edebug* バッファは実行を継続すると破棄され、次に必要になった際に再作成されます。