feat(emacs): Save last eval-expression result into register
This commit is contained in:
@@ -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
|
||||||
(when (called-interactively-p 'interactive)
|
`syd-last-eval-expression-register' and `syd-last-eval-result-register'."
|
||||||
(->> (pp-to-string expr)
|
(let ((r (apply fn expr args)))
|
||||||
(string-remove-suffix "\n")
|
(when (called-interactively-p 'interactive)
|
||||||
(evil-set-register syd-evil-last-eval-expression-register))))
|
(evil-set-register syd-last-eval-expression-register
|
||||||
(advice-add #'eval-expression
|
(->> (pp-to-string expr)
|
||||||
:after #'syd-set-eval-expression-register-a))
|
(string-remove-suffix "\n")))
|
||||||
|
(evil-set-register syd-last-eval-result-register
|
||||||
|
(->> (pp-to-string r)
|
||||||
|
(string-remove-suffix "\n"))))
|
||||||
|
r)))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user