Patch 558 (http://patchwork.newartisans.com/patch/558/) is now "Accepted".
Maintainer comment: No comment This relates to the following submission: http://mid.gmane.org/%3C87sjwgn42k.fsf%40fastmail.fm%3E Here is the original message containing the patch: > Content-Type: text/plain; charset="utf-8" > MIME-Version: 1.0 > Content-Transfer-Encoding: 7bit > Subject: [Orgmode] Optimize org-habit-parse-todo > Date: Wed, 26 Jan 2011 01:03:47 -0000 > From: Matt Lundin <m...@imapmail.org> > X-Patchwork-Id: 558 > Message-Id: <87sjwgn42k....@fastmail.fm> > To: Carsten Dominik <carsten.domi...@gmail.com> > Cc: Org Mode <emacs-orgmode@gnu.org> > > * lisp/org-habit.el: (org-habit-parse-todo) Don't parse more days than > needed. > > When constructing a consistency graph, org-habit now stops searching > for timestamps when the number of matches exceeds the span of time > displayed in the graph. This can lead to a significant speedup in > agenda construction, especially for entries with many logbook entries. > Previously, org-habit would parse all logbook timestamps, even if they > numbered in the hundreds. > > --- > lisp/org-habit.el | 16 ++++++++++++---- > 1 files changed, 12 insertions(+), 4 deletions(-) > > diff --git a/lisp/org-habit.el b/lisp/org-habit.el > index b174a1f..5d2514a 100644 > --- a/lisp/org-habit.el > +++ b/lisp/org-habit.el > @@ -170,10 +170,18 @@ This list represents a \"habit\" for the rest of this > module." > habit-entry scheduled-repeat)) > (setq deadline (+ scheduled (- dr-days sr-days)))) > (org-back-to-heading t) > - (while (re-search-forward "- State \"DONE\".*\\[\\([^]]+\\)\\]" end t) > - (push (time-to-days > - (org-time-string-to-time (match-string-no-properties 1))) > - closed-dates)) > + (let* ((maxdays (+ org-habit-preceding-days org-habit-following-days)) > + (reversed org-log-states-order-reversed) > + (search (if reversed 're-search-forward 're-search-backward)) > + (limit (if reversed end (point))) > + (count 0)) > + (unless reversed (goto-char end)) > + (while (and (< count maxdays) > + (funcall search "- State \"DONE\".*\\[\\([^]]+\\)\\]" limit > t)) > + (push (time-to-days > + (org-time-string-to-time (match-string-no-properties 1))) > + closed-dates) > + (setq count (1+ count)))) > (list scheduled sr-days deadline dr-days closed-dates)))) > > (defsubst org-habit-scheduled (habit) > _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode