revert calfw: zpět na stabilní calfw-org-open-calendar (barvy řeším separátně)

This commit is contained in:
2026-02-24 23:08:01 +01:00
parent 179aa56e56
commit 33dcc1e297

View File

@@ -1933,53 +1933,10 @@ current frame."
(evil-set-initial-state 'calfw-calendar-mode 'emacs) (evil-set-initial-state 'calfw-calendar-mode 'emacs)
(evil-set-initial-state 'calfw-details-mode 'emacs) (evil-set-initial-state 'calfw-details-mode 'emacs)
;; FIX: calfw-org-create-file-source dává same-day timed events (10:00-11:00)
;; do `periods` místo `contents` protože end-date = start-date → sorter se nevztahuje.
;; Advice vymaže end-date pro same-day events → jdou do contents → sortují se správně.
(define-advice calfw-org-convert-event (:filter-return (event) my/fix-same-day-periods)
(when (and event
(calfw-event-end-date event)
(equal (calfw-event-end-date event) (calfw-event-start-date event)))
(setf (calfw-event-end-date event) nil))
event)
;; Universal sorter: time-of-day property (agenda source) NEBO prefix "HH:MM " (file source)
(defun my/calfw-extract-time (str)
(when (string-match "^\\([0-9]\\{2\\}\\):\\([0-9]\\{2\\}\\) " str)
(+ (* (string-to-number (match-string 1 str)) 100)
(string-to-number (match-string 2 str)))))
(defun my/calfw-sorter (text1 text2)
(let ((t1 (or (get-text-property 0 'time-of-day text1) (my/calfw-extract-time text1)))
(t2 (or (get-text-property 0 'time-of-day text2) (my/calfw-extract-time text2))))
(cond ((and t1 t2) (< t1 t2))
(t1 t)
(t2 nil)
(t (string-lessp text1 text2)))))
(defun my/open-calendar () (defun my/open-calendar ()
"Calfw s barvami: Suky=modrá, Klára=žlutá, Rodina=zelená, Agenda=tmavě zelená. "Calfw — stabilní verze, org-agenda-files."
same-day events → contents (sortují se), multi-day → periods.
Agenda files → calfw-org-create-source. CalDAV → calfw-org-create-file-source."
(interactive) (interactive)
(condition-case err (calfw-org-open-calendar))
(let* ((cd (expand-file-name "~/org/caldav/"))
(sources (delq nil
(list
(calfw-org-create-source nil "Agenda" "SeaGreen4")
(when (file-exists-p (concat cd "suky.org"))
(calfw-org-create-file-source "Suky" (concat cd "suky.org") "SteelBlue"))
(when (file-exists-p (concat cd "klara.org"))
(calfw-org-create-file-source "Klára" (concat cd "klara.org") "Gold"))
(when (file-exists-p (concat cd "family.org"))
(calfw-org-create-file-source "Rodina" (concat cd "family.org") "ForestGreen"))))))
(calfw-open-calendar-buffer
:contents-sources sources
:view 'month
:sorter #'my/calfw-sorter))
(error
(message "calfw: %s — fallback" (error-message-string err))
(calfw-org-open-calendar))))
(map! :leader "o C" #'my/open-calendar)) (map! :leader "o C" #'my/open-calendar))