(たとえばtraceモードなどで)Edebugが何かを表示する必要があるときは、Edebugの外部からカレントウィンドウ構成(ウィンドウの構成を参照)を保存します。Edebugをexitするときに、以前のウィンドウ構成がリストアされます。
Emacsはpause時だけ再表示を行います。通常は実行を継続すると、そのプログラムはbreakpointかステップ実行後にEdebugに再エンターして、その間にpauseや入力の読み取りはありません。そのような場合、Emacsが外部の構成を再表示する機会は決してありません。結果としてユーザーが目にするウィンドウ構成は、前回Edebugが中断なしでアクティブだったときのウィンドウ構成と同じになります。
何かを表示するためにEdebugにエントリーすることにより、(たとえこれらのうちのいくつかは、エラーやquitがシグナルされたときは故意にリストアしないデータだとしても)以下のデータも保存とリストアが行われます。
edebug-save-windows
が非nil
なら、外部のウィンドウ構成の保存とリストアが行われる(Edebugのオプションを参照)。edebug-save-windows
の値がリストの場合には、保存とリストアはリストされたウィンドウにたいしてのみ行われる。
エラーやquitではウィンドウ構成はリストアされないが、save-excursion
がアクティブなら、たとえエラーやquitのときでも外部の選択されたウィンドウが再選択される。
ただしソースコードバッファーのウィンドウの開始位置と水平スクロールはリストアされないので、表示はEdebug内で整合性が保たれたままとなる。
外部のウィンドウ構成の保存やリストアによってデバッグ中のLispプログラムが作用するバッファーのポイントが変更されてしまうときがある(特にプログラムがポイントを移動する場合)。もしこれが発生してデバッグに干渉するようなら、edebug-save-windows
にnil
をセットすることをお勧めする(Edebugのオプションを参照)。
edebug-save-displayed-buffer-points
が非nil
なら、表示されているそれぞれのバッファー内のポイント値は保存およびリストアされる。
overlay-arrow-position
とoverlay-arrow-string
は保存とリストアが行われるので、同じバッファー内の他の場所の再帰編集から安全にEdebugを呼び出せる。
cursor-in-echo-area
はnil
にローカルにバインドされるのでカーソルはそのウィンドウ内に現れる。