All pastes #825255 Raw Edit

slime-eval-macroexpand

public text v1 · immutable
#825255 ·published 2007-12-20 13:19 UTC
rendered paste body
(defun slime-eval-macroexpand (expander &optional string)
  (unless string
    (setf string (first (slime-sexp-at-point-for-macroexpansion))))
  (setf slime-eval-macroexpand-expression `(,expander ,string))
  (lexical-let ((package (slime-current-package)))
    (slime-eval-async 
     slime-eval-macroexpand-expression
     (lambda (expansion)
       (slime-with-output-to-temp-buffer
           ;; reusep for preserving `undo' functionality.
           ("*SLIME macroexpansion*" :mode lisp-mode :reusep t) package
         (slime-macroexpansion-minor-mode)
         (erase-buffer)
         (insert expansion)
         (indent-region (point-min) (point-max))
         (font-lock-fontify-buffer))))))