emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Problem with hourly repeater


From: Nicolas Goaziou
Subject: Re: [O] Problem with hourly repeater
Date: Wed, 10 Oct 2012 16:14:38 +0200

Hello,

Memnon Anon <address@hidden> writes:

> I am trying the hourly repeaters and see a problem.

[...]

> Anyone else see this?

Yes, I confirm the bug.

Would you mind testing the following patch and tell me if it fixes the
problem without adding unwanted side-effects?

Thank you.


Regards,

-- 
Nicolas Goaziou
>From 3576891ba04992328576c1ea84a8958e4c0fa16c Mon Sep 17 00:00:00 2001
From: Nicolas Goaziou <address@hidden>
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


reply via email to

[Prev in Thread] Current Thread [Next in Thread]