feat(org): snap cursor past TODO keyword/priority in org buffers
Like org-agenda, snap cursor to task name when navigating headings in normal state. Uses buffer-local post-command-hook — fires only when on a heading and cursor is before the task name.
This commit is contained in:
27
config.el
27
config.el
@@ -456,6 +456,33 @@ and optional priority indicator [#A]."
|
||||
(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)
|
||||
|
||||
;; Org buffer: snap cursor past TODO keyword/priority on headings in normal state.
|
||||
;; Fires via post-command-hook (buffer-local) — only when cursor is before task name.
|
||||
(defun my/org-heading-snap-past-keyword ()
|
||||
"In Evil normal state, snap cursor past TODO keyword and priority on org headings."
|
||||
(when (and (derived-mode-p 'org-mode)
|
||||
(evil-normal-state-p)
|
||||
(org-at-heading-p))
|
||||
(let* ((kw-re (regexp-opt (my/org-agenda-all-keywords) 'words))
|
||||
(task-start
|
||||
(save-excursion
|
||||
(beginning-of-line)
|
||||
(skip-chars-forward "* ")
|
||||
(when (looking-at kw-re)
|
||||
(goto-char (match-end 0))
|
||||
(skip-chars-forward " \t")
|
||||
(when (looking-at "\\[#.\\][ \t]+")
|
||||
(goto-char (match-end 0)))
|
||||
(point)))))
|
||||
(when (and task-start (< (point) task-start))
|
||||
(goto-char task-start)))))
|
||||
|
||||
(add-hook 'org-mode-hook
|
||||
(lambda ()
|
||||
(add-hook 'post-command-hook
|
||||
#'my/org-heading-snap-past-keyword
|
||||
nil t)))
|
||||
|
||||
|
||||
;;; ============================================================
|
||||
;;; GPTEL — AI INTEGRATION (OpenWebUI / OpenRouter)
|
||||
|
||||
Reference in New Issue
Block a user