2

Emacs org-mode 内でこれを達成するにはどうすればよいですか? elisp コードを書く必要がありますか? 完了したタスクを、同じ組織ファイルの Anti-todo 見出しに再ファイルしたいと考えています。その日のうちに達成したことを簡単に把握したいと考えています。アーカイブすると、運動中にその日のうちに何をしたかがわからなくなります。例えば:

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

タスク 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 に答える