diff --git a/config.el b/config.el index b97ee2a..a84de24 100644 --- a/config.el +++ b/config.el @@ -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) diff --git a/packages.el b/packages.el index 1e266d5..781cbd7 100644 --- a/packages.el +++ b/packages.el @@ -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) +