我添加了一个这样的lambda()函数run-with-idle-timer:
(run-with-idle-timer my-configurable-idle-time t
(lambda ()
;;; do something
) )
Run Code Online (Sandbox Code Playgroud)
是否可以在以后从空闲定时器触发器中删除此功能?
sds*_*sds 13
是的,run-with-idle-timer返回一个timer可以传递给的对象cancel-timer.
如果您没有保留timer对象,可以timer-idle-list手动修改.
另请参阅获取正在运行的Emacs计时器的列表.
我也遇到了类似的情况,我想杀死我开始的计时器:
(setq my-timer (run-with-timer 5 5 'my-func))
Run Code Online (Sandbox Code Playgroud)
然而,
(cancel-timer my-timer)
Run Code Online (Sandbox Code Playgroud)
没有工作,因为它说我的计时器没有设置(不知道为什么会发生这种情况).
除了第一张海报的方法,它可以用以下方法杀死:
(cancel-function-timers 'my-func)
Run Code Online (Sandbox Code Playgroud)
这取消了所有调用函数'my-func的计时器.
要通过更改timer-list来杀死它,我也测试过,我做了以下事情:
(length timer-list) ;; I had two timers..one good, one bad
(cdr timer-list) ;; I verified the last was the one I wanted to keep
(setq timer-list (cdr timer-list)) ;; I reset timer-list
Run Code Online (Sandbox Code Playgroud)
显然,这个列表结构会有所不同,因此您必须相应地进行调整.如果您使用(run-with-idle-timer)启动计时器,请替换"timer-idle-list"
如果你使用'gamegrid-start-timer启动你的计时器并且'gamegrid-kill-timer不能正常工作,这也应该有效,因为'gamegrid-start-timer基本上只是'run-with-timer'的包装器