In some cases, "indent-sexp" can be very slow, particularly when it is used on complex "macroexpanded" expressions.
In my case, it takes 43 seconds to apply "indent-sexp" to a buffer of ~6000 lines. (I measured this using the elp package.
The expression produced by SBCL and Allegro is already nicely formatted, so I would prefer not to display the result as formatted, rather than wait.
So, I suggest adding an option to slime.el called "slime-indent-sexp-after-macroexpand", which would allow "indent-sexp" to be disabled.
--- slime.el 22 Sep 2010 19:17:35 -0000 1.1340 +++ slime.el 24 Sep 2010 04:23:29 -0000 @@ -150,6 +150,13 @@ :prefix "slime-" :group 'slime)
+(defcustom slime-indent-sexp-after-macroexpand t + "Perform 'indent-sexp' before presenting results of macroexpansion. +If disabled, macroexpansion will be presented as formated by the Lisp +in use." + :type 'boolean + :group 'slime-ui) + (defcustom slime-truncate-lines t "Set `truncate-lines' in popup buffers. This applies to buffers that present lines as rows of data, such as @@ -4942,7 +4949,7 @@ (erase-buffer) (insert expansion) (goto-char (point-min)) - (indent-sexp) + (when slime-indent-sexp-after-macroexpand (indent-sexp)) (font-lock-fontify-buffer)))
(defun slime-create-macroexpansion-buffer () @@ -4976,8 +4983,8 @@ (goto-char start) (delete-region start end) (insert expansion) - (goto-char start) - (indent-sexp) + (goto-char start) + (when slime-indent-sexp-after-macroexpand (indent-sexp)) (goto-char point))))))))
(defun slime-macroexpand-1 (&optional repeatedly)