mirror of
https://github.com/doomemacs/doomemacs.git
synced 2026-03-07 14:21:47 -08:00
feat(evil,vertico): merge evil's into emacs' registers
Makes Emacs more broadly aware of Evil's registers (when Evil is active), and fixes an issue where our advice integrating `consult-register` with Evil registers would properly list Evil registers, but not fetch/insert them correctly (#8698). Fix: #8698 Close: #8699 Co-authored-by: liaowang11 <liaowang11@users.noreply.github.com>
This commit is contained in:
parent
a9af7810fe
commit
88e2a0d5de
2 changed files with 30 additions and 8 deletions
|
|
@ -127,14 +127,9 @@ orderless."
|
|||
:before (list #'consult-recent-file #'consult-buffer)
|
||||
(recentf-mode +1))
|
||||
|
||||
(defadvice! +vertico--use-evil-registers-a (fn &rest args)
|
||||
"Use `evil-register-list' if `evil-mode' is active."
|
||||
:around #'consult-register--alist
|
||||
(let ((register-alist
|
||||
(if (bound-and-true-p evil-local-mode)
|
||||
(evil-register-list)
|
||||
register-alist)))
|
||||
(apply fn args)))
|
||||
;; HACK: Merge Evil's registers into `consult-register' register list.
|
||||
(when (modulep! :editor evil +everywhere)
|
||||
(advice-add #'consult-register--alist :around #'+evil--propagate-registers-a))
|
||||
|
||||
(setq consult-project-function #'doom-project-root
|
||||
consult-narrow-key "<"
|
||||
|
|
|
|||
|
|
@ -186,6 +186,33 @@ directives. By default, this only recognizes C directives.")
|
|||
(funcall fill-region from to justify t to-eop))
|
||||
(apply fn args)))
|
||||
|
||||
;; HACK: Make Emacs registers recognize and treat Evil registers like their
|
||||
;; own, for consistency's sake.
|
||||
(when (modulep! +everywhere)
|
||||
(defadvice! +evil--use-evil-registers-a (fn register)
|
||||
"Merge Evil's registers into Emacs' register list (when Evil is active)."
|
||||
:around #'get-register
|
||||
(if (and (characterp register) ; prevent `evil-get-register' type error
|
||||
(or (bound-and-true-p evil-mode)
|
||||
(bound-and-true-p evil-local-mode)))
|
||||
(if (char-equal register ?=) ; last expression register input
|
||||
evil-last-=-register-input
|
||||
(evil-get-register register t))
|
||||
(funcall fn register)))
|
||||
|
||||
(defadvice! +evil--propagate-registers-a (fn &rest args)
|
||||
"Merge Evil's registers into Emacs' register list (when Evil is active)."
|
||||
:around #'register-swap-out
|
||||
:around #'register-buffer-to-file-query
|
||||
:around #'register-read-with-preview-fancy
|
||||
:around #'list-registers
|
||||
(let ((register-alist
|
||||
(if (or (bound-and-true-p evil-mode)
|
||||
(bound-and-true-p evil-local-mode))
|
||||
(evil-register-list)
|
||||
register-alist)))
|
||||
(apply fn args))))
|
||||
|
||||
;; Make ESC (from normal mode) the universal escaper. See `doom-escape-hook'.
|
||||
(advice-add #'evil-force-normal-state :after #'+evil-escape-a)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue