feat(extensions): add vundo/kubel/org-caldav/envrc/combobulate and more

Tier 1: org-caldav (CalDAV sync), envrc (direnv), kubel (K8s)
Tier 2: org-clock config, combobulate, vundo, breadcrumb, iedit
Tier 3: org-anki, org-ql, calfw, org-roam-ui, dirvish
Plus: citar/bibtex config, langtool grammar, org-ql search
This commit is contained in:
2026-02-24 18:04:07 +01:00
parent 53d7dc040e
commit 0c09f60606
2 changed files with 192 additions and 0 deletions

169
config.el
View File

@@ -1724,3 +1724,172 @@ current frame."
(after! projectile
(dolist (dir '("node_modules" "__pycache__" ".terraform" "vendor"))
(add-to-list 'projectile-globally-ignored-directories dir)))
;;; ============================================================
;;; EXTENSIONS — Tier 1-3 + BibTeX
;;; ============================================================
;;; --- Tier 1: High impact ---
;; org-caldav — CalDAV sync for org
(use-package! org-caldav
:commands org-caldav-sync
:config
(setq org-caldav-url "https://cal.apps.sukany.cz/dav/calendars/martin@sukany.cz"
org-caldav-calendar-id "Martin"
org-caldav-inbox "~/org/caldav-inbox.org"
org-caldav-files '("~/org/personal.org" "~/org/work.org")
org-caldav-sync-direction 'twoway))
(map! :leader "o c" #'org-caldav-sync)
;; envrc — direnv integration
(use-package! envrc
:hook (after-init . envrc-global-mode))
;; embark — custom prompter (already installed by Doom vertico module)
(after! embark
(setq embark-prompter #'embark-keymap-prompter))
;; wgrep — already installed by Doom vertico module, just configure
(after! wgrep
(setq wgrep-auto-save-buffer t))
;; kubel — Kubernetes management
(use-package! kubel
:commands kubel
:config
(map! :map kubel-mode-map
:n "g" #'kubel-get-resource-details
:n "E" #'kubel-exec-pod
:n "l" #'kubel-get-pod-logs
:n "d" #'kubel-describe-resource
:n "D" #'kubel-delete-resource))
(map! :leader "o k" #'kubel)
;;; --- Tier 2: Quality of life ---
;; org-clock — time tracking (built into org, just configure)
(after! org
(setq org-clock-persist 'history
org-clock-in-resume t
org-clock-out-remove-zero-time-clocks t
org-clock-report-include-clocking-task t
org-duration-format 'h:mm)
(org-clock-persistence-insinuate)
(map! :map org-mode-map
:localleader
"C i" #'org-clock-in
"C o" #'org-clock-out
"C r" #'org-clock-report
"C d" #'org-clock-display))
;; combobulate — tree-sitter structural editing
(use-package! combobulate
:hook ((python-mode . combobulate-mode)
(python-ts-mode . combobulate-mode)
(go-mode . combobulate-mode)
(go-ts-mode . combobulate-mode)
(js-mode . combobulate-mode)
(typescript-mode . combobulate-mode))
:config
(map! :map combobulate-mode-map
:n "C-M-n" #'combobulate-navigate-next
:n "C-M-p" #'combobulate-navigate-previous
:n "C-M-u" #'combobulate-navigate-up
:n "C-M-d" #'combobulate-navigate-down))
;; iedit — edit multiple occurrences
(use-package! iedit
:commands iedit-mode)
(map! :leader "s e" #'iedit-mode)
;; vundo — visual undo tree
(use-package! vundo
:commands vundo
:config (setq vundo-glyph-alist vundo-unicode-symbols))
(map! :leader "u" #'vundo)
;; breadcrumb — context in header-line
(use-package! breadcrumb
:hook ((prog-mode . breadcrumb-local-mode)
(cperl-mode . breadcrumb-local-mode)))
;;; --- Tier 3: Supplementary ---
;; org-anki — Anki flashcards from org
(use-package! org-anki
:commands (org-anki-sync-entry org-anki-sync-all org-anki-delete-entry)
:config
(setq org-anki-default-deck "Emacs")
(map! :map org-mode-map
:localleader
"A s" #'org-anki-sync-entry
"A S" #'org-anki-sync-all
"A d" #'org-anki-delete-entry))
;; org-ql — query language for org
(use-package! org-ql
:commands (org-ql-search org-ql-view org-ql-find)
:config
(map! :leader
"s q" #'org-ql-search
"s Q" #'org-ql-view))
;; calfw — visual calendar
(use-package! calfw
:commands cfw:open-org-calendar)
(use-package! calfw-org
:after calfw
:commands cfw:open-org-calendar)
(map! :leader "o C" #'cfw:open-org-calendar)
;; org-roam-ui — visual graph for org-roam
(use-package! org-roam-ui
:after org-roam
:commands org-roam-ui-mode
:config
(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)
;; dirvish — modern dired replacement
(use-package! dirvish
:init (dirvish-override-dired-mode)
:config
(setq dirvish-mode-line-format '(:left (sort symlink) :right (omit yank index))
dirvish-attributes '(vc-state subtree-state nerd-icons collapse git-msg file-time file-size)
dirvish-side-width 35)
(map! :map dirvish-mode-map
:n "q" #'dirvish-quit
:n "h" #'dired-up-directory
:n "l" #'dired-find-file
:n "s" #'dirvish-quicksort
:n "S" #'dirvish-setup-menu
:n "TAB" #'dirvish-subtree-toggle
:n "M-f" #'dirvish-history-go-forward
:n "M-b" #'dirvish-history-go-backward))
;;; --- BibTeX / Citar (installed by Doom biblio module) ---
(after! citar
(setq citar-bibliography '("~/org/references.bib")
citar-notes-paths '("~/org/notes/")
citar-library-paths '("~/org/papers/"))
(map! :leader
"b b" #'citar-open
"b i" #'citar-insert-citation
"b n" #'citar-open-notes
"b r" #'citar-refresh))
;;; --- Grammar check (LanguageTool, installed by Doom grammar module) ---
(after! langtool
(setq langtool-language-tool-jar
(expand-file-name "~/languagetool/languagetool-commandline.jar")
langtool-default-language "cs"
langtool-mother-tongue "cs"))
(map! :leader
"t g" #'langtool-check
"t G" #'langtool-check-done)

View File

@@ -94,3 +94,26 @@
;; Git
(package! git-link)
;;; ============================================================
;;; EXTENSIONS — Tier 1-3
;;; ============================================================
;; Tier 1 — High impact
(package! kubel)
(package! org-caldav)
(package! envrc)
;; Tier 2 — Quality of life
(package! vundo)
(package! iedit)
(package! combobulate :recipe (:host github :repo "mickeynp/combobulate"))
(package! breadcrumb :recipe (:host github :repo "joaotavora/breadcrumb"))
;; Tier 3 — Supplementary
(package! org-anki)
(package! org-ql)
(package! calfw)
(package! calfw-org)
(package! org-roam-ui)
(package! dirvish)