From 78f752346a080af9f6930de4582146b2d2eb4fe6 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Tue, 3 Feb 2026 07:39:50 -0600 Subject: 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. --- init.el | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'init.el') diff --git a/init.el b/init.el index 4a6ab360..00902206 100644 --- a/init.el +++ b/init.el @@ -122,7 +122,10 @@ :file ,gcal-file) (:name "proton" :url "***REMOVED***" - :file ,pcal-file))) + :file ,pcal-file) + (:name "deepsat" + :url "***REMOVED***" + :file ,dcal-file))) (require 'calendar-sync) (require 'org-refile-config) ;; refile org-branches -- cgit v1.2.3