diff --git a/config.el b/config.el index 456ea14..3de026c 100644 --- a/config.el +++ b/config.el @@ -780,6 +780,39 @@ ;; Zaregistruj hook — spustí se před každým exportem (add-hook 'org-export-before-processing-hook #'my/org-auto-tabularx) +;; +;; Org Agenda: kurzor na název úkolu (za TODO keyword a prioritou) +;; Po každém n/p (nebo j/k v evil mode) přeskočí TODO keyword a [#A] prioritu. +;; +(defun my/org-agenda-goto-task-name (&rest _) + "Přesune kurzor na název úkolu — za TODO keyword a prioritu [#A]." + (when (get-text-property (line-beginning-position) 'org-hd-marker) + (beginning-of-line) + (let* ((bol (point)) + (eol (line-end-position)) + (todo-end nil) + (pos bol)) + ;; Najdi konec TODO keyword podle face (org-todo nebo org-agenda-done) + (while (< pos eol) + (let* ((face (get-text-property pos 'face)) + (next (or (next-single-property-change pos 'face nil eol) eol))) + (when (and face + (or (and (symbolp face) + (memq face '(org-todo org-agenda-done))) + (and (listp face) + (cl-intersection face '(org-todo org-agenda-done))))) + (setq todo-end next)) + (setq pos next))) + ;; Přesuň se za TODO keyword a volitelnou prioritu [#X] + (when todo-end + (goto-char todo-end) + (skip-chars-forward " \t") + (when (looking-at "\\[#.\\][ \t]+") + (goto-char (match-end 0))))))) + +(advice-add 'org-agenda-next-line :after #'my/org-agenda-goto-task-name) +(advice-add 'org-agenda-previous-line :after #'my/org-agenda-goto-task-name) + ;; Volitelně: zapni booktabs styl (horizontal rules v tabulkách) ;; (setq org-latex-tables-booktabs t)