From 54250d958f2829ff0f44a223a1481b6ec55a6d91 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Mon, 29 Jun 2026 05:23:56 -0400 Subject: refactor: split calendar-sync.el into layered modules MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Break the 1724-line calendar-sync.el into a thin public face plus four layered libraries, moving every function verbatim so behavior and public names are unchanged: - calendar-sync-ics.el — base parsing: RFC 5545 text cleaning, VEVENT property extraction, attendee/organizer/URL parsing, timezone and timestamp conversion, date arithmetic, single-event parsing. Depends on neither of the other new modules. - calendar-sync-recurrence.el — RRULE/EXDATE/RECURRENCE-ID expansion. - calendar-sync-org.el — Org rendering and atomic file output. - calendar-sync-source.el — sync state and persistence, async .ics fetch, the batch conversion worker, and the Google Calendar API path. calendar-sync.el keeps configuration, the parse orchestrator, sync dispatch, the user commands, the timer, and the C-; g keymap, and requires the four layers. Each layer forward-declares the config defvars it reads, so no layer requires the top module back. The batch worker loads the whole graph, so source forward-declares the two functions it calls there. Every public name is preserved, so all 574 existing calendar-sync tests pass unchanged through the require chain. The four new modules carry the load-graph and package headers and join the header-contract allowlist. Claude-Session: https://claude.ai/code/session_014fyKMTTqLrZpL3rDF3dYc3 --- tests/test-init-module-headers.el | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'tests/test-init-module-headers.el') diff --git a/tests/test-init-module-headers.el b/tests/test-init-module-headers.el index c01f19368..97e6aeb13 100644 --- a/tests/test-init-module-headers.el +++ b/tests/test-init-module-headers.el @@ -99,6 +99,10 @@ "ai-term" "browser-config" "calendar-sync" + "calendar-sync-ics" + "calendar-sync-recurrence" + "calendar-sync-org" + "calendar-sync-source" "calibredb-epub-config" "chrono-tools" "dirvish-config" -- cgit v1.2.3