批量重新安排组织议程项目保留日期



我有时会忘记做每天同一时间发生的一个或多个日常习惯,需要将它们与时俱进,以便我能够收到它们的组织通知。

我能够将组织议程中的单个项目与M-x org-agenda-date-later一起保留日期,并将其重新安排到当前日期,无论存在什么时间。

如果我尝试通过标记项目并执行B f org-agenda-date-later将其用作批量操作,我会得到:

Debugger entered--Lisp error: (wrong-number-of-arguments #f(compiled-function (arg &optional what) (interactive "p") #<bytecode 0x1ad5eed>) 0)
org-agenda-date-later()
org-agenda-bulk-action(nil)
funcall-interactively(org-agenda-bulk-action nil)
call-interactively(org-agenda-bulk-action nil nil)
command-execute(org-agenda-bulk-action)

这告诉我,org-agenda-date-later不是为了用作批量操作而编写的。一种解决方案可能是编写一个多次调用org-agenda-date-later的批量操作,但我不知道该怎么做。

我搜索了其他解决方案,并从组织模式常见问题中找到了组织模式作者推荐的内容:

(defun org-agenda-reschedule-to-today ()
(interactive)
(flet ((org-read-date (&rest rest) (current-time)))
(call-interactively 'org-agenda-schedule)))

这可以作为批量操作工作,但它会丢失计划项目的时间。这意味着我将不得不检查我的习惯,并在这样做后重新安排每个人的时间,这很不方便。

您可以在org-agenda-bulk-custom-functions中添加键绑定和关联的函数。 因此,例如,在调用org-agenda-bulk-action后为D添加绑定,您可以使用

(setq org-agenda-bulk-custom-functions
`((?D (lambda () (call-interactively 'org-agenda-date-later)))
,@org-agenda-bulk-custom-functions))

例如,它将传递前缀,允许C-u -1 B D在同一时间提前一天重新完成任务。

最新更新