I'm trying to use slime (FAIRLY_STABLE) through a somewhat fragile collection of ssh pipes.
I'm forwarding local port 12321 through to the remote swank server. I can connect to it manually fine, and see a "slime-open-stream-to-lisp" message. However, when I try to connect to it with emacs (C-u M-x slime-connect localhost 12321), it fails:
'error in process filter: make client process failed: connection refused, :name, *lisp-output-stream*, :buffer, nil, :host, localhost, :service, 32848'
I'm pretty sure I have gotten this to work in the past. I thought slime only used one connection. Has this changed? I've been out of the loop for a while, but I didn't ask it to use a port 32848 above.
Is there a way to use it in a single connection mode? I'm trying to work on a web application remotely, and I don't wish to expose the machine directly, and would really not like to set up a full VPN if I can help it.
On a peripherally related note, is there any sort of support for a translation table for pathnames? I'd like to edit the remote files with tramp mode, but if the paths get sent over as "/multi:ssh:foo@bar.quux:ssh:foo@gronk:/baz" it's not going to like it too much. :)
-bcd -- *** Brian Downing <bdowning at lavos dot net>
Brian Downing bdowning@lavos.net writes:
I'm pretty sure I have gotten this to work in the past. I thought slime only used one connection. Has this changed? I've been out of the loop for a while, but I didn't ask it to use a port 32848 above.
This is configurable. By default we use 2 connections. The second connection is only used for "raw" output to Emacs; it's a pure performance optimization. If you set *use-dedicated-output-stream* to nil (e.g., in your .swank.lisp), SLIME uses only a single connection.
On a peripherally related note, is there any sort of support for a translation table for pathnames? I'd like to edit the remote files with tramp mode, but if the paths get sent over as "/multi:ssh:foo@bar.quux:ssh:foo@gronk:/baz" it's not going to like it too much. :)
This message http://article.gmane.org/gmane.lisp.slime.devel/254 contains some code to do that, but it's not yet integrated in the CVS version.
I'd like to note, that interrupting a remote Lisp will not work, because we use Unix signals for this. Proposals how we could interrupt a remote Lisp are most welcome.
Helmut.
On Wed, Jan 21, 2004 at 12:07:18AM +0100, Helmut Eller wrote:
This is configurable. By default we use 2 connections. The second connection is only used for "raw" output to Emacs; it's a pure performance optimization. If you set *use-dedicated-output-stream* to nil (e.g., in your .swank.lisp), SLIME uses only a single connection.
Great! I'll give this a try.
I'd like to note, that interrupting a remote Lisp will not work, because we use Unix signals for this. Proposals how we could interrupt a remote Lisp are most welcome.
Tricky. As a completely off-the-cuff idea which would only work with threaded lisps:
The thread which runs the swank network connection has a policy of never blocking to run arbitrary lisp code. Any request to do anything will be handed off to (1-n) worker threads whose job it is to run the request. To interrupt, send an interrupt request to the swank server, which can receive it since it is never blocked. It can then issue a break to the appropriate job thread. (In SBCL, (sb-thread:interrupt-thread thread #'break), which hopefully would trigger the slime debugger. There are a ton of deadlock issues with interrupt-thread, unfortunatly.)
-bcd -- *** Brian Downing <bdowning at lavos dot net>