Elisp - 避免提示交互功能

时间:2014-05-29 16:19:21

标签: emacs elisp org-mode

我尝试调用以下org-mode函数将当前时间戳插入缓冲区。该函数由脚本调用。

(org-time-stamp-inactive)

正如预期的那样,这会提示询问用于时间戳的日期。但我想跳过提示并直接插入时间戳。这有可能吗?天文没有找到任何可以帮助我的东西。

4 个答案:

答案 0 :(得分:2)

org-time-stamp无条件¹调用org-read-date来提示用户输入日期。你不能通过约会。但是你可以locally bind org-read-date到一个返回你想要使用的日期的函数。

(require 'cl)
(flet ((org-read-date (org-with-time &rest args)
         (format-time-string (if org-with-time "%Y-%m-%d %H:%M" "%Y-%m-%d")
                             (current-time))))
  (org-time-stamp-inactive with-time))

¹除非有时间戳,但有时没有帮助。

答案 1 :(得分:1)

这应该插入当前的非活动时间戳:

(org-insert-time-stamp nil nil t)

答案 2 :(得分:0)

我最后通过以下调用从头开始创建时间戳:

  (insert (format-time-string "[%Y-%m-%d %a]"))

答案 3 :(得分:-2)

您可以在类似功能(org-time-stamp)

的文档中找到答案
  

[...]使用两个通用前缀参数,插入一个活动时间戳   使用当前时间而不提示用户。 [...]

所以..你需要做的就是在调用函数之前按C-u C-u(例如C-u C-u M-x org-time-stamp-inactive RET