From c26f8d2cc508fdee5ec8d9b48d7391a180d6298d Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Tue, 11 May 2021 09:39:08 +0200 Subject: [PATCH] agenda: Fix org-duration-to-minutes error (take 2) * lisp/org.el (org-stamp-time-of-day-regexp): Limit match group 2 to first time. * lisp/org-agenda.el (org-agenda-format-item): Compute duration before formatting time with `org-get-time-of-day'. --- lisp/org-agenda.el | 11 ++++------- lisp/org.el | 2 +- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index b91bf3ad8..205225a49 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -6656,10 +6656,6 @@ Any match of REMOVE-RE will be removed from TXT." (= (match-beginning 0) 0) t)) (setq txt (replace-match "" nil nil txt)))) - ;; Normalize the time(s) to 24 hour - (when s1 (setq s1 (org-get-time-of-day s1 'string t))) - (when s2 (setq s2 (org-get-time-of-day s2 'string t))) - ;; Try to set s2 if s1 and ;; `org-agenda-default-appointment-duration' are set (when (and s1 (not s2) org-agenda-default-appointment-duration) @@ -6668,12 +6664,13 @@ Any match of REMOVE-RE will be removed from TXT." (+ (org-duration-to-minutes s1 t) org-agenda-default-appointment-duration) nil t))) - ;; Compute the duration (when s2 (setq duration (- (org-duration-to-minutes s2) - (org-duration-to-minutes s1))))) - + (org-duration-to-minutes s1)))) + ;; Normalize the time(s) to 24 hour + (when s1 (setq s1 (org-get-time-of-day s1 'string t))) + (when s2 (setq s2 (org-get-time-of-day s2 'string t)))) (when (string-match org-tag-group-re txt) ;; Tags are in the string (if (or (eq org-agenda-remove-tags t) diff --git a/lisp/org.el b/lisp/org.el index 6dbf33abc..268ce74f7 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -4106,7 +4106,7 @@ groups carry important information: (defconst org-stamp-time-of-day-regexp (concat "<\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} +\\sw+ +\\)" - "\\([012][0-9]:[0-5][0-9]\\(-\\([012][0-9]:[0-5][0-9]\\)\\)?[^\n\r>]*?\\)>" + "\\([012][0-9]:[0-5][0-9]\\)\\(-\\([012][0-9]:[0-5][0-9]\\)\\)?[^\n\r>]*?>" "\\(--?" "<\\1\\([012][0-9]:[0-5][0-9]\\)>\\)?") "Regular expression to match a timestamp time or time range.