在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,行为是一样的。

有帮助吗?

解决方案

在呼叫'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!

并且,如果您想查看<=>的结果,它也应该定期调用<=>。

<=>的文档字符串是:

  

sit-for是一个已编译的Lisp函数   `subr.el”。 (坐着几秒钟<!>放大器;可选   nodisp)

     

执行重新显示,然后等待   秒秒或直到输入   可用。秒可能是一个   浮点值。 (在操作上   不支持等待的系统   几分之一秒   浮点值向下舍入   到最近的整数。)

     

如果是可选的arg nodisp,请不要   重新显示,等待输入。   如果输入是,则不会发生重新显示   在它开始之前可用。

     

如果等待全职,则值为t   没有输入到达,没有   否则。

其他提示

我找到了解决方案。我必须使用(sit-for <time-to-wait>)来获取缓冲区以显示生命事件的更新。

因此,代码段应修改如下:

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

也许在live主体内部,应定期调用sit-for

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top