emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orgmode] [PATCH] Optimize calls to org-is-habit-p


From: Carsten Dominik
Subject: Re: [Orgmode] [PATCH] Optimize calls to org-is-habit-p
Date: Sun, 12 Dec 2010 22:26:55 +0100

Applied, thanks.

- Carsten

On Dec 12, 2010, at 9:16 PM, Matt Lundin wrote:


* lisp/org-agenda.el: (org-agenda-get-scheduled) Don't call
 org-is-habit-p until after checking for for
 org-agenda-skip-scheduled-if-done.

Org-agenda-get-scheduled was calling org-is-habit-p on every scheduled
item (including DONE items when org-agenda-skip-scheduled-if-done was
set to t). Tweaking the timing of the test shaves some time off of
agenda construction when org-habit is loaded and
org-agenda-skip-scheduled-if-done is t.

Before:  org-is-habit-p  478         0.2434439999  0.0005092970
After:   org-is-habit-p  81          0.057944      0.0007153580
---
lisp/org-agenda.el |   10 ++++++----
1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index fb26ee9..dea9d9d 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -4968,12 +4968,14 @@ FRACTION is what fraction of the head- warning time has passed."
          (save-excursion
            (setq todo-state (org-get-todo-state))
            (setq donep (member todo-state org-done-keywords))
-           (setq habitp (and (functionp 'org-is-habit-p)
-                             (org-is-habit-p)))
            (if (and donep
-                    (or habitp org-agenda-skip-scheduled-if-done
-                        (not (= diff 0))))
+                    (or org-agenda-skip-scheduled-if-done
+                        (not (= diff 0))
+                        (and (functionp 'org-is-habit-p)
+                             (org-is-habit-p))))
                (setq txt nil)
+             (setq habitp (and (functionp 'org-is-habit-p)
+                               (org-is-habit-p)))
              (setq category (org-get-category))
              (if (not (re-search-backward "^\\*+[ \t]+" nil t))
                  (setq txt org-agenda-no-heading-message)
--
1.7.3.3


_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
address@hidden
http://lists.gnu.org/mailman/listinfo/emacs-orgmode




reply via email to

[Prev in Thread] Current Thread [Next in Thread]