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 の見出しの下で、再提出するかどうかの確認を求めるメッセージが引き続き表示されます。