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.
|
||||
|
||||
(defvar syd-evil-last-eval-expression-register ?e
|
||||
"An Evil-mode register in which the last expression evaluated with an
|
||||
interactive call to `eval-expression' is stored.")
|
||||
(defvar syd-last-eval-expression-register ?e
|
||||
"An Evil-mode register to which the last expression evaluated with an
|
||||
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
|
||||
(defun syd-set-eval-expression-register-a (expr &rest _)
|
||||
"If called interactively, set the register
|
||||
`syd-evil-last-eval-expression-register' to a printed form of EXPR."
|
||||
(syd-defadvice syd--set-eval-expression-register-a (fn expr &rest args)
|
||||
:around #'eval-expression
|
||||
"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)
|
||||
(evil-set-register syd-last-eval-expression-register
|
||||
(->> (pp-to-string expr)
|
||||
(string-remove-suffix "\n")
|
||||
(evil-set-register syd-evil-last-eval-expression-register))))
|
||||
(advice-add #'eval-expression
|
||||
: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