(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)
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))
(inspected-standard-object-elements object)))
(defmethod inspected-parts ((object function))
- (values (format nil "The object is a ~A named ~S.~%"
- (if (closurep object) 'closure 'function)
- (%fun-name object))
- t
- ;; Defined-from stuff used to be here. Someone took
- ;; it out. FIXME: We should make it easy to get
- ;; to DESCRIBE from the inspector.
- (list*
- (cons "Lambda-list" (%fun-lambda-list object))
- (cons "Ftype" (%fun-type object))
- (when (closurep object)
- (list
- (cons "Closed over values" (%closure-values object)))))))
+ (values (format nil "The object is a ~A named ~S.~%"
+ (if (closurep object) 'closure 'function)
+ (nth-value 2 (function-lambda-expression object)))
+ t
+ ;; Defined-from stuff used to be here. Someone took
+ ;; it out. FIXME: We should make it easy to get
+ ;; to DESCRIBE from the inspector.
+ (list*
+ (cons "Lambda-list" (%fun-lambda-list object))
+ (cons "Ftype" (%fun-type object))
+ (when (closurep object)
+ (list
+ (cons "Closed over values" (%closure-values object)))))))
+
+#+sb-eval
+(defmethod inspected-parts ((object sb-eval:interpreted-function))
+ (values (format nil "The object is an interpreted function named ~S.~%"
+ (nth-value 2 (function-lambda-expression object)))
+ t
+ ;; Defined-from stuff used to be here. Someone took
+ ;; it out. FIXME: We should make it easy to get
+ ;; to DESCRIBE from the inspector.
+ (list
+ (cons "Lambda-list" (sb-eval:interpreted-function-lambda-list object))
+ (cons "Definition" (function-lambda-expression object))
+ (cons "Documentation" (sb-eval:interpreted-function-documentation object)))))
(defmethod inspected-parts ((object vector))
(values (format nil