X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Finspect.lisp;h=37e04c8311b65b356ca8b92ee491d8b1f9d44e00;hb=c017b878e30a0bc9a175d3f5a1a4d3537804160c;hp=1aebddb6eb995d9f08089599323199c8c81d189f;hpb=970dd272dc84f7420252eadb4829cc193f795716;p=sbcl.git diff --git a/src/code/inspect.lisp b/src/code/inspect.lisp index 1aebddb..37e04c8 100644 --- a/src/code/inspect.lisp +++ b/src/code/inspect.lisp @@ -108,17 +108,12 @@ evaluated expressions. (return-from %inspect (reread))))))))) (defun eval-for-inspect (command stream) - (let ((result-list (restart-case (multiple-value-list (eval command)) + (let ((result-list (restart-case + (multiple-value-list (interactive-eval command)) (nil () :report "Return to the inspector." (format stream "~%returning to the inspector~%") (return-from eval-for-inspect nil))))) - ;; FIXME: Much of this interactive-EVAL logic is shared with - ;; the main REPL EVAL and with the debugger EVAL. The code should - ;; be shared explicitly. - (setf /// // // / / result-list) - (setf +++ ++ ++ + + - - command) - (setf *** ** ** * * (car /)) - (format stream "~&~{~S~%~}" /))) + (format stream "~&~{~S~%~}" result-list))) (defun tty-display-inspected-parts (description named-p elements stream) (format stream "~%~A" description) @@ -198,6 +193,12 @@ evaluated expressions. t (inspected-standard-object-elements object))) +(defmethod inspected-parts ((object sb-mop:funcallable-standard-object)) + (values (format nil "The object is a ~S of type ~S.~%" + 'sb-mop:funcallable-standard-object (type-of object)) + t + (inspected-standard-object-elements object))) + (defmethod inspected-parts ((object condition)) (values (format nil "The object is a CONDITION of type ~S.~%" (type-of object))