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-next-line :after #'my/org-agenda-goto-task-name)
|
||||||
(advice-add 'org-agenda-previous-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)
|
;;; GPTEL — AI INTEGRATION (OpenWebUI / OpenRouter)
|
||||||
|
|||||||
Reference in New Issue
Block a user