4

我使用 org-mode 来管理重复任务的一些截止日期。例如,我可能有以下内容:

* TODO My Weekly Task
  DEADLINE <2013-08-10 Sat +1w>

如果我将任务标记为 DONE,则截止日期会按预期自动增加到下周。但是,我也喜欢使用 SCHEDULED 时间来指示我想在一周内实际执行该任务的时间,例如:

* TODO My Weekly Task
  DEADLINE <2013-08-10 Sat +1w> SCHEDULED: <2013-08-08 Thu>

这使得任务出现在今天(星期四)的议程中。但是,当我将任务标记为 DONE 时,我会得到以下结果:

* TODO My Weekly Task
  DEADLINE <2013-08-17 Sat +1w> SCHEDULED: <2013-08-08 Thu>

...并且任务仍然出现在今天的议程视图中,即使它已经完成。

对于具有重复 DEADLINE 的任务,是否有可能让 Org-Mode 清除非重复的 SCHEDULED 日期?

4

1 回答 1

5

这是补丁,如果您想自己应用它。我将向 org-mode 邮件列表发送另一份副本。

--- a/lisp/org.el
+++ b/lisp/org.el
@@ -12835,7 +12835,8 @@ This function is run automatically after each state change to a DONE state."
    (setq type (if (match-end 1) org-scheduled-string
             (if (match-end 3) org-deadline-string "Plain:"))
          ts (match-string (if (match-end 2) 2 (if (match-end 4) 4 0))))
-   (when (string-match "\\([.+]\\)?\\(\\+[0-9]+\\)\\([hdwmy]\\)" ts)
+   (if (not (string-match "\\([.+]\\)?\\(\\+[0-9]+\\)\\([hdwmy]\\)" ts))
+       (org-remove-timestamp-with-keyword org-scheduled-string)
      (setq n (string-to-number (match-string 2 ts))
        what (match-string 3 ts))
      (if (equal what "w") (setq n (* n 7) what "d"))
于 2013-08-08T12:15:27.663 回答