fix calfw sort: advice na calfw-org-convert-event, same-day events → contents (sortují se)
This commit is contained in:
22
config.el
22
config.el
@@ -1933,13 +1933,22 @@ current frame."
|
||||
(evil-set-initial-state 'calfw-calendar-mode 'emacs)
|
||||
(evil-set-initial-state 'calfw-details-mode 'emacs)
|
||||
|
||||
;; Pomocná funkce: extrahuj čas z file-source stringu ("10:30 Event" → 1030)
|
||||
;; 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)))))
|
||||
|
||||
;; Universal sorter: čte time-of-day property (agenda source) NEBO parsuje prefix "HH:MM " (file source)
|
||||
(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))))
|
||||
@@ -1949,18 +1958,15 @@ current frame."
|
||||
(t (string-lessp text1 text2)))))
|
||||
|
||||
(defun my/open-calendar ()
|
||||
"Calfw s barvami: Suky=modrá, Klára=žlutá, Rodina=zelená, Agenda=zelená (tmavá).
|
||||
Agenda files → calfw-org-create-source (SCHEDULED/DEADLINE).
|
||||
CalDAV soubory → calfw-org-create-file-source (plain timestamps, správné dny).
|
||||
Universal sorter funguje pro oba typy."
|
||||
"Calfw s barvami: Suky=modrá, Klára=žlutá, Rodina=zelená, Agenda=tmavě zelená.
|
||||
same-day events → contents (sortují se), multi-day → periods.
|
||||
Agenda files → calfw-org-create-source. CalDAV → calfw-org-create-file-source."
|
||||
(interactive)
|
||||
(condition-case err
|
||||
(let* ((cd (expand-file-name "~/org/caldav/"))
|
||||
(sources (delq nil
|
||||
(list
|
||||
;; Agenda: org-agenda-files přes org-agenda machinery
|
||||
(calfw-org-create-source nil "Agenda" "SeaGreen4")
|
||||
;; CalDAV: file-source — plain timestamps, správné dny
|
||||
(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"))
|
||||
|
||||
Reference in New Issue
Block a user