在配置里定义一个新的方法
(defun archive-done-tasks ()
(interactive)
(save-excursion
(goto-char (point-min))
(while (re-search-forward
(concat "\\* " (regexp-opt org-done-keywords) " ") nil t)
(goto-char (line-beginning-position))
(org-archive-subtree))))
如果只是想对特定的 org 文件起作用,在对应的文件开头加上
-*- mode: org; after-save-hook: (archive-done-tasks) -*-
如果想对所有 org 文件起作用,那么
(defun enable-auto-archive ()
(add-hook 'after-save-hook 'archive-done-tasks))
(add-hook 'org-mode-hook 'enable-auto-archive)
示例如下,task.org
里有三个任务,保存后自动将状态为 DONE
的挪到 task.org_archive
文件中了