Function: icalendar-recur-next-interval
icalendar-recur-next-interval is a byte-compiled function defined in
icalendar-recur.el.gz.
Signature
(icalendar-recur-next-interval INTERVAL RRULE &optional VTIMEZONE)
Documentation
Return the next recurrence interval after INTERVAL.
Given a recurrence interval [LOW HIGH NEXT], returns the next interval
[NEXT HIGHER HIGHER-NEXT], where HIGHER and HIGHER-NEXT are determined
by the frequency and interval sizes of RRULE.
Source Code
;; Defined in /usr/src/emacs/lisp/calendar/icalendar-recur.el.gz
(defun icr:next-interval (interval rrule &optional vtimezone)
"Return the next recurrence interval after INTERVAL.
Given a recurrence interval [LOW HIGH NEXT], returns the next interval
[NEXT HIGHER HIGHER-NEXT], where HIGHER and HIGHER-NEXT are determined
by the frequency and interval sizes of RRULE."
(let* ((new-low (icr:interval-next interval))
(freq (ical:rrule-freq rrule))
(unit (cl-case freq
(YEARLY :year)
(MONTHLY :month)
(WEEKLY :week)
(DAILY :day)
(HOURLY :hour)
(MINUTELY :minute)
(SECONDLY :second)))
(intervalsize (ical:rrule-interval-size rrule))
(new-high (ical:date/time-add new-low unit 1 vtimezone))
(new-next
(when (< 1 intervalsize)
(ical:date/time-add new-low unit intervalsize vtimezone))))
(when vtimezone
(icr:tz-set-zone new-low vtimezone)
;; (icr:tz-set-zone new-high vtimezone)
;; (icr:tz-set-zone new-next vtimezone)
)
(icr:make-interval new-low new-high new-next)))