[slime-devel] sldb-list-locals bug

Wolfgang Jenkner wjenkner at inode.at
Mon Dec 29 01:05:38 UTC 2003


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





More information about the slime-devel mailing list