Russ Tyndall russ@acceleration.net writes:
When attempting to inspect a network-stream of underlying type SB-SYS:FD-STREAM I always get the following error:
Error: The value NIL is not of type PATHNAME.
I wrote a small patch to swank-fancy-inspector to ignore errors coming from accessing the pathname slot and not render the action link (visit file and show current position) when we do not have a pathname.
The actual issue is
https://bugs.launchpad.net/sbcl/+bug/310098
Cheers, Russ Tyndall Acceleration.net Software Developer
commit a26d435542936b2065b9d30e94df7bbed156a0e2 Author: Russ Tyndall russ@acceleration.net Date: Mon Jan 11 12:04:16 2010 -0500
Made swank-fancy-inspector NOT error when attempting to inspect network streams (due to their pathname being unbound)
diff --git a/contrib/swank-fancy-inspector.lisp b/contrib/swank-fancy-inspector.lisp index f68c6b0..f30e0c0 100644 --- a/contrib/swank-fancy-inspector.lisp +++ b/contrib/swank-fancy-inspector.lisp @@ -805,27 +805,29 @@ SPECIAL-OPERATOR groups." (defmethod emacs-inspect ((stream file-stream)) (multiple-value-bind (content) (call-next-method)
(append
`("Pathname: "
(:value ,(pathname stream))
(:newline) " "
,@(when (open-stream-p stream)
`((:action "[visit file and show current position]"
,(make-visit-file-thunk stream)
:refreshp nil)
(:newline))))
content)))
- (let ((pathname (ignore-errors (pathname stream))))
(append
`("Pathname: "
(:value ,pathname)
(:newline) " "
,@(when (and (open-stream-p stream) pathname)
`((:action "[visit file and show current position]"
,(make-visit-file-thunk stream)
:refreshp nil)
(:newline))))
content))))
(defmethod emacs-inspect ((condition stream-error)) (multiple-value-bind (content) (call-next-method)
- (let ((stream (stream-error-stream condition)))
- (let* ((stream (stream-error-stream condition))
(pathname (ignore-errors (pathname stream)))) (if (typep stream 'file-stream) (append `("Pathname: "
(:value ,(pathname stream))
(:value ,pathname) (:newline) " "
,@(when (open-stream-p stream)
,@(when (and (open-stream-p stream) pathname) `((:action "[visit file and show current position]" ,(make-visit-file-thunk stream) :refreshp nil)
(Is there something better than using IGNORE-ERRORS here?)
In case, PATHNAME signals an error, the "PATHNAME: ..." ispec should be omitted completely, I think.
-T.