From 77bbb0d4a798c84628073c2a1447fb4c67d73a6a Mon Sep 17 00:00:00 2001 From: Daneel Date: Fri, 20 Feb 2026 23:59:27 +0100 Subject: [PATCH] feat: org-agenda cursor at task name (after TODO + priority) --- templates/org-agenda-cursor.el | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 templates/org-agenda-cursor.el diff --git a/templates/org-agenda-cursor.el b/templates/org-agenda-cursor.el new file mode 100644 index 0000000..290bd4b --- /dev/null +++ b/templates/org-agenda-cursor.el @@ -0,0 +1,33 @@ +;; 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)