0

我有这个代码:

(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 minibuffer?,但它不起作用。

我的 Emacs 版本是 25.3

如何应对这个问题?

4

1 回答 1

1

你做了一个错误的假设,因此你的问题不是你想象的那样。

上面代码的目的是:每三秒在 minibuffer 中重复打印一行消息。

那不是它的作用。

您已经使用过run-with-idle-timer,一旦 Emacs 空闲 3 秒(在这种情况下)秒,它将运行一次,并且在发生一些非空闲活动之前不会重复- 之后,一旦 Emacs 空闲,它将再次运行3 秒。

C-hf run-with-idle-timer

如果您想要以一致的间隔重复的内容,请使用run-with-timer.

于 2019-01-08T19:44:10.943 回答