前: Killing Emacs, 上: Getting Out
Emacsを休止するとは、Emacsを一時的に停止し、
普通はシェルである親プロセスに制御を戻すことです。
これにより、あとで同じEmacsプロセスで、つまり、同じバッファ群、
同じキルリング、同じアンドゥ履歴などで編集を再開できます。
Emacsを再開するには、親シェルにおいて
ほとんどの場合fg
などの適切なコマンドを使います。
ジョブの休止を扱えないオペレーティングシステムもあります。 そのようなシステムでは、『休止』はEmacsのサブプロセスとして 一時的に新たなシェルを実際には作成します。 そのシェルを終了するとEmacsに戻ります。
ウィンドウシステムを使っている場合には、 Emacsジョブを再開する親プロセスがいないかもしれませんし、 別のウィンドウへ移動すれば別のジョブへ入力できますから、 Emacsの休止は有用ではありません。 したがって、Emacsがウィンドウシステムを使っている場合には、 休止できません。
この関数は、Emacsを休止し、親プロセスへ制御を戻す。 親プロセスがEmacsを再開した場合にのみ、
suspend-emacs
はLisp内の呼び出し側へnil
を返す。stringが
nil
以外であると、 Emacsの親シェルが端末入力として読めるようにその文字群を送る。 親シェルはstringの文字群を表示せず、 その結果のみが現れる。休止するまえに、
suspend-emacs
は ノーマルフックsuspend-hook
を実行する。ユーザーがEmacsを再開すると、
suspend-emacs
は ノーマルフックsuspend-resume-hook
を実行する。 see Hooks。再開後のつぎの再表示では、 変数
no-redraw-on-reenter
がnil
ならば スクリーン全体を再描画する。 (see Refresh Screen)。つぎの例では、Emacsを休止しても`pwd'は表示されないことに注意。 しかし、シェルはそれを読み取って実行する。
(suspend-emacs) => nil (add-hook 'suspend-hook (function (lambda () (or (y-or-n-p "Really suspend? ") (error "Suspend cancelled"))))) => (lambda nil (or (y-or-n-p "Really suspend? ") (error "Suspend cancelled"))) (add-hook 'suspend-resume-hook (function (lambda () (message "Resumed!")))) => (lambda nil (message "Resumed!")) (suspend-emacs "pwd") => nil ---------- Buffer: Minibuffer ---------- Really suspend? y ---------- Buffer: Minibuffer ---------- ---------- Parent Shell ---------- lewis@slug[23] % /user/lewis/manual lewis@slug[24] % fg ---------- Echo Area ---------- Resumed!