Patch 241 (http://patchwork.newartisans.com/patch/241/) is now "Accepted".
Maintainer comment: Hat to fix the commit message to contain propert ChangeLog. Please take a look for next time This relates to the following submission: http://mid.gmane.org/%3C87iq2zkqdg.fsf%40noorul.maa.corp.collab.net%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] Re: Bug: habit: better error handling required [TAG=7.01g] > Date: Wed, 25 Aug 2010 14:12:27 -0000 > From: Noorul Islam <noo...@noorul.com> > X-Patchwork-Id: 241 > Message-Id: <87iq2zkqdg....@noorul.maa.corp.collab.net> > To: paulusm <paul...@bigpond.com> > Cc: emacs-orgmode@gnu.org > > paulusm <paul...@bigpond.com> writes: > > > Hi org-mode people, > > > > Whilst playing with the "shaving" example from > > http://orgmode.org/manual/Tracking-your-habits.html I accidentally put a > > bad character in the SCHEDULED timestamp. > > > > Instead of: "SCHEDULED: <2010-08-26 Thu .+2d/4d>" > > I had: "SCHEDULED: <2010-08-26 Thu .+2nd/4d>" > > > > When trying to view my agenda, I was presented with a blank agenda and Emacs > > very quietly reported: > > "org-habit-duration-to-days: Wrong type argument: stringp, nil" > > which is not really helpful. > > > > Removing the bad character fixes the issue, and I can duplicate the error > > condition as described above. > > > > Perhaps some better error trapping could be done? > > > > > > Attached is the patch which catch this error and throws meaningful > message. > > lisp/org-habit.el : (org-habit-parse-todo) > - Find sr-days only if scheduled-repeat is non nil > - Used 4th element of the list returned by (org-heading-components) > as habit-entry > - Modified the error message to be more meaningful. > > Thanks and Regards > Noorul > > > diff --git a/lisp/org-habit.el b/lisp/org-habit.el > index 2fa352f..9071e2f 100644 > --- a/lisp/org-habit.el > +++ b/lisp/org-habit.el > @@ -149,15 +149,15 @@ This list represents a \"habit\" for the rest of this > module." > (assert (org-is-habit-p (point))) > (let* ((scheduled (org-get-scheduled-time (point))) > (scheduled-repeat (org-get-repeat org-scheduled-string)) > - (sr-days (org-habit-duration-to-days scheduled-repeat)) > (end (org-entry-end-position)) > - (habit-entry (org-no-properties (nth 5 (org-heading-components)))) > - closed-dates deadline dr-days) > + (habit-entry (org-no-properties (nth 4 (org-heading-components)))) > + closed-dates deadline dr-days sr-days) > (if scheduled > (setq scheduled (time-to-days scheduled)) > (error "Habit %s has no scheduled date" habit-entry)) > (unless scheduled-repeat > - (error "Habit %s has no scheduled repeat period" habit-entry)) > + (error "Habit '%s' has no scheduled repeat period or has an incorrect > one" habit-entry)) > + (setq sr-days (org-habit-duration-to-days scheduled-repeat)) > (unless (> sr-days 0) > (error "Habit %s scheduled repeat period is less than 1d" habit-entry)) > (when (string-match "/\\([0-9]+[dwmy]\\)" scheduled-repeat) > _______________________________________________ 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