ORG-MODE - Trạng thái kích hoạt TODO vào một ngày nhất định?


9

Thay vì kiểm tra thủ công tệp hoặc lịch tickler mỗi sáng, làm cách nào tôi có thể tạo trình kích hoạt sẽ đặt trạng thái của một mục thành TODO vào một ngày nhất định?

Câu trả lời:


5

Không phải là một câu trả lời trực tiếp nhưng bạn có thể sử dụng hỗ trợ của Org cho thời hạn và lên lịch thay thế.

Bạn có thể tạo các mục TODO của mình và cung cấp cho chúng một ngày đã lên lịch, trong Org có nghĩa là ngày bạn dự định thực hiện nhiệm vụ - và khi nào nó sẽ bắt đầu hiển thị trong chương trình nghị sự của bạn. (Nếu bạn chưa sử dụng chế độ xem chương trình nghị sự thì chúng đáng để điều tra!)

Tùy thuộc vào nhu cầu của bạn, bạn cũng có thể chỉ định thời hạn. Ví dụ: tạo TODO vào thứ Sáu, lên lịch cho Thứ Tư sau khi bạn thực sự muốn xem nó; và đưa ra thời hạn cho thứ Sáu tiếp theo mà nó phải hoàn thành.


7

Đây là thứ tôi sử dụng mỗi sáng để kết thúc tất cả những việc cần làm và thay đổi ngày thành hôm nay nếu quá hạn và thay đổi từ hành động tiếp theo sang hoạt động nếu đến hạn vào hôm nay. Đó là một giải pháp tùy chỉnh cho lịch của riêng tôi mà tôi đã sử dụng trong một năm, do đó chắc chắn sẽ cần một số tùy chỉnh trên phần của riêng bạn. Hồi ức của tôi là có một sự thay đổi org-deadlinetừ org-modephiên bản 7 và 8, và tôi có thể đang sử dụng một phiên bản trước đó trong thiết lập của mình. Phiên bản hiện tại có thể cần một đối số bổ sung hoặc một cái gì đó - nếu bạn cần trợ giúp thêm, hãy cho tôi biết và tôi sẽ làm việc với nó trong vài ngày tới khi thời gian cho phép.

Regex mà tôi sử dụng dự tính các tiêu đề có hai ngôi sao và sẽ ở phía bên trái của bộ đệm. Thiết lập của riêng bạn có thể sẽ yêu cầu sửa đổi 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") )))))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.