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