[slime-cvs] CVS slime

CVS User heller heller at common-lisp.net
Wed Mar 3 11:57:03 UTC 2010


Update of /project/slime/cvsroot/slime
In directory cl-net:/tmp/cvs-serv8305

Modified Files:
	ChangeLog slime.el swank.lisp 
Log Message:
* slime.el (slime-inspector-history): New command.

--- /project/slime/cvsroot/slime/ChangeLog	2010/03/03 11:56:52	1.2009
+++ /project/slime/cvsroot/slime/ChangeLog	2010/03/03 11:57:03	1.2010
@@ -183,6 +183,9 @@
 
 2010-03-03  Helmut Eller  <heller at common-lisp.net>
 
+	* slime.el (slime-inspector-history): New command.
+
+2010-03-03  Helmut Eller  <heller at common-lisp.net>
 	Don't try to bind keywords in inspector-eval.
 
 	* swank.lisp (inspector-eval): For now, don't bind symbols which
--- /project/slime/cvsroot/slime/slime.el	2010/03/02 12:38:06	1.1282
+++ /project/slime/cvsroot/slime/slime.el	2010/03/03 11:57:03	1.1283
@@ -6580,6 +6580,11 @@
   (interactive (list (slime-read-from-minibuffer "Inspector eval: ")))
   (slime-eval-with-transcript `(swank:inspector-eval ,string)))
 
+(defun slime-inspector-history ()
+  "Show the previously inspected objects."
+  (interactive)
+  (slime-eval-describe `(swank:inspector-history)))
+
 (defun slime-inspector-show-source (part)
   (interactive (list (or (get-text-property (point) 'slime-part-number)
                          (error "No part at point"))))
@@ -6673,6 +6678,7 @@
   ("d" 'slime-inspector-describe)
   ("p" 'slime-inspector-pprint)
   ("e" 'slime-inspector-eval)
+  ("h" 'slime-inspector-history)
   ("q" 'slime-inspector-quit)
   ("g" 'slime-inspector-reinspect)
   ("v" 'slime-inspector-toggle-verbose)
--- /project/slime/cvsroot/slime/swank.lisp	2010/03/03 11:56:52	1.694
+++ /project/slime/cvsroot/slime/swank.lisp	2010/03/03 11:57:03	1.695
@@ -3329,6 +3329,23 @@
                         (declare (ignorable . ,ignorable))
                         ,form)))))
 
+(defslimefun inspector-history ()
+  (with-output-to-string (out)
+    (let ((newest (loop for s = *istate* then next
+                        for next = (istate.next s)
+                        if (not next) return s)))
+      (format out "--- next/prev chain ---")
+      (loop for s = newest then (istate.previous s) while s do
+            (let ((val (istate.object s)))
+              (format out "~%~:[  ~; *~]@~d " 
+                      (eq s *istate*)
+                      (position val *inspector-history*))
+              (print-unreadable-object (val out :type t :identity t)))))
+    (format out "~%~%--- all visited objects ---")
+    (loop for val across *inspector-history* for i from 0 do
+          (format out "~%~2,' d " i)
+          (print-unreadable-object (val out :type t :identity t)))))
+
 (defslimefun quit-inspector ()
   (reset-inspector)
   nil)





More information about the slime-cvs mailing list