From 2a4485a47ac6e4f01d5399f440d9827ae154c510 Mon Sep 17 00:00:00 2001 From: Ivan Malison Date: Fri, 12 Aug 2016 14:32:26 -0700 Subject: [PATCH] Make let-around inherit interactive forms --- dotfiles/emacs.d/README.org | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/dotfiles/emacs.d/README.org b/dotfiles/emacs.d/README.org index c131543a..da0f4745 100644 --- a/dotfiles/emacs.d/README.org +++ b/dotfiles/emacs.d/README.org @@ -599,9 +599,23 @@ the ~:around~ keyword of advice-add. (defmacro imalison:let-around-fn (orig-func &rest forms) `(lambda (&rest args) (let ,forms - (apply ,orig-func args)))) + (apply (quote ,orig-func) args)))) +#+END_SRC -(imalison:named-builder imalison:let-around) +#+BEGIN_SRC emacs-lisp +(defmacro imalison:let-around (new-function-name function-name &rest args) + (let* ((orig-interactive-form (interactive-form function-name)) + (additional-forms + (when orig-interactive-form + (list + `(put (quote ,new-function-name) 'interactive-form + (quote ,orig-interactive-form)))))) + `(progn + (defalias (quote ,new-function-name) + (imalison:let-around-fn ,function-name ,@args)) + ,@additional-forms))) + +(put 'imalison:let-around 'lisp-indent-function 1) #+END_SRC **** Dynamically, using functions #+BEGIN_SRC emacs-lisp