Go to the first, previous, next, last section, table of contents.

リカーシブ(訳注:再帰的)エディティングレベル

プログラム中から(Emacs の)コマンドループを呼ぶことができます。 (これにより) ユーザーは、コマンドループを呼んだプログラムに戻る前に、(任意の)エディティング を行なうことができます。以下に示す変数及び関数は、リカーシブエディットの呼ばれ うる回数に関する制限とリカーシブエディットへのエントリー及び exit を制御しま す。

recursive-edit は、スタック上に exit という名前のタグを設定します。リカーシ ブエディットを exit する際、これに対し throw を行なうことができます(セクシ ョン12.6 [throw]、ページ 104 参照)。 non-nil 値を throw すると recursive-edit はエラーを出します (どの??)。 exit-recursive-edit, abort-recursive-edit, top-levelを呼んで recursive-edit を exit することもで きます。

recursive-edit の exit のしかたにはよらず、 unwind フォーム unwind-protect が 評価されます。

Command: recursive-edit

この関数は、エディターのコマンドループをリカーシブ(訳注:再帰的)に起動しま す。 (これにより)ユーザーは、関数の中で(その関数の実行を中断し)エディティ ングを行なうことができます。

この関数は、(エディターの初期化で)トップレベルのエディティングを開始するの に呼ばれます。

次の例において、関数 simple-rec は、(最初)ポイントを 1 word 進め、その後リ カーシブエディットに入りエコーエリアにメッセージを出力します。ユーザーは望 むままにエディティングを行なうことができます。リカーシブエディットを exit すると(通常 ESC C-c が exit-recursive-edit にバインドされます)、この関数は ポイントを(また) 1 word 先に進めます。

  (defun simple-rec ()
    (forward-word 1)
    (message "Recursive edit in progress.")
    (recursive-edit)
    (forward-word 1))
  => simple-rec
  (simple-rec)
  => nil

Command: exit-recursive-edit

この関数は、1 番内部のリカーシブエディトかミニバッファから exit します。こ の定義は、(nil の値を持って) throw を呼び出します。

Command: abort-recursive-edit

この関数は、リカーシブエディットもしくはミニバッファ入力を要求したコマンド をアボートし、エラーを出し(訳注:signal)ます。

Command: top-level

この関数は、リカーシブエディットレベルを(全て) exit します。これは(本質的 に)全ての計算から完全に飛び出し (直接)メインのコマンドループに戻るため、値 は返しません。

Function: recursion-depth

これは、起動されたリカーシブエディットの(カレントの)深さを返します。トップ レベルにおけるコマンドループでは、これは 0 を返します。


Go to the first, previous, next, last section, table of contents.