elisp的一段代码可以"收益",所以emacs不会阻止吗?

kil*_*h10 4 emacs elisp

有没有办法写这样的东西而不接管emacs?

(defun dumb-wait (seconds)
    (let ((done (+ (second (current-time)) seconds)))
        (while (< (second (current-time)) done)
            (message "waiting"))))

(dump-wait 5)将阻止5秒内的emacs.反正有没有写这个,所以它不会阻止?我只是想循环并不时检查一些条件,仍然可以使用emacs.

谢谢!

and*_*e-r 6

(run-at-time time repeat function &rest args)应该这样做.nil时间意味着现在.

(setq my-timer 
      (run-at-time nil 5 (lambda () (message "waiting")))) ; returns timer object
;; or
(setq my-timer
      (run-at-time nil 5 'message "waiting"))

(cancel-timer my-timer) ; use timer object from above
Run Code Online (Sandbox Code Playgroud)

编辑:

该参数repeat需要一个以秒为单位的数字,但是有一个函数timer-duration,您可以使用该函数而不是数字.它返回字符串参数提供的秒数.对于大间隔,这有点容易阅读.

(timer-duration "3 hours 2 seconds 1 millisec") ; => 10802.001
Run Code Online (Sandbox Code Playgroud)

您可以使用的可能单词在变量中定义timer-duration-words.