5

emacs Lisp の次の関数では、

(defun show-life ()
  (interactive)
  (switch-to-buffer "*Life-Window*") ; show how life goes on while living
  (live)) ; it takes 70 years to finish and return!

バッファ「 Life-Window」を作成し、(ライブ) によって生成されたライフ イベントを、ライブが進行している間継続的に表示したいと考えています。

残念ながら、バッファーは (ライブ) が戻った後 (ライブが終了したとき) にのみ表示されます。

pop-to-buffer も試しましたが、動作は同じです。

4

2 に答える 2

13

'sit-forへの呼び出しの直前にへの呼び出しを追加します'live

(defun show-life ()
  (interactive)
  (switch-to-buffer "*Life-Window*")    ; show how life goes on while living
  (sit-for 0)                           ; perform redisplay
  (live))                               ; it takes 70 years to finish and return!

また、 の結果を見たい場合は'live、定期的に呼び出す必要'sit-forがあります。

のドキュメント文字列'sit-forは次のとおりです。

sit-for は `subr.el' にコンパイルされた Lisp 関数です。(sit-for seconds &optional nodisp)

再表示を実行してから、 seconds 秒間、または入力が使用可能になるまで待ちます。seconds は浮動小数点値の場合があります。(秒未満の待機をサポートしていないオペレーティング システムでは、浮動小数点値は最も近い整数に切り捨てられます。)

オプションの引数 nodisp が t の場合、再表示せず、入力を待ちます。開始前に入力がある場合、再表示は行われません。

入力が到着せずに完全に待機した場合、値は t であり、それ以外の場合は nil です。

于 2009-06-20T14:40:03.877 に答える
4

私は解決策を見つけました。(sit-for <time-to-wait>)ライフイベントの更新を表示するバッファを取得するために使用する必要があります。

したがって、コード セグメントは次のように変更する必要があります。

(defun show-life ()
  (相互の作用)
  (switch-to-buffer "*Life-Window*") ; 生きている間に人生がどのように進むかを示す
  (シットフォー 0)
  (住む)) ; 完成して戻るのに70年かかります!

体内でlivesit-for定期的に呼び出す必要があります。

于 2009-06-20T14:41:18.070 に答える