mirror of
https://github.com/doomemacs/doomemacs
synced 2025-08-03 12:27:26 -05:00
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:
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 _)
|
||||
default)))
|
||||
(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))))
|
||||
|
Reference in New Issue
Block a user