emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Karl Fogel <kfogel@red-bean.com>
To: nicholas.dokos@hp.com
Cc: emacs-orgmode@gnu.org
Subject: [PATCH] org-agenda-list (from git) giving "args-out-of-range error"
Date: Wed, 29 Feb 2012 13:12:32 -0600	[thread overview]
Message-ID: <87ehtd78tb.fsf_-_@floss.red-bean.com> (raw)
In-Reply-To: <8636.1330468554@alphaville> (Nick Dokos's message of "Tue, 28 Feb 2012 17:35:54 -0500")

[-- Attachment #1: Type: text/plain, Size: 999 bytes --]

Nick Dokos <nicholas.dokos@hp.com> writes:
>There have been a couple of recent reports on this problem (headlines
>with just a timestamp cause this error) in addition to the ones you
>found:
>
>    http://thread.gmane.org/gmane.emacs.orgmode/52621
>    http://thread.gmane.org/gmane.emacs.orgmode/52786
>
>The first one contains a diagnosis and a (possibly wrong) suggested fix.

Thank you, Nick.  I eventually found the same cause, by doing a
binary-search reduction of the problematic .org file until I knew
exactly which headline was the source of the problem.  It was a
second-level headline with a date but no content...

  ** <2012-02-27 Mon>

...as described in James Atwood's mail (the second one you list above).

It's relevant that the line ends immediately after the ">".  If there is
even one space after the ">", then the bug does not reproduce.  This
makes sense, given the code.  I have a tentative patch, which is
attached.  What's the typical way to submit such things for review?


[-- Attachment #2: Tentative fix for bug whereby a heading that is empty except for a datestamp causes an args-out-of-range error when an agenda is being generated. --]
[-- Type: text/plain, Size: 2016 bytes --]

From 8a4c65479b2f62cbffe32735c4afac5dd6a1ecae Mon Sep 17 00:00:00 2001
From: Karl Fogel <kfogel@red-bean.com>
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


  reply	other threads:[~2012-02-29 19:12 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-28 22:08 org-agenda-list (from git) giving "args-out-of-range error" Karl Fogel
2012-02-28 22:35 ` Nick Dokos
2012-02-29 19:12   ` Karl Fogel [this message]
2012-02-29 19:28     ` [PATCH] " Nick Dokos
2012-02-29 19:45       ` Karl Fogel
2012-03-04 20:01         ` David Maus
2012-03-04 20:48           ` Karl Fogel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87ehtd78tb.fsf_-_@floss.red-bean.com \
    --to=kfogel@red-bean.com \
    --cc=emacs-orgmode@gnu.org \
    --cc=nicholas.dokos@hp.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).