首页 > 解决方案 > 如何使用单个命令归档所有 DONE/DELEGATED/DEFERRED 任务

问题描述

这是关于如何使用单个命令归档所有 DONE 任务的后续问题。

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-keywords:

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

目标是归档所有标记为 DONE、DELEGATED 或 DEFERRED 的任务。我已尝试按照此处的说明使用匹配,但无法使其正常工作。我试过例如:

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

我是 elisp 的新手,感谢您提供带有解释的解决方案。

标签: org-mode

解决方案


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

"/+DONE|+DELEGATED|+DEFERRED"

这与该页面上的最后一个示例非常相似:选择具有非空 (!) 的 TODO 属性 (/) 并且该 TODO 属性的值为 DONE、DELEGATED 或 DEFERRED 的条目。


推荐阅读