org-caldav: explicit save-directory ~/org/ + broad error handler

Reverted to cf4b486 (last known working state), then added:

1. org-caldav-save-directory explicitly set to ~/org/
   State files: .org-caldav-<md5hash>.el (one per calendar URL+ID).
   Delete them to reset sync state.

2. defadvice around org-caldav-update-events-in-org: condition-case
   catches any error (nil fields, retrieval failures) so sync state
   is saved and remaining calendars continue.

Removed: Fix #1 (@encoding), Fix #3 (set-sequence-number), @google.com
UID ignore logic — all 775 @google.com events were deleted from server
(backup at daneel:~/caldav-backup-2026-02-25.tar.gz).
This commit is contained in:
2026-02-25 10:28:43 +01:00
parent cf4b4862cf
commit f411b7c825

View File

@@ -1775,6 +1775,21 @@ current frame."
(setq org-caldav-delete-org-entries 'never) (setq org-caldav-delete-org-entries 'never)
(setq org-caldav-delete-calendar-entries 'never) (setq org-caldav-delete-calendar-entries 'never)
;; State files: explicitně do ~/org/ (default = org-directory, ale radši jistota)
;; Soubory se jmenují .org-caldav-<md5hash>.el — jeden per calendar URL+ID combo.
;; Smazáním těchto souborů se resetuje sync state (org-caldav začne od nuly).
(setq org-caldav-save-directory "~/org/")
;; Broad error handler: catch any error during cal->org event update
;; so sync state is saved even if individual events fail (nil fields, etc.)
(defadvice org-caldav-update-events-in-org (around skip-failed-events activate)
"Catch errors during cal->org sync; log and return so sync state is saved."
(condition-case err
ad-do-it
(error
(message "org-caldav: update-events-in-org error (sync continues): %S" err)
(org-caldav-debug-print 1 (format "update-events-in-org error: %S" err)))))
(defun my/org-caldav-sync () (defun my/org-caldav-sync ()
"Sync 3 CalDAV kalendářů: "Sync 3 CalDAV kalendářů:
1. Osobni-Suky (default): stahuj vše → caldav-suky.org, nahraj jen calendar_outbox.org 1. Osobni-Suky (default): stahuj vše → caldav-suky.org, nahraj jen calendar_outbox.org