ORG-MODE - Memicu status TODO pada tanggal tertentu?


9

Daripada memeriksa file tickler atau kalender secara manual setiap pagi, bagaimana saya bisa membuat pemicu yang akan mengatur status suatu item menjadi TODO pada tanggal tertentu?

Jawaban:


5

Bukan jawaban langsung tetapi Anda bisa menggunakan dukungan Org untuk tenggat waktu dan penjadwalan sebagai gantinya.

Anda dapat membuat item TODO Anda dan memberi mereka tanggal yang dijadwalkan, yang dalam Org berarti tanggal yang Anda rencanakan untuk melakukan tugas - dan kapan itu akan mulai muncul dalam agenda Anda. (Jika Anda belum menggunakan tampilan agenda org, mereka layak diselidiki!)

Tergantung pada kebutuhan Anda, Anda juga dapat menetapkan tenggat waktu. Misalnya: buat TODO pada hari Jumat, jadwalkan untuk Rab berikut ketika Anda benar-benar ingin melihatnya; dan berikan batas waktu untuk hari Jumat berikutnya yang harus dipenuhi.


7

Berikut adalah sesuatu yang saya gunakan setiap pagi untuk menyisir semua todo saya dan mengubah tanggal menjadi hari ini jika sudah lewat waktu, dan mengubahnya dari aksi berikutnya menjadi aktif jika sudah jatuh tempo hari ini. Ini adalah solusi khusus untuk kalender saya sendiri yang telah saya gunakan selama satu tahun, sehingga tidak diragukan lagi akan membutuhkan penyesuaian pada bagian Anda sendiri. Ingatan saya adalah bahwa ada perubahan org-deadlinedari org-modeversi 7 dan 8, dan saya mungkin menggunakan versi sebelumnya di pengaturan saya. Versi saat ini mungkin memerlukan argumen tambahan atau sesuatu - jika Anda memerlukan bantuan tambahan, beri tahu saya dan saya akan mengerjakannya selama beberapa hari ke depan jika waktu mengizinkan.

Regex yang saya gunakan merenungkan judul memiliki dua bintang dan akan berada di flush-kiri buffer. Pengaturan Anda sendiri kemungkinan akan memerlukan modifikasi regex.

(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") )))))
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.