我使用org-mode来管理重复任务的最后期限.例如,我可能会有以下内容:
* TODO My Weekly Task
DEADLINE <2013-08-10 Sat +1w>
Run Code Online (Sandbox Code Playgroud)
如果我将任务标记为DONE,则截止日期会自动按预期增加到下一周.但是,我也喜欢使用SCHEDULED时间来指示在一周内我想要实际执行该任务的时间,例如:
* TODO My Weekly Task
DEADLINE <2013-08-10 Sat +1w> SCHEDULED: <2013-08-08 Thu>
Run Code Online (Sandbox Code Playgroud)
这使任务显示在今天(星期四)的议程中.但是,当我标记任务DONE时,我最终得到以下结果:
* TODO My Weekly Task
DEADLINE <2013-08-17 Sat +1w> SCHEDULED: <2013-08-08 Thu>
Run Code Online (Sandbox Code Playgroud)
......而且任务仍然出现在今天的议程视图中,即使它已经完成.
对于具有重复DEADLINE的任务,是否有可能使Org-Mode清除非重复的SCHEDULED日期?
这是补丁,如果你想自己应用它.我将另一份副本发送到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"))
Run Code Online (Sandbox Code Playgroud)