From 3576891ba04992328576c1ea84a8958e4c0fa16c Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Wed, 10 Oct 2012 16:11:41 +0200 Subject: [PATCH] Fix bug related to agenda bulding with hour repeaters * lisp/org.el: Make `org-closest-date' aware of hours repeaters. --- lisp/org.el | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lisp/org.el b/lisp/org.el index 59683bc..c69f0f3 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -16157,7 +16157,12 @@ When PREFER is `future', return a date that is either CURRENT or future. When SHOW-ALL is nil, only return the current occurrence of a time stamp." ;; Make the proper lists from the dates (catch 'exit - (let ((a1 '(("d" . day) ("w" . week) ("m" . month) ("y" . year))) + (let ((a1 '(("h" . hour) + ("d" . day) + ("w" . week) + ("m" . month) + ("y" . year))) + (shour (nth 2 (org-parse-time-string start))) dn dw sday cday n1 n2 n0 d m y y1 y2 date1 date2 nmonths nm ny m2) @@ -16177,6 +16182,11 @@ When SHOW-ALL is nil, only return the current occurrence of a time stamp." (error "Invalid change specifier: %s" change)) (if (eq dw 'week) (setq dw 'day dn (* 7 dn))) (cond + ((eq dw 'hour) + (let ((missing-hours (mod (- (* 24 (- cday sday)) shour) dn))) + (setq n1 (if (zerop missing-hours) cday + (- cday (1+ (floor (/ missing-hours 24))))) + n2 (+ cday (floor (/ (- dn missing-hours) 24)))))) ((eq dw 'day) (setq n1 (+ sday (* dn (floor (/ (- cday sday) dn)))) n2 (+ n1 dn))) -- 1.7.12.2