如何使用单个命令归档所有 DONE/DELEGATED/DEFERRED 任务

How to archive all the DONE/DELEGATED/DEFERRED tasks using a single command

这是 How to archive all the DONE tasks using a single command 上的后续问题。

Stefan 给出的解决方案适用于单个 DONE 语句。如何扩展它以使用多个 DONE 语句?

Stefan 给出了以下解决方案:

(defun org-archive-done-tasks ()
  (interactive)
  (org-map-entries
    (lambda ()
      (org-archive-subtree)
      (setq org-map-continue-from (org-element-property :begin (org-element-at-point))))
   "/DONE" 'tree))

我有以下 org-todo-关键字:

(setq org-todo-keywords
      '((sequence "TODO(t)" "NEXT(n)" "WAITING(w)" "PROJECT(p)" "|" "DONE(d)" "DELEGATED" "DEFERRED")))

目标是归档所有标记为已完成、已委派或已推迟的任务。我已尝试按照 here 的说明使用匹配,但无法使其正常工作。我试过例如:

MATCH = "/DONE|/DELEGATED|/DEFERRED"

我是 elisp 的新手,非常感谢有解释的解决方案。

语法有点晦涩,但如果我正确阅读了您链接到的页面,我认为(未经测试!)以下内容会起作用:

"/+DONE|+DELEGATED|+DEFERRED"

这与该页面上的最后一个示例非常相似:select 带有 TODO 属性 (/) 不为空 (!) 和 的 TODO 属性 的值为 DONE 或 DELEGATED 或 DEFERRED。