[slime-devel] Error in swank-fancy-inspector when inspecting network streams [with patch]
Tobias C. Rittweiler
tcr at freebits.de
Mon Jan 11 19:00:17 UTC 2010
Russ Tyndall <russ at 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 at 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.
More information about the slime-devel
mailing list