fix org-caldav: odstraň url-basic-auth-storage pre-registration (broke Emacs 31), spoléhej na ~/.authinfo + native url-auth

This commit is contained in:
2026-02-24 21:02:01 +01:00
parent d45b1590ee
commit c893960944

View File

@@ -1733,49 +1733,22 @@ current frame."
;;; --- Tier 1: High impact --- ;;; --- Tier 1: High impact ---
;; org-caldav — CalDAV sync for org (Baikal, Basic auth over HTTPS) ;; org-caldav — CalDAV sync for org (Baikal, Basic auth over HTTPS)
;; Add to ~/.authinfo (chmod 600): ;; Credentials via ~/.authinfo (chmod 600):
;; machine cal.apps.sukany.cz login martin password YOUR_PASSWORD ;; machine cal.apps.sukany.cz login martin password YOUR_PASSWORD
(use-package! org-caldav (use-package! org-caldav
:commands my/org-caldav-sync :commands my/org-caldav-sync
:config :config
(defun my/caldav-preregister-basic-auth ()
"Read CalDAV credentials from auth-source and pre-register for Basic auth.
This bypasses auth-source retry issues during CalDAV requests.
Requires ~/.authinfo entry:
machine cal.apps.sukany.cz login martin password <pass>"
(require 'url-auth)
(require 'auth-source)
(let* ((entry (car (auth-source-search
:host "cal.apps.sukany.cz"
:user "martin"
:max 1
:require '(:user :secret))))
(user (when entry (plist-get entry :user)))
(secret (when entry (plist-get entry :secret)))
(pass (when secret (if (functionp secret) (funcall secret) secret))))
(if (and user pass)
(progn
;; Pre-register in url-basic-auth-storage: (server realm user pass)
(setq url-basic-auth-storage
(cl-remove "cal.apps.sukany.cz" url-basic-auth-storage
:key #'car :test #'equal))
(push (list "cal.apps.sukany.cz" "BaikalDAV" user pass)
url-basic-auth-storage)
t)
(user-error "CalDAV: no credentials found.\nAdd to ~/.authinfo:\n machine cal.apps.sukany.cz login martin password <pass>"))))
(defun my/org-caldav-sync ()
"Sync org-caldav: personal calendar (twoway) + family calendar (read-only)."
(interactive)
(my/caldav-preregister-basic-auth)
;; Personal calendar — twoway, new events created here
(setq org-caldav-url "https://cal.apps.sukany.cz/dav.php/calendars/martin" (setq org-caldav-url "https://cal.apps.sukany.cz/dav.php/calendars/martin"
org-caldav-calendar-id "default" org-caldav-calendar-id "default"
org-caldav-inbox "~/org/caldav-inbox.org" org-caldav-inbox "~/org/caldav-inbox.org"
org-caldav-files '("~/org/personal.org" "~/org/work.org") org-caldav-files '("~/org/personal.org" "~/org/work.org")
org-caldav-sync-direction 'twoway) org-caldav-sync-direction 'twoway)
(org-caldav-sync) (defun my/org-caldav-sync ()
(message "CalDAV sync complete: personal (twoway)"))) "Sync org-caldav — personal calendar (twoway).
Credentials must be in ~/.authinfo:
machine cal.apps.sukany.cz login martin password <pass>"
(interactive)
(org-caldav-sync)))
(map! :leader "o c" #'my/org-caldav-sync) (map! :leader "o c" #'my/org-caldav-sync)