Fix bug related to agenda bulding with hour repeaters
* lisp/org.el: Make `org-closest-date' aware of hours repeaters.
This commit is contained in:
parent
8f96754932
commit
92199873c5
14
lisp/org.el
14
lisp/org.el
|
@ -16156,7 +16156,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."
|
When SHOW-ALL is nil, only return the current occurrence of a time stamp."
|
||||||
;; Make the proper lists from the dates
|
;; Make the proper lists from the dates
|
||||||
(catch 'exit
|
(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
|
dn dw sday cday n1 n2 n0
|
||||||
d m y y1 y2 date1 date2 nmonths nm ny m2)
|
d m y y1 y2 date1 date2 nmonths nm ny m2)
|
||||||
|
|
||||||
|
@ -16176,6 +16181,13 @@ When SHOW-ALL is nil, only return the current occurrence of a time stamp."
|
||||||
(error "Invalid change specifier: %s" change))
|
(error "Invalid change specifier: %s" change))
|
||||||
(if (eq dw 'week) (setq dw 'day dn (* 7 dn)))
|
(if (eq dw 'week) (setq dw 'day dn (* 7 dn)))
|
||||||
(cond
|
(cond
|
||||||
|
((eq dw 'hour)
|
||||||
|
(let ((missing-hours
|
||||||
|
(mod (+ (- (* 24 (- cday sday)) shour) org-extend-today-until)
|
||||||
|
dn)))
|
||||||
|
(setq n1 (if (zerop missing-hours) cday
|
||||||
|
(- cday (1+ (floor (/ missing-hours 24)))))
|
||||||
|
n2 (+ cday (floor (/ (- dn missing-hours) 24))))))
|
||||||
((eq dw 'day)
|
((eq dw 'day)
|
||||||
(setq n1 (+ sday (* dn (floor (/ (- cday sday) dn))))
|
(setq n1 (+ sday (* dn (floor (/ (- cday sday) dn))))
|
||||||
n2 (+ n1 dn)))
|
n2 (+ n1 dn)))
|
||||||
|
|
Loading…
Reference in New Issue