Thanks for the patch. No Wayman writes:
> The regular expression in `org-get-cursor-date' assumes the time > grid string will have two digits in the hour portion of the time > strng. > However, the grid time string does not always have two digits. For > example: > > " 8:00......" Makes sense. IMO it'd be nice to see something along the lines of this explanation in the commit message itself. > The attached patch accounts for this and uses the rx macro to > communicate the intent of the regular expression more clearly. > > From 4724b4cc5e9600da60b465c4c2f1968b75c7c31d Mon Sep 17 00:00:00 2001 > From: Nicholas Vollmer <iarchivedmywholel...@gmail.com> > Date: Sun, 2 Aug 2020 14:42:34 -0400 > Subject: [PATCH] org.el: (org-get-cursor-date): Fix regular expression > > * lisp/org.el Fix regular expression. The function name is missing here: * lisp/org.el (org-get-cursor-date): ... > --- > lisp/org.el | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/lisp/org.el b/lisp/org.el > index ee8be256d..37136cc48 100644 > --- a/lisp/org.el > +++ b/lisp/org.el > @@ -18728,10 +18728,11 @@ If WITH-TIME is non-nil, returns the time of the > event at point (in > the agenda) or the current time of the day; otherwise returns the > earliest time on the cursor date that Org treats as that date > (bearing in mind `org-extend-today-until')." > - (let (date day defd tp hod mod) > + (let ((hhmm-regexp (rx (seq (group (** 1 2 digit)) ":" (group (= 2 > digit))))) > + date day defd tp hod mod) > (when with-time > (setq tp (get-text-property (point) 'time)) > - (when (and tp (string-match "\\([0-9][0-9]\\):\\([0-9][0-9]\\)" tp)) > + (when (and tp (string-match hhmm-regexp tp)) > (setq hod (string-to-number (match-string 1 tp)) > mod (string-to-number (match-string 2 tp)))) > (or tp (let ((now (decode-time))) To my eyes, the new variable doesn't add any clarity over keeping it inline. Also, I very much like rx and I'm okay if you want to stick with it here, but in this particular case I find it less readable than \\([0-9]?[0-9]\\):\\([0-9][0-9]\\) or the stricter \\([0-2]?[0-9]\\):\\([0-5][0-9]\\) If you do keep the rx change, the outer seq is superfluous: (equal (rx (seq (group (** 1 2 digit)) ":" (group (= 2 digit)))) (rx (group (** 1 2 digit)) ":" (group (= 2 digit)))) ;; => t