Edebugが何らかの表示を行う必要がある場合(例:トレースモード時)、Edebug外部から現在のウィンドウ設定を保存します(ウィンドウ設定を参照)。Edebugを終了すると、以前のウィンドウ設定が復元されます。
Emacsが再表示を行うのは、一時停止したときのみです。通常、実行を再開すると、プログラムは途中で一時停止したり入力を読んだりすることなく、ブレークポイントやステップ実行後に再びEdebugに入ります。このような場合、Emacsが外部設定を再表示する機会は得られません。その結果、表示されるのは、中断なく前回Edebugがアクティブだったときと同じウィンドウ設定になります。
何かを表示するために Edebug に入ると、以下のデータも保存・復元されます(ただし、エラーや終了シグナルが発生した場合には、一部のデータは意図的に復元されません)。
edebug-save-windows が nil
以外の場合、外部ウィンドウ構成が保存および復元されます(Edebug Options を参照)。edebug-save-windows
の値がリストである場合は、リストに指定されたウィンドウのみが保存および復元されます。
エラーや終了時にウィンドウ構成は復元されませんが、save-excursion
が有効な場合は、エラーや終了時であっても外側で選択されていたウィンドウが再選択されます。
ただし、Edebug内での表示の整合性を保つため、ウィンドウの開始位置とソースコードバッファの水平スクロールは復元されません。
外部ウィンドウの設定を保存・復元すると、デバッグ対象のLispプログラムが動作するバッファ内のポイント位置が変更されることがあります。特に、プログラムがポイントを移動させる場合にこの現象が起こりやすくなります。このような現象が発生し、デバッグの妨げになる場合は、edebug-save-windows を nil
に設定することを推奨します(Edebug Options
を参照してください)。
edebug-save-displayed-buffer-points が nil でない場合には復元されます。
overlay-arrow-position と overlay-arrow-string
は保存・復元されるため、同じバッファ内の別の場所にある再帰的な編集箇所からでも、安全に Edebug を呼び出すことができます。
cursor-in-echo-area は nil
にローカルにバインドされており、これによりカーソルがウィンドウ内に表示されます。