如何清除我程序中的 Emacs 回显区域?
How to clear Emacs echo area in my program?
我有这个代码:
(defun do-repeated-work (args)
"some work that need executed repeatedly"
(message nil)
(message "doing some repeated work, arg = %s, current time = %s" args (format-time-string "%H:%M:%S")))
(setq timer (run-with-idle-timer 3 t 'do-repeated-work (list "arg1" "arg2" "arg3")))
以上代码的目的是:每三秒在minibuffer中重复打印一行消息。但是我发现,当函数do-repeated-work
再次运行时,emacs minibuffer中的旧消息无法清除,所以新消息无法显示。我已经尝试过这个问题中提到的方法:,但是没有用。
我的 Emacs 版本是 25.3
如何解决这个问题?
你做出了错误的假设,因此你的问题不是你想的那样。
The purpose of the code above is: print a line of message in minibuffer repeatedly every three seconds.
这不是它的作用。
您已经使用了 run-with-idle-timer
,它将 运行 一次 一旦 Emacs 空闲了 3 秒(在这种情况下),并且不会重复 直到 发生了一些非空闲 activity -- 之后它会再次 运行 一旦 Emacs 空闲了 3 秒。
参见C-hf run-with-idle-timer
如果您想要以一致的间隔重复的内容,请使用 run-with-timer
。
我有这个代码:
(defun do-repeated-work (args)
"some work that need executed repeatedly"
(message nil)
(message "doing some repeated work, arg = %s, current time = %s" args (format-time-string "%H:%M:%S")))
(setq timer (run-with-idle-timer 3 t 'do-repeated-work (list "arg1" "arg2" "arg3")))
以上代码的目的是:每三秒在minibuffer中重复打印一行消息。但是我发现,当函数do-repeated-work
再次运行时,emacs minibuffer中的旧消息无法清除,所以新消息无法显示。我已经尝试过这个问题中提到的方法:
我的 Emacs 版本是 25.3
如何解决这个问题?
你做出了错误的假设,因此你的问题不是你想的那样。
The purpose of the code above is: print a line of message in minibuffer repeatedly every three seconds.
这不是它的作用。
您已经使用了 run-with-idle-timer
,它将 运行 一次 一旦 Emacs 空闲了 3 秒(在这种情况下),并且不会重复 直到 发生了一些非空闲 activity -- 之后它会再次 运行 一旦 Emacs 空闲了 3 秒。
参见C-hf run-with-idle-timer
如果您想要以一致的间隔重复的内容,请使用 run-with-timer
。