diff options
| author | Craig Jennings <c@cjennings.net> | 2026-02-03 07:39:50 -0600 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-02-03 07:39:50 -0600 |
| commit | 84a02097bf842e96f7f4dd4e4ac39e78faf64989 (patch) | |
| tree | a3a87b6b3d75ae4179924a62c318b05fa0bd0751 /init.el | |
| parent | 089a4313660cb8af1eca3829ffbdbae70f72333a (diff) | |
feat(calendar-sync): add RECURRENCE-ID exception handling for recurring events
Handle rescheduled instances of recurring calendar events by processing
RECURRENCE-ID properties from ICS files. When someone reschedules a single
instance of a recurring meeting in Google Calendar, the calendar-sync module
now shows the rescheduled time instead of the original RRULE time.
New functions:
- calendar-sync--get-recurrence-id: Extract RECURRENCE-ID from event
- calendar-sync--get-recurrence-id-line: Get full line with TZID params
- calendar-sync--parse-recurrence-id: Parse into (year month day hour minute)
- calendar-sync--collect-recurrence-exceptions: Collect all exceptions by UID
- calendar-sync--occurrence-matches-exception-p: Match occurrences to exceptions
- calendar-sync--apply-single-exception: Apply exception data to occurrence
- calendar-sync--apply-recurrence-exceptions: Apply all exceptions to occurrences
Also adds DeepSat calendar configuration (dcal-file) to user-constants,
init.el, and org-agenda-config.
48 unit and integration tests added covering normal, boundary, and error cases.
Diffstat (limited to 'init.el')
| -rw-r--r-- | init.el | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -122,7 +122,10 @@ :file ,gcal-file) (:name "proton" :url "https://calendar.proton.me/api/calendar/v1/url/MpLtuwsUNoygyA_60GvJE5cz0hbREbrAPBEJoWDRpFEstnmzmEMDb7sjLzkY8kbkF10A7Be3wGKB1-vqaLf-pw==/calendar.ics?CacheKey=LrB9NG5Vfqp5p2sy90H13g%3D%3D&PassphraseKey=sURqFfACPM21d6AXSeaEXYCruimvSb8t0ce1vuxRAXk%3D" - :file ,pcal-file))) + :file ,pcal-file) + (:name "deepsat" + :url "https://calendar.google.com/calendar/ical/craig.jennings%40deepsat.com/private-f0250a2c6752a5ca71d7b0636587a6d5/basic.ics" + :file ,dcal-file))) (require 'calendar-sync) (require 'org-refile-config) ;; refile org-branches |
