답변:
다음은 매일 아침 사용하여 할 일을 모두 빗나가고 기한이 지난 날짜를 오늘로 변경하고 오늘 마감일 인 경우 다음 행동에서 활성으로 변경하는 것입니다. 1 년 동안 사용해온 내 캘린더를위한 맞춤형 솔루션이므로 의심 할 여지없이 자신의 일부에 대한 맞춤형이 필요합니다. 내 기억에 따르면 버전 7과 8 org-deadline
에서 변경된 사항 org-mode
이 있으며 설정에서 이전 버전을 사용하고있을 수 있습니다. 현재 버전에는 추가 인수 또는 무언가가 필요할 수 있습니다. 추가 도움이 필요한 경우 알려 주시면 시간이 허락하는대로 다음 며칠 동안 작업하겠습니다.
내가 사용하는 정규 표현식에는 제목에 두 개의 별이 있으며 버퍼의 왼쪽 가장자리에있을 것입니다. 자신의 설정은 정규식을 수정해야 할 것입니다.
(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") )))))