config: org-caldav constants, evil merge, use-package cleanup, keybindings section

- org-caldav: extract UUIDs/URL to defconst near USER IDENTITY
  (my/caldav-url, my/caldav-id-suky/placeholders/family/klara)
- evil: merge two (after! evil) blocks into one
- olivetti: use-package! → after! (no load-order keywords needed)
- keybindings: central reference section at end of file
  standalone map! bindings (zoom, elfeed, speech, kubel, iedit,
  vundo, org-roam-ui, langtool, org-caldav) moved here
  context-coupled bindings left near their packages with comment index
This commit is contained in:
2026-02-28 20:48:57 +01:00
parent 538e15f707
commit 3abc7c9745

102
config.el
View File

@@ -7,6 +7,13 @@
(setq user-full-name "Martin Sukany"
user-mail-address "martin@sukany.cz")
;; CalDAV calendar IDs (edit here to update sync targets)
(defconst my/caldav-url "https://cal.apps.sukany.cz/dav.php/calendars/martin")
(defconst my/caldav-id-suky "default")
(defconst my/caldav-id-placeholders "4C748EE5-ECFF-4D4A-A72E-6DE37BAADEB3")
(defconst my/caldav-id-family "family")
(defconst my/caldav-id-klara "klara")
;; Trust all TLS certificates (corporate MITM proxy with intermediate CA)
(setq gnutls-verify-error nil)
(setq tls-checktrust nil)
@@ -97,7 +104,9 @@
;; Let Evil use the system clipboard
(after! evil
(setq evil-want-clipboard t))
(setq evil-want-clipboard t)
;; Ensure dashboard buffer starts in normal state (required for SPC leader)
(evil-set-initial-state '+doom-dashboard-mode 'normal))
;; Standard macOS modifier keys for GUI Emacs
(when (display-graphic-p)
@@ -128,10 +137,6 @@
(global-set-key [wheel-up] #'mwheel-scroll)
(global-set-key [wheel-down] #'mwheel-scroll))
;; Ensure dashboard buffer starts in normal state (required for SPC leader)
(after! evil
(evil-set-initial-state '+doom-dashboard-mode 'normal))
;; Cancel persp-mode's 2.5s cache timer after startup
;; (reduces unnecessary redraws that cause macOS Zoom to jump)
(run-with-timer 3 nil
@@ -805,7 +810,6 @@ Skip for beamer exports — beamer uses adjustbox on plain tabular."
;;; RSS — ELFEED
;;; ============================================================
(map! :leader :desc "Elfeed" "o r" #'elfeed)
(after! org
(setq rmh-elfeed-org-files
@@ -1133,10 +1137,6 @@ Skip for beamer exports — beamer uses adjustbox on plain tabular."
(setq dtk-speaker-process nil))
(message "Emacspeak OFF (server restart inhibited)"))
(map! :leader
(:prefix ("t" . "toggle")
:desc "Speech ON" "s" #'my/emacspeak-on
:desc "Speech OFF" "S" #'my/emacspeak-off))
(with-eval-after-load 'dtk-speak
(setq dtk-speech-rate-base 300)
@@ -1229,23 +1229,6 @@ Skip for beamer exports — beamer uses adjustbox on plain tabular."
scroll-margin 2)
;;; ============================================================
;;; KEYBINDINGS
;;; ============================================================
(map! :leader
(:prefix ("h" . "help")
:desc "Describe bindings (buffer-local)" "B" #'describe-bindings))
(map! :leader
(:prefix ("z" . "zoom")
:desc "Zoom in (x1.5)" "+" #'my/zoom-in
:desc "Zoom in (x1.5)" "=" #'my/zoom-in
:desc "Zoom out (x1.5)" "-" #'my/zoom-out
:desc "Reset" "0" #'my/zoom-reset
:desc "Restore previous" "z" #'my/zoom-restore))
;;; ============================================================
;;; MATRIX — EMENT.EL
;;; ============================================================
@@ -1412,9 +1395,7 @@ Skip for beamer exports — beamer uses adjustbox on plain tabular."
;;; WRITING — olivetti-mode
;;; ============================================================
(use-package! olivetti
:defer t
:config
(after! olivetti
(setq olivetti-body-width 90))
(add-hook 'org-mode-hook (lambda () (when buffer-file-name (olivetti-mode 1))))
@@ -1626,32 +1607,32 @@ Skip for beamer exports — beamer uses adjustbox on plain tabular."
(insert "#+TITLE: CalDAV sync\n#+STARTUP: overview\n"))))
;; 1. Suky (twoway): download -> suky.org, upload from calendar_outbox.org
(setq org-caldav-url "https://cal.apps.sukany.cz/dav.php/calendars/martin"
org-caldav-calendar-id "default"
(setq org-caldav-url my/caldav-url
org-caldav-calendar-id my/caldav-id-suky
org-caldav-inbox "~/org/caldav/suky.org"
org-caldav-files '("~/org/calendar_outbox.org")
org-caldav-sync-direction 'twoway)
(org-caldav-sync)
;; 2. Placeholders (read-only)
(setq org-caldav-url "https://cal.apps.sukany.cz/dav.php/calendars/martin"
org-caldav-calendar-id "4C748EE5-ECFF-4D4A-A72E-6DE37BAADEB3"
(setq org-caldav-url my/caldav-url
org-caldav-calendar-id my/caldav-id-placeholders
org-caldav-inbox "~/org/caldav/placeholders.org"
org-caldav-files nil
org-caldav-sync-direction 'cal->org)
(org-caldav-sync)
;; 3. Family (read-only, shared via Baikal ACL)
(setq org-caldav-url "https://cal.apps.sukany.cz/dav.php/calendars/martin"
org-caldav-calendar-id "family"
(setq org-caldav-url my/caldav-url
org-caldav-calendar-id my/caldav-id-family
org-caldav-inbox "~/org/caldav/family.org"
org-caldav-files nil
org-caldav-sync-direction 'cal->org)
(org-caldav-sync)
;; 4. Klara (read-only, shared via Baikal ACL)
(setq org-caldav-url "https://cal.apps.sukany.cz/dav.php/calendars/martin"
org-caldav-calendar-id "klara"
(setq org-caldav-url my/caldav-url
org-caldav-calendar-id my/caldav-id-klara
org-caldav-inbox "~/org/caldav/klara.org"
org-caldav-files nil
org-caldav-sync-direction 'cal->org)
@@ -1659,7 +1640,6 @@ Skip for beamer exports — beamer uses adjustbox on plain tabular."
(message "CalDAV sync done: Suky + Placeholders + Family + Klara")))
(map! :leader "o c" #'my/org-caldav-sync)
;;; ============================================================
@@ -1848,7 +1828,6 @@ Formats matching what org-caldav/ox-icalendar export correctly:
:n "l" #'kubel-get-pod-logs
:n "d" #'kubel-describe-resource
:n "D" #'kubel-delete-resource))
(map! :leader "o k" #'kubel)
;;; ============================================================
@@ -1894,12 +1873,10 @@ Formats matching what org-caldav/ox-icalendar export correctly:
;;; ============================================================
(use-package! iedit :commands iedit-mode)
(map! :leader "s e" #'iedit-mode)
(use-package! vundo
:commands vundo
:config (setq vundo-glyph-alist vundo-unicode-symbols))
(map! :leader "u" #'vundo)
(use-package! breadcrumb
:hook ((prog-mode . breadcrumb-local-mode)
@@ -2104,7 +2081,6 @@ Formats matching what org-caldav/ox-icalendar export correctly:
(setq org-roam-ui-sync-theme t
org-roam-ui-follow t
org-roam-ui-update-on-save t))
(map! :leader "n r u" #'org-roam-ui-mode)
;;; ============================================================
@@ -2116,9 +2092,49 @@ Formats matching what org-caldav/ox-icalendar export correctly:
(expand-file-name "~/languagetool/languagetool-commandline.jar")
langtool-default-language "cs"
langtool-mother-tongue "cs"))
;;; ============================================================
;;; KEYBINDINGS — central reference
;;; ============================================================
;;; Standalone bindings (package-independent, safe to define top-level).
;;
;; The following bindings are defined near their packages (load-order sensitive):
;; SPC o r — elfeed (elfeed section)
;; SPC o n/N — org-noter (org-noter section)
;; SPC o C — calendar/calfw (calfw section)
;; SPC j k/K — link-hint (link-hint section)
;; SPC t o — olivetti (olivetti section)
;; SPC z +/= — zoom in/out (keybindings section below)
;; SPC o M — Matrix/ement (Matrix section)
;; SPC B b/i — bibliography/citar (bibliography section)
;; SPC s q/Q — org-ql (org-ql section)
;; SPC | di| ci| vi| — table cell objects (evil-org section)
(map! :leader
(:prefix ("z" . "zoom")
:desc "Zoom in (x1.5)" "+" #'my/zoom-in
:desc "Zoom in (x1.5)" "=" #'my/zoom-in
:desc "Zoom out (x1.5)" "-" #'my/zoom-out
:desc "Reset" "0" #'my/zoom-reset
:desc "Restore previous" "z" #'my/zoom-restore))
(map! :leader :desc "Elfeed" "o r" #'elfeed)
(map! :leader
(:prefix ("t" . "toggle")
:desc "Speech ON" "s" #'my/emacspeak-on
:desc "Speech OFF" "S" #'my/emacspeak-off))
(map! :leader
(:prefix ("h" . "help")
:desc "Describe bindings (buffer-local)" "B" #'describe-bindings))
(map! :leader "o k" #'kubel)
(map! :leader "s e" #'iedit-mode)
(map! :leader "u" #'vundo)
(map! :leader "n r u" #'org-roam-ui-mode)
(map! :leader
"t g" #'langtool-check
"t G" #'langtool-check-done)
(map! :leader "o c" #'my/org-caldav-sync)
;; gls
(setq insert-directory-program "gls")