<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs/tests/test-integration-calendar-sync-exdate.el, branch main</title>
<subtitle>My Emacs configuration
</subtitle>
<id>https://git.cjennings.net/dotemacs/atom?h=main</id>
<link rel='self' href='https://git.cjennings.net/dotemacs/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/'/>
<updated>2026-02-03T14:09:30+00:00</updated>
<entry>
<title>feat(calendar-sync): add EXDATE support for excluded recurring event dates</title>
<updated>2026-02-03T14:09:30+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-03T14:09:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=ef8f13751967d5b577cb9d98b87870daee9f9940'/>
<id>urn:sha1:ef8f13751967d5b577cb9d98b87870daee9f9940</id>
<content type='text'>
When someone deletes a single instance of a recurring meeting in Google
Calendar, the calendar exports an EXDATE property marking that date as
excluded. Previously, calendar-sync expanded the RRULE without filtering
out these excluded dates, causing deleted instances to appear in org output.

New functions:
- calendar-sync--get-exdates: Extract all EXDATE values from event
- calendar-sync--get-exdate-line: Get full EXDATE line with parameters
- calendar-sync--parse-exdate: Parse EXDATE into datetime list
- calendar-sync--collect-exdates: Collect excluded dates with TZ conversion
- calendar-sync--exdate-matches-p: Check if occurrence matches an EXDATE
- calendar-sync--filter-exdates: Filter out excluded dates from occurrences

Modified calendar-sync--expand-recurring-event to collect and filter
EXDATEs after RRULE expansion.

Includes 47 new tests covering extraction, parsing, collection, filtering,
and integration with RECURRENCE-ID exceptions.
</content>
</entry>
</feed>
