;; Org agenda: kurzor na název úkolu (za TODO keyword a prioritou)
;; Přidat do ~/.config/doom/config.el

(defun my/org-agenda-goto-task-name (&rest _)
  "Přesune kurzor na název úkolu na aktuálním řádku agendy.
Přeskočí TODO keyword (TODO, DONE, WAIT…) 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
      (when todo-end
        (goto-char todo-end)
        (skip-chars-forward " \t")
        ;; Přeskočit prioritu [#A] pokud je přítomna
        (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)
