org-modeで完了タスクを一気にアーカイブ
EmacsWiki: org-extension.el に org-archive-all-done-item という激しく便利そうな関数を見つけたので、導入してみた。
我が輩のorg環境はhowmと併用している。
アーカイブ先指定の org-archive-location がデフォルト値の "%s_archive::" だと、ファイルのネーミングルールが崩れてしまうので、"::* Archived Tasks"に設定してある。
(setq org-archive-location "::* Archived Tasks")
この設定だと、同一ファイルの最後の方に、* Archived Tasks という項目が出来、その中に終了タスクが移動するという仕組みだ。
しかし、この設定が問題を引き起こす。
オリジナルのorg-archive-all-done-item は、"* Archived Tasks" に終了タスクを移動する設定だと、永久ループに陥ってしまう。orz
そこで、えいやぁと書き換えてみた。
以下そのリスト
(defun org-archive-all-done-item () "Archive all item that have with prefix DONE." (interactive) (save-excursion (show-all) (goto-char (point-min)) (while (search-forward-regexp "^[\\*]+ DONE" nil t) (if (search-backward-regexp "^[\\*]+ Archived Tasks" nil t) (goto-char (point-max)) (org-advertized-archive-subtree))) (message "Archive finished") (org-display-all-todo-item)))
最後の org-display-all-todo-item を削除すれば、org-extension.el が無くても動く。
非常に便利なので、お試しあれ。