- support for roam
- support for elfeed
- minor changes
- cleared configural
This commit is contained in:
Martin Sukany
2026-02-13 13:45:08 +01:00
parent 06fda42c59
commit c32cffc759
2 changed files with 115 additions and 65 deletions

169
config.el
View File

@@ -4,9 +4,10 @@
;; Theme / UI ;; Theme / UI
;; -------------------------------------------------- ;; --------------------------------------------------
(setq doom-theme 'modus-vivendi-deuteranopia (setq doom-theme 'modus-vivendi-deuteranopia
display-line-numbers-type t
doom-font (font-spec :family "JetBrains Mono" :size 14) doom-font (font-spec :family "JetBrains Mono" :size 14)
doom-variable-pitch-font nil) doom-variable-pitch-font nil)
(setq display-line-numbers-type t)
;; -------------------------------------------------- ;; --------------------------------------------------
;; macOS / UX ;; macOS / UX
@@ -66,60 +67,82 @@ Funguje v libovolném textu, včetně Markdown linků (např. [x](./...))."
(add-hook 'markdown-mode-hook (lambda () (setq-local company-minimum-prefix-length 1))) (add-hook 'markdown-mode-hook (lambda () (setq-local company-minimum-prefix-length 1)))
(add-hook 'gfm-mode-hook (lambda () (setq-local company-minimum-prefix-length 1)))) (add-hook 'gfm-mode-hook (lambda () (setq-local company-minimum-prefix-length 1))))
;; -------------------------------------------------- ;;; ~/.doom.d/config.el --- Org config -*- lexical-binding: t; -*-
;; Org
;; --------------------------------------------------
(setq org-directory "~/org/") ;; ------------------------------------------------------------
;; ORG (Doom-friendly, minimal, bez zbytečných menu)
;; ------------------------------------------------------------
(after! org (after! org
(setq org-default-notes-file (expand-file-name "inbox.org" org-directory)) ;; 1) Kde máš org soubory
;; Uprav si cestu podle sebe. Tohle je typický Doom default.
(setq org-directory "~/org/")
(setq org-agenda-files (list org-directory ;; Pomocná funkce: vrátí plnou cestu k souboru v org-directory
(expand-file-name "projects" org-directory) (defun ms/org-file (name)
(expand-file-name "notes" org-directory))) "Return absolute path to NAME inside `org-directory`."
(expand-file-name name org-directory))
(setq org-todo-keywords
'((sequence "TODO(t)" "NEXT(n)" "WAIT(w@/!)" "|" "DONE(d!)" "CANCELLED(c@)")))
(setq org-log-done 'time)
(setq org-refile-targets '((org-agenda-files :maxlevel . 5))
org-outline-path-complete-in-steps nil
org-refile-use-outline-path 'file)
(defun my/project-org-file ()
"Return path to ./project.org in current Projectile project, if it exists."
(when-let ((root (projectile-project-root)))
(let ((f (expand-file-name "project.org" root)))
(when (file-exists-p f) f))))
(defun my/org-agenda-project ()
"Open Org agenda restricted to current project's project.org."
(interactive)
(let ((org-agenda-files (delq nil (list (my/project-org-file)))))
(if org-agenda-files
(org-agenda nil "a")
(user-error "No project.org found in this project"))))
;; 2) Org-capture templates
;; Zachovává tvoje i/n/p a jen doplňuje chybějící věci.
(setq org-capture-templates (setq org-capture-templates
'(("i" "Inbox task" entry `(
(file "inbox.org") ;; --- Tvoje původní šablony (beze změn) ---
("i" "Inbox task" entry
(file ,(ms/org-file "inbox.org"))
"* TODO %?\n%U\n%a\n") "* TODO %?\n%U\n%a\n")
("n" "Note" entry ("n" "Note" entry
(file+headline "inbox.org" "Notes") (file+headline ,(ms/org-file "inbox.org") "Notes")
"* %?\n%U\n%a\n") "* %?\n%U\n%a\n")
("p" "Project task" entry ("p" "Project task" entry
(file "inbox.org") (file ,(ms/org-file "inbox.org"))
"* TODO %? :project:\n%U\n%a\n")))) "* TODO %? :project:\n%U\n%a\n")
(setq org-agenda-sorting-strategy
'((agenda priority-down time-up) ;; --- Doplňky (minimalisticky) ---
(todo priority-down)
(tags priority-down) ;; Subtask do právě clockované položky
(search priority-down))) ("s" "Clocked subtask" entry (clock)
(setq org-priority-highest ?A "* TODO %?\n%U\n%a\n%i"
org-priority-lowest ?C :empty-lines 1)
org-priority-default ?C)
;; Journal do journal.org (datetree) + automatické měření času
("j" "Journal" entry
(file+olp+datetree ,(ms/org-file "journal.org"))
"\n* %<%I:%M %p> - Journal :journal:\n\n%?\n\n"
:clock-in :clock-resume
:empty-lines 1)
;; Meeting do journal.org (datetree) + měření času
("m" "Meeting" entry
(file+olp+datetree ,(ms/org-file "journal.org"))
"* %<%I:%M %p> - %^{Meeting title} :meetings:\nContext: %a\n\n%?\n\n"
:clock-in :clock-resume
:empty-lines 1)
;; Checking Email do journal datetree
("e" "Checking Email" entry
(file+olp+datetree ,(ms/org-file "journal.org"))
"* Checking Email :email:\n\n%?"
:clock-in :clock-resume
:empty-lines 1)
;; Weight metrika do tabulky v metrics.org pod headline "Weight"
("w" "Weight" table-line
(file+headline ,(ms/org-file "metrics.org") "Weight")
"| %U | %^{Weight} | %^{Notes} |"
:kill-buffer t)
)))
;; ------------------------------------------------------------
;; (Volitelné) Kvalita života nic navíc, jen užitečné defaulty
;; ------------------------------------------------------------
(after! org
;; ať se po capture vrací do stejného okna (někomu pomáhá)
(setq org-capture-restore-window-after-quit t))
;; -------------------------------------------------- ;; --------------------------------------------------
;; Dired ;; Dired
@@ -433,17 +456,6 @@ Funguje v libovolném textu, včetně Markdown linků (např. [x](./...))."
(setq user-mail-address "martin@sukany.cz" (setq user-mail-address "martin@sukany.cz"
user-full-name "Martin Sukany") user-full-name "Martin Sukany")
(map! :map mu4e-view-mode-map
:localleader
"l l" #'org-store-link
"l i" #'org-insert-link)
(map! :map mu4e-headers-mode-map
:localleader
"l l" #'org-store-link
"l i" #'org-insert-link)
;;; ================================ ;;; ================================
;;; Emacspeak robust ON/OFF for Doom ;;; Emacspeak robust ON/OFF for Doom
@@ -458,7 +470,7 @@ Funguje v libovolném textu, včetně Markdown linků (např. [x](./...))."
;; Emacspeak uses this to start the speech server. ;; Emacspeak uses this to start the speech server.
(setq dtk-program my/emacspeak-wrapper) (setq dtk-program my/emacspeak-wrapper)
;;(setq dtk-program "espeak")
;; State flags ;; State flags
(defvar my/emacspeak-loaded nil) (defvar my/emacspeak-loaded nil)
@@ -526,24 +538,20 @@ Funguje v libovolném textu, včetně Markdown linků (např. [x](./...))."
(:prefix ("t" . "toggle") (:prefix ("t" . "toggle")
:desc "Speech ON" "s" #'my/emacspeak-on :desc "Speech ON" "s" #'my/emacspeak-on
:desc "Speech OFF" "S" #'my/emacspeak-off)) :desc "Speech OFF" "S" #'my/emacspeak-off))
(setq dtk-speech-rate 300)
;; ---------------------------- ;; ----------------------------
;; Emacspeak defaults (global) ;; Emacspeak defaults (global)
;; ---------------------------- ;; ----------------------------
(with-eval-after-load 'dtk-speak (with-eval-after-load 'dtk-speak
;; Speech rate
(setq-default dtk-speech-rate 300)
;; Default punctuation mode: none / some / all ;; Default punctuation mode: none / some / all
;; (Emacspeak manual: dtk-set-punctuations supports 'none 'some 'all) :contentReference[oaicite:1]{index=1} ;; (Emacspeak manual: dtk-set-punctuations supports 'none 'some 'all)
(setq dtk-speech-rate-base 300)
(setq-default dtk-punctuation-mode 'none)) (setq-default dtk-punctuation-mode 'none))
(with-eval-after-load 'emacspeak (with-eval-after-load 'emacspeak
;; Typing feedback: ;; Typing feedback:
;; nechceš znaky, chceš slova + řádky ;; nechceš znaky, chceš slova + řádky
;; (Emacspeak manual: character/word/line echo) :contentReference[oaicite:2]{index=2} ;; (Emacspeak manual: character/word/line echo)
(setq-default emacspeak-character-echo nil) (setq-default emacspeak-character-echo nil)
(setq-default emacspeak-word-echo t) (setq-default emacspeak-word-echo t)
(setq-default emacspeak-line-echo t)) (setq-default emacspeak-line-echo t))
@@ -552,3 +560,36 @@ Funguje v libovolném textu, včetně Markdown linků (např. [x](./...))."
(:prefix ("h" . "help") (:prefix ("h" . "help")
:desc "Describe bindings (buffer-local)" "B" #'describe-bindings)) :desc "Describe bindings (buffer-local)" "B" #'describe-bindings))
;; 1) ulož si globální default hodnotu
(setq dtk-default-speech-rate 400)
;; 2) aplikuj ji ve chvíli, kdy je TTS už inicializované
(with-eval-after-load 'dtk-speak
(defun my/dtk-apply-global-default-rate (&rest _)
"Apply global default speech rate after TTS init/restart."
(when (fboundp 'dtk-set-rate)
;; PREFIX arg => set GLOBAL default (per Emacspeak manual)
(ignore-errors (dtk-set-rate dtk-default-speech-rate t))))
;; po každé inicializaci/restartu TTS
(advice-add 'dtk-initialize :after #'my/dtk-apply-global-default-rate))
;; ElFeed (RSS)
(map! :leader
:desc "Elfeed" "o r" #'elfeed)
(after! org
;; pokud máš org soubory jinde než ~/org, nastav org-directory sem:
;; (setq org-directory "~/org")
;; elfeed-org: řekni mu explicitně, kde je elfeed.org
(setq rmh-elfeed-org-files
(list (expand-file-name "elfeed.org" org-directory))))
(after! elfeed
;; elfeed-org musí být inicializovaný, jinak se elfeed.org nemusí načítat
(require 'elfeed-org)
(elfeed-org))

11
init.el
View File

@@ -5,8 +5,13 @@
company company
vertico vertico
:app
(rss +org)
everywhere
:ui :ui
doom doom
popup
doom-dashboard doom-dashboard
hl-todo hl-todo
modeline modeline
@@ -16,6 +21,7 @@
vi-tilde-fringe vi-tilde-fringe
workspaces workspaces
:editor :editor
(evil +everywhere) (evil +everywhere)
file-templates file-templates
@@ -67,7 +73,7 @@
latex latex
lua lua
markdown markdown
org (org +roam2)
(perl +lsp) ;; <- perl completion přes LSP (pokud máš server) (perl +lsp) ;; <- perl completion přes LSP (pokud máš server)
plantuml plantuml
(python +lsp) ;; <- python completion přes LSP (pyright apod.) (python +lsp) ;; <- python completion přes LSP (pyright apod.)
@@ -75,8 +81,11 @@
sh sh
terra terra
web web
terra
yaml yaml
:config :config
(default +bindings +smartparens)) (default +bindings +smartparens))