我正在尝试调用以下org-mode函数,在缓冲区中插入当前时间戳。该函数由脚本调用。
(org-time-stamp-inactive)
正如预期的那样,这将弹出一个提示,要求输入时间戳使用的日期。但是我想跳过提示,直接插入时间戳。这是否可能?我没有找到任何可以帮助我的东西。
(org-insert-time-stamp nil nil t)
(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))
flet
是 cl
库的一部分,您需要显式加载它。它与 Emacs 捆绑在一起。 - Gilles 'SO- stop being evil'cl
和因此flet
已经过时,并被cl-lib
取代。现代的Emacs Lisp代码应该使用cl-lib
与广义变量来进行临时函数覆盖,即使用cl-letf
绑定symbol-function
单元格(示例)。 - user355252cl-lib
)远非过时。 - Gilles 'SO- stop being evil'cl
在Emacs 24中仍然有效,并且它唯一的缺陷是与Common Lisp的兼容性不完美,因此没有停止使用它的紧迫性。 - Gilles 'SO- stop being evil' (insert (format-time-string "[%Y-%m-%d %a]"))
你可以在类似函数 (org-time-stamp)
的文档中找到答案。
[...] 使用两个通用前缀参数,插入一个带有当前时间的活动时间戳而不提示用户。[...]
所以... 你只需要在调用函数之前按下 C-u C-u
(例如 C-u C-u M-x org-time-stamp-inactive RET
)即可。
(defun my-org-time-stamp () (interactive) (let ((current-prefix-arg '(16))) (call-interactively 'org-time-stamp)))
这个方法也可以在脚本中使用。 - Ignacy Moryc(call-interactively 'org-time-stamp-inactive)
。 - Ignacy Moryc(org-time-stamp-inactive '(16))
应该(几乎)等同于上面的 let 表达式。 - YoungFrog
(org-time-stamp-inactive your-time-stamp)
。 - Barmar