]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/progmodes/elisp-mode.el (eval-sexp-add-defvars): Don't macroexpand.
authorStefan Monnier <monnier@iro.umontreal.ca>
Sun, 18 Feb 2018 18:02:29 +0000 (13:02 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Sun, 18 Feb 2018 18:02:29 +0000 (13:02 -0500)
Otherwise it breaks C-M-x on (progn (defmacro x ..) (... (x ...))).
Furthermore, many callers do their own macroexpansion anyway.
(elisp--eval-last-sexp): Do macroexpansion to make up for it.

lisp/progmodes/elisp-mode.el

index e6e55a37a7cdd48fff716d71d9fc69c21e478f94..935e55c5d708236203c5c5fd1a86de2fe3ac7871 100644 (file)
@@ -1132,7 +1132,9 @@ character)."
         (eval-expression-get-print-arguments eval-last-sexp-arg-internal)))
     ;; Setup the lexical environment if lexical-binding is enabled.
     (elisp--eval-last-sexp-print-value
-     (eval (eval-sexp-add-defvars (elisp--preceding-sexp)) lexical-binding)
+     (eval (macroexpand-all
+            (eval-sexp-add-defvars (elisp--preceding-sexp)))
+           lexical-binding)
      (if insert-value (current-buffer) t) no-truncate char-print-limit)))
 
 (defun elisp--eval-last-sexp-print-value
@@ -1165,7 +1167,6 @@ character)."
 (defun eval-sexp-add-defvars (exp &optional pos)
   "Prepend EXP with all the `defvar's that precede it in the buffer.
 POS specifies the starting position where EXP was found and defaults to point."
-  (setq exp (macroexpand-all exp))      ;Eager macro-expansion.
   (if (not lexical-binding)
       exp
     (save-excursion