feat(emacs): Save last eval-expression result into register

This commit is contained in:
2025-09-22 11:20:33 -06:00
parent 1b42e9e54d
commit 360bd4e083

View File

@@ -404,20 +404,30 @@ modules."
;;; Save the last 'M-x eval-expression' input to an Evil register. ;;; Save the last 'M-x eval-expression' input to an Evil register.
(defvar syd-evil-last-eval-expression-register ?e (defvar syd-last-eval-expression-register ?e
"An Evil-mode register in which the last expression evaluated with an "An Evil-mode register to which the last expression evaluated with an
interactive call to `eval-expression' is stored.") interactive call to `eval-expression' is saved. Note that the register is only
set by interactive usage of `eval-expression'.")
(defvar syd-last-eval-result-register ?r
"An Evil-mode register to which the result of the last `eval-expression'
invocation is saved. Note that the register is only set by interactive usage of
`eval-expression'.")
(with-eval-after-load 'evil (with-eval-after-load 'evil
(defun syd-set-eval-expression-register-a (expr &rest _) (syd-defadvice syd--set-eval-expression-register-a (fn expr &rest args)
"If called interactively, set the register :around #'eval-expression
`syd-evil-last-eval-expression-register' to a printed form of EXPR." "When `eval-expression' is called interactively, update the registers
`syd-last-eval-expression-register' and `syd-last-eval-result-register'."
(let ((r (apply fn expr args)))
(when (called-interactively-p 'interactive) (when (called-interactively-p 'interactive)
(evil-set-register syd-last-eval-expression-register
(->> (pp-to-string expr) (->> (pp-to-string expr)
(string-remove-suffix "\n") (string-remove-suffix "\n")))
(evil-set-register syd-evil-last-eval-expression-register)))) (evil-set-register syd-last-eval-result-register
(advice-add #'eval-expression (->> (pp-to-string r)
:after #'syd-set-eval-expression-register-a)) (string-remove-suffix "\n"))))
r)))