Type, say, (let ((x 0)) (/ x)) in *slime-repl* and then `l' in *sldb* at the 0th frame of the backtrace. Emacs will say
sldb-list-locals: Buffer is read-only: #<buffer *sldb*>
The reason is that recently all occurrences of `princ' in sldb-princ-locals were changed to `insert' (in order to support faces), so with-output-to-string in sldb-list-locals has become the wrong thing to use. Here is a patch.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ cut ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Index: slime.el =================================================================== RCS file: /project/slime/cvsroot/slime/slime.el,v retrieving revision 1.157 diff -u -r1.157 slime.el --- slime.el 21 Dec 2003 09:21:27 -0000 1.157 +++ slime.el 28 Dec 2003 20:10:28 -0000 @@ -3813,7 +3813,7 @@ (slime-propertize-region (plist-put props 'details-visible-p t) (insert " " (in-sldb-face detailed-frame-line (second frame)) "\n" indent1 (in-sldb-face section "Locals:") "\n") - (sldb-princ-locals frame-number indent2) + (sldb-insert-locals frame-number indent2) (when sldb-show-catch-tags (let ((catchers (sldb-catch-tags frame-number))) (cond ((null catchers) @@ -3910,7 +3910,7 @@ (defun sldb-frame-locals (frame) (slime-eval `(swank:frame-locals ,frame)))
-(defun sldb-princ-locals (frame prefix) +(defun sldb-insert-locals (frame prefix) (dolist (l (sldb-frame-locals frame)) (insert prefix) (let ((symbol (plist-get l :symbol))) @@ -3924,9 +3924,10 @@
(defun sldb-list-locals () (interactive) - (let ((string (with-output-to-string - (sldb-princ-locals (sldb-frame-number-at-point) "")))) - (slime-message "%s" string))) + (let ((frame (sldb-frame-number-at-point))) + (slime-message "%s" (with-temp-buffer + (sldb-insert-locals frame "") + (buffer-string)))))
(defun sldb-catch-tags (frame) (slime-eval `(swank:frame-catch-tags ,frame))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ cut ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Wolfgang