ORG-MODE - запускає статус TODO на певну дату?


9

Замість того, щоб щоранку вручну перевіряти файл або календар тикера, як я можу створити тригер, який встановить статус елемента в TODO на певну дату?

Відповіді:


5

Це не пряма відповідь, але ви можете використовувати підтримку Org для встановлення строків та планування натомість.

Ви можете створити свої пункти TODO та призначити їм заплановану дату, яка в Org означає дату, коли ви плануєте виконати завдання - і коли вона має почати відображатися у вашому порядку денному. (Якщо ви вже не використовуєте погляди порядку денного органу, їх варто проаналізувати!)

Залежно від ваших потреб, ви також можете призначити термін. Наприклад: створіть TODO в п’ятницю, заплануйте його на наступний ср, коли ви насправді хочете його побачити; і дати йому термін наступної п’ятниці, до якого він повинен завершитися.


7

Ось те, що я використовую щоранку, щоб прочесати весь свій Тодо і змінити дату на сьогодні, якщо вона прострочена, і змінити її з наступної дії на активну, якщо вона належить сьогодні. Це індивідуальне рішення для мого власного календаря, який я використовую протягом року, тому, безперечно, знадобиться певна налаштування з вашого боку. Наскільки я пам'ятаю , що там була зміна org-deadlineвід org-modeверсії 7 і 8, і я можу використовувати попередню версію в моїй установці. Поточній версії може знадобитися додатковий аргумент або щось подібне - якщо вам потрібна додаткова допомога, повідомте мене, і я працюю над нею протягом наступних кількох днів, коли це дозволить час.

Регекс, який я використовую, розглядає заголовки, має дві зірки і знаходитиметься зліва від буфера. Ваша власна установка, ймовірно, потребує модифікації регулярного виразу.

(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") )))))
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.