lang/org: add goto-visible & refile-to-visible commands
- Bind 'gsh' to goto-visible command in org-mode - Bind '<localleader> g v' to goto-visible - Bind '<localleader> r v' to refile-to-visible - Add avy package to lang/org module Powered by avy.
This commit is contained in:
parent
77b0784075
commit
c8cfa31a1e
5 changed files with 45 additions and 0 deletions
|
@ -85,6 +85,10 @@
|
||||||
:n "q" #'kill-current-buffer)
|
:n "q" #'kill-current-buffer)
|
||||||
|
|
||||||
:m "gs" #'+evil/easymotion ; lazy-load `evil-easymotion'
|
:m "gs" #'+evil/easymotion ; lazy-load `evil-easymotion'
|
||||||
|
(:after org
|
||||||
|
:map org-mode-map
|
||||||
|
:m "gsh" #'+org/goto-visible)
|
||||||
|
|
||||||
(:when (featurep! :editor multiple-cursors)
|
(:when (featurep! :editor multiple-cursors)
|
||||||
:prefix "gz"
|
:prefix "gz"
|
||||||
:nv "d" #'evil-mc-make-and-goto-next-match
|
:nv "d" #'evil-mc-make-and-goto-next-match
|
||||||
|
|
19
modules/lang/org/autoload/org-avy.el
Normal file
19
modules/lang/org/autoload/org-avy.el
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
;;; lang/org/autoload/org-avy.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun +org-headline-avy ()
|
||||||
|
"TODO"
|
||||||
|
(save-excursion
|
||||||
|
(when-let* ((org-reverse-note-order t)
|
||||||
|
(pos (avy-with avy-goto-line (avy-jump (rx bol (1+ "*") (1+ blank))))))
|
||||||
|
(when (integerp (car pos))
|
||||||
|
;; If avy is aborted with "C-g", it returns `t', so we know it was NOT
|
||||||
|
;; aborted when it returns an int. If it doesn't return an int, we
|
||||||
|
;; return nil.
|
||||||
|
(copy-marker (car pos))))))
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun +org/goto-visible ()
|
||||||
|
"TODO"
|
||||||
|
(interactive)
|
||||||
|
(goto-char (+org-headline-avy)))
|
|
@ -62,3 +62,22 @@
|
||||||
(lambda (_p _coll _pred _rm _ii _h default &rest _)
|
(lambda (_p _coll _pred _rm _ii _h default &rest _)
|
||||||
default)))
|
default)))
|
||||||
(org-refile)))
|
(org-refile)))
|
||||||
|
|
||||||
|
(defvar org-after-refile-insert-hook)
|
||||||
|
;; Inspired by org-teleport and alphapapa/alpha-org
|
||||||
|
;;;###autoload
|
||||||
|
(defun +org/refile-to-visible ()
|
||||||
|
"Refile current heading as first child of visible heading selected with Avy."
|
||||||
|
(interactive)
|
||||||
|
(when-let (marker (+org-headline-avy))
|
||||||
|
(let* ((buffer (marker-buffer marker))
|
||||||
|
(filename
|
||||||
|
(buffer-file-name (or (buffer-base-buffer buffer)
|
||||||
|
buffer)))
|
||||||
|
(heading
|
||||||
|
(org-with-point-at marker
|
||||||
|
(org-get-heading 'no-tags 'no-todo)))
|
||||||
|
;; Won't work with target buffers whose filename is nil
|
||||||
|
(rfloc (list heading filename nil marker))
|
||||||
|
(org-after-refile-insert-hook (cons #'org-reveal org-after-refile-insert-hook)))
|
||||||
|
(org-refile nil nil rfloc))))
|
||||||
|
|
|
@ -675,6 +675,7 @@ between the two."
|
||||||
"C" (λ! (org-clock-goto 'select))
|
"C" (λ! (org-clock-goto 'select))
|
||||||
"i" #'org-id-goto
|
"i" #'org-id-goto
|
||||||
"r" #'org-refile-goto-last-stored
|
"r" #'org-refile-goto-last-stored
|
||||||
|
"v" #'+org/goto-visible
|
||||||
"x" #'org-capture-goto-last-stored)
|
"x" #'org-capture-goto-last-stored)
|
||||||
(:prefix ("l" . "links")
|
(:prefix ("l" . "links")
|
||||||
"c" 'org-cliplink
|
"c" 'org-cliplink
|
||||||
|
@ -690,6 +691,7 @@ between the two."
|
||||||
"l" #'+org/refile-to-last-location
|
"l" #'+org/refile-to-last-location
|
||||||
"o" #'+org/refile-to-other-window
|
"o" #'+org/refile-to-other-window
|
||||||
"O" #'+org/refile-to-other-buffers
|
"O" #'+org/refile-to-other-buffers
|
||||||
|
"v" #'+org/refile-to-visible
|
||||||
"r" #'org-refile)) ; to all `org-refile-targets'
|
"r" #'org-refile)) ; to all `org-refile-targets'
|
||||||
|
|
||||||
(map! :after org-agenda
|
(map! :after org-agenda
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
|
|
||||||
(package! org-plus-contrib) ; install cutting-edge version of org-mode
|
(package! org-plus-contrib) ; install cutting-edge version of org-mode
|
||||||
|
|
||||||
|
(package! avy)
|
||||||
(package! htmlize)
|
(package! htmlize)
|
||||||
(package! org-bullets :recipe (:host github :repo "Kaligule/org-bullets"))
|
(package! org-bullets :recipe (:host github :repo "Kaligule/org-bullets"))
|
||||||
(package! org-fancy-priorities)
|
(package! org-fancy-priorities)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue