2

我如何在 Emacs org-mode 中实现这一点?我需要写一些elisp代码吗?我想将我的 DONE 任务重新归档到同一组织文件上的 Anti-todo 标题。事情是想轻松地了解我在白天完成的事情。如果我存档,那么在运动中,我会忘记白天完成的工作。例如:

* Projects
** TODO Task 1
* Anti-todo
** DONE DId some stuff
** DONE Did some other stuff

当我将 Task 1 切换到 DONE 时,我希望它重新归档到 Anti-todo

4

1 回答 1

3

org-mode 有一个功能可以做到这一点,它被称为 org-sort-entries。命令提示排序类型,在您的情况下为“o”。

要让它自动执行上述操作,请将其添加到您的配置文件中:

(defun xmonk/org-sort-todo-list ()
  "Sort buffer in todo order."
  (interactive)
  (save-excursion
    (mark-whole-buffer)
    (org-sort-entries nil ?o))
  (org-overview))


(add-hook 'org-after-todo-state-change-hook 'xmonk/org-sort-todo-list)

将状态从 Todo 更改为 Done 时的自动重新归档有点棘手并会导致错误,但执行此操作的代码将是这样的:

(setq org-refile-use-outline-path "Anti-todo")

(defun xmonk/org-refile-done()
  (interactive)
  (beginning-of-buffer)
  (re-search-forward "DONE")
  (if (match-beginning 0)
    (let ((org-refile-targets '((nil :maxlevel . 5))))
      (org-refile nil (current-buffer)))))

然后你可以像这样从上面的钩子中调用它:

(add-hook 'org-after-todo-state-change-hook 'xmonk/org-refile-done)

它仍然会要求您确认是否要在 Anti-todo 标题下重新提交。

于 2013-03-28T13:40:32.673 回答