branch: externals-release/org commit fd8ddf2874ca00505aa096c6172ea750cd5e9eaa Author: Ihor Radchenko <yanta...@posteo.net> Commit: Ihor Radchenko <yanta...@posteo.net>
org-clock-sum: Gracefully skip invalid CLOCK lines * lisp/org-clock.el (org-clock-sum): Skip invalid CLOCK lines (malformed or with times missing). Display a warning. This brings back the old behavior with such CLOCK lines being silently skipped. Now, we also display a warning. Reported-by: Robert Nyman <rkny...@nymantechnology.com> Link: https://list.orgmode.org/orgmode/0e2ed754-bc71-4558-9c46-f17d73981...@nymantechnology.com/ --- lisp/org-clock.el | 47 +++++++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/lisp/org-clock.el b/lisp/org-clock.el index 5555bb1bc3..c6fd507b08 100644 --- a/lisp/org-clock.el +++ b/lisp/org-clock.el @@ -2048,28 +2048,31 @@ PROPNAME lets you set a custom text property instead of :org-clock-minutes." (cond ((and (eq element-type 'clock) (match-end 2)) ;; Two time stamps. - (let* ((timestamp (org-element-property :value element)) - (ts (float-time - (org-encode-time - (list 0 - (org-element-property :minute-start timestamp) - (org-element-property :hour-start timestamp) - (org-element-property :day-start timestamp) - (org-element-property :month-start timestamp) - (org-element-property :year-start timestamp) - nil -1 nil)))) - (te (float-time - (org-encode-time - (list 0 - (org-element-property :minute-end timestamp) - (org-element-property :hour-end timestamp) - (org-element-property :day-end timestamp) - (org-element-property :month-end timestamp) - (org-element-property :year-end timestamp) - nil -1 nil)))) - (dt (- (if tend (min te tend) te) - (if tstart (max ts tstart) ts)))) - (when (> dt 0) (cl-incf t1 (floor dt 60))))) + (condition-case nil + (let* ((timestamp (org-element-property :value element)) + (ts (float-time + (org-encode-time + (list 0 + (org-element-property :minute-start timestamp) + (org-element-property :hour-start timestamp) + (org-element-property :day-start timestamp) + (org-element-property :month-start timestamp) + (org-element-property :year-start timestamp) + nil -1 nil)))) + (te (float-time + (org-encode-time + (list 0 + (org-element-property :minute-end timestamp) + (org-element-property :hour-end timestamp) + (org-element-property :day-end timestamp) + (org-element-property :month-end timestamp) + (org-element-property :year-end timestamp) + nil -1 nil)))) + (dt (- (if tend (min te tend) te) + (if tstart (max ts tstart) ts)))) + (when (> dt 0) (cl-incf t1 (floor dt 60)))) + (error + (org-display-warning (format "org-clock-sum: Ignoring invalid %s" (org-current-line-string)))))) ((match-end 4) ;; A naked time. (setq t1 (+ t1 (string-to-number (match-string 5))