From 8a4c65479b2f62cbffe32735c4afac5dd6a1ecae Mon Sep 17 00:00:00 2001 From: Karl Fogel Date: Wed, 29 Feb 2012 13:06:06 -0600 Subject: [PATCH] * lisp/org-agenda.el (org-agenda-highlight-todo): Handle the case of a heading that has a date but no todo keyword. This is a fix for the args-out-of-range bug discussed in these threads http://thread.gmane.org/gmane.emacs.orgmode/52621 http://thread.gmane.org/gmane.emacs.orgmode/52793 http://thread.gmane.org/gmane.emacs.orgmode/52786 http://thread.gmane.org/gmane.emacs.orgmode/52810 among Ilya Shlyakhter, James Atwood, Nick Dokos, and myself. The subject headers are: bug report: agenda timeline crashes Bug report: weekly agenda and blank, timestamped headers org-agenda-list (from git) giving "args-out-of-range error" --- lisp/org-agenda.el | 12 +++++++++++- 1 files changed, 11 insertions(+), 1 deletions(-) diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index 98a2cc0..ac1b5b1 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -5889,8 +5889,18 @@ could bind the variable in the options section of a custom command.") (let ((pl (text-property-any 0 (length x) 'org-heading t x))) (setq re (get-text-property 0 'org-todo-regexp x)) (when (and re + ;; Test `pl' because if there's no heading content, + ;; there's no point matching to highlight. Note + ;; that if we didn't test `pl' first, and there + ;; happened to be no keyword from `org-todo-regexp' + ;; on this heading line, then the `equal' comparison + ;; afterwards would spuriously succeed in the case + ;; where `pl' is nil -- causing an args-out-of-range + ;; error when we try to add text properties to text + ;; that isn't there. + pl (equal (string-match (concat "\\(\\.*\\)" re "\\( +\\)") - x (or pl 0)) pl)) + x pl) pl)) (add-text-properties (or (match-end 1) (match-end 0)) (match-end 0) (list 'face (org-get-todo-face (match-string 2 x))) -- 1.7.9