Emacs Lisp:在函数返回之前使新创建的缓冲区可见吗?
在emacs Lisp中的以下函数中Emacs Lisp:在函数返回之前使新创建的缓冲区可见吗?,emacs,lisp,buffer,visibility,Emacs,Lisp,Buffer,Visibility,在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! 我想创建一个缓冲区“生活窗口”,在生活继续进行时,让(生活)生成的生活事件持续显示 不幸的是,缓冲区只有在(活动)返回后才可见(当它结束
(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!
我想创建一个缓冲区“生活窗口”,在生活继续进行时,让(生活)生成的生活事件持续显示
不幸的是,缓冲区只有在(活动)返回后才可见(当它结束时!)
我也试过用pop来缓冲,行为是一样的 在调用
'live
之前添加对'sit-for
的调用,例如:
(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是中编译的Lisp函数
`苏伯尔。(坐几秒钟&可选)
nodisp)
执行重新显示,然后等待
秒或直到输入结束
可用。秒可能是一个错误
浮点值。(关于操作
不支持等待的系统
对于几分之一秒,
浮点值向下舍入
到最接近的整数。)
如果可选参数nodisp为t,则不要
重新显示,只需等待输入。
如果输入为空,则不会重新显示
开始前可用
如果完全等待,则值为t
没有输入到达,并且为零
否则
我找到了解决办法。我必须使用
(sit for)
来获取缓冲区,以显示生活事件的更新
因此,代码段应修改如下:
(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!
(德芬秀生活()
(互动)
(切换到缓冲区“*生活窗口*”;展示生活是如何进行的
(坐0分钟)
(现场直播);完成并返回需要70年!
可能在
live
主体内部,应该定期调用sitfor
我们也在传递同样的情绪,一直到“周期性”这个词。