From mboxrd@z Thu Jan 1 00:00:00 1970 From: Carsten Dominik Subject: [Accepted] Re: Bug: habit: better error handling required [TAG=7.01g] Date: Wed, 25 Aug 2010 12:17:57 +0200 (CEST) Message-ID: <20100825101757.49A4F657D53@u016822.science.uva.nl> References: <87iq2zkqdg.fsf@noorul.maa.corp.collab.net> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from [140.186.70.92] (port=33513 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OoD3R-00046G-Ha for emacs-orgmode@gnu.org; Wed, 25 Aug 2010 06:18:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OoD3Q-0007L2-1K for emacs-orgmode@gnu.org; Wed, 25 Aug 2010 06:18:01 -0400 Received: from u016822.science.uva.nl ([146.50.39.34]:49265) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OoD3P-0007KP-Qp for emacs-orgmode@gnu.org; Wed, 25 Aug 2010 06:18:00 -0400 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org 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 > X-Patchwork-Id: 241 > Message-Id: <87iq2zkqdg.fsf@noorul.maa.corp.collab.net> > To: paulusm > Cc: emacs-orgmode@gnu.org > > paulusm 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) >