回答:
これは私が毎朝使用して、すべてのtodoをくまなく調べて、期限が過ぎている場合は日付を今日に変更し、期限が過ぎている場合は次のアクションからアクティブに変更します。これは、私が1年間使用している自分のカレンダーのカスタムソリューションであるため、間違いなく自分の側でいくつかのカスタマイズが必要になります。私の記憶は、バージョン7および8 org-deadline
から変更があったことorg-mode
で、セットアップで以前のバージョンを使用している可能性があります。現在のバージョンでは、追加の引数などが必要になる場合があります。追加のヘルプが必要な場合はお知らせください。時間が許す限り、今後数日間はその問題に取り組みます。
私が使用する正規表現は、見出しに2つの星があり、バッファの左端にあることを想定しています。独自のセットアップでは、おそらく正規表現の変更が必要になります。
(defun org-carry-forward-uncompleted-tasks ()
"Carry forward uncompleted tasks."
(interactive)
(save-excursion
(goto-char (point-max))
(while (re-search-backward "^\\*\\* Active" nil t)
(unless (org-at-heading-p)
(org-back-to-heading t))
(let* (
(element (org-element-at-point))
(todo-state (org-element-property :todo-keyword element))
(deadline (org-element-property :deadline element))
(deadline-time-stamp
(when deadline
(time-to-days
(org-time-string-to-time
(org-element-property :raw-value deadline)))))
(today (time-to-days (current-time))) )
(when
(and
deadline-time-stamp
(> today deadline-time-stamp) ;; deadline is overdue
(string= todo-state "Active") ) ;; todo-state equals "X"
(org-deadline nil ".") )))))
(defun org-make-active-today ()
"Change task from Next Action to Active if deadline is less than or equal to today."
(interactive)
(save-excursion
(goto-char (point-max))
(while (re-search-backward "^\\*\\* Next Action" nil t)
(unless (org-at-heading-p)
(org-back-to-heading t))
(let* (
(element (org-element-at-point))
(todo-state (org-element-property :todo-keyword element))
(deadline (org-element-property :deadline element))
(deadline-time-stamp
(when deadline
(time-to-days
(org-time-string-to-time
(org-element-property :raw-value deadline) ))))
(today (time-to-days (current-time))) )
(when
(and
deadline-time-stamp
(>= today deadline-time-stamp) ;; deadline less than or equal to today
(string= todo-state "Next Action")) ;; todo-state equals "X"
(org-deadline nil ".")
(org-todo "Active") )))))