org-habit: Extend tracking to done notes

* lisp/org-habit.el (org-habit-parse-todo): Also find timestamps when
  `org-log-done' is `note'.

Reported-by: Andrew Francis Swann <swann@math.au.dk>
This commit is contained in:
Nicolas Goaziou 2015-02-20 10:45:59 +01:00
parent 1616e08448
commit de51e1aef6

View file

@ -200,11 +200,27 @@ This list represents a \"habit\" for the rest of this module."
(count 0))
(unless reversed (goto-char end))
(while (and (< count maxdays)
(funcall search (format "- State \"%s\".*\\[\\([^]]+\\)\\]"
(regexp-opt org-done-keywords))
(funcall search
(concat
(format "- State \"%s\".*\\[\\([^]]+\\)\\]"
(regexp-opt org-done-keywords))
"\\|"
(org-replace-escapes
(regexp-quote
(cdr (assq 'done org-log-note-headings)))
`(("%d" . ,org-ts-regexp-inactive)
("%D" . ,org-ts-regexp)
("%s" . "\"\\S-+\"")
("%S" . "\"\\S-+\"")
("%t" . ,org-ts-regexp-inactive)
("%T" . ,org-ts-regexp)
("%u" . ".*?")
("%U" . ".*?"))))
limit t))
(push (time-to-days
(org-time-string-to-time (match-string-no-properties 1)))
(org-time-string-to-time
(or (org-match-string-no-properties 1)
(org-match-string-no-properties 2))))
closed-dates)
(setq count (1+ count))))
(list scheduled sr-days deadline dr-days closed-dates))))