[slime-devel] PATCH: Some more support for running multiple simultaneous connections
Helmut Eller
e9626484 at stud3.tuwien.ac.at
Tue Feb 24 23:55:00 UTC 2004
Peter Seibel <peter at javamonkey.com> writes:
> Here's a patch containing some code I wrote to support running
> multiple simultaneous SLIME connections to different Lisp
> implementations. I think I made about as good use of the existing
> infrastructure as I could but may have missed something.
Nice work! It's good that someone who actually uses the functionality
also writes code.
> (Speaking of
> which, is there a reason certain buffer local vars (e.g.
> slime-connection-number) aren't defined with
> slime-def-connection-var?)
Probably just an oversight.
> +(defmacro* slime-with-chosen-connection ((n) &rest body)
> + "Make the connection choosen by a universal argument current."
> + `(let ((slime-buffer-connection (slime-get-named-connection ,n slime-buffer-connection)))
> + , at body))
I changed this a bit, so that the 'current-prefix-arg' is used. This
way we don't have to modify the signatures of other functions.
> +(slime-def-connection-var slime-lisp-implementation-type-name nil
> + "The short name for the implementation type of the Lisp process.")
We could call this slime-connection-name and use a similar naming
scheme as Emacs uses for buffer names, so that we can have multiple
connections to Lisps of the same type.
> +(defun slime-switch-to-repl (p)
> + "Switch to the REPL. With a prefix arg, prompt for a named REPL."
> + (interactive "p")
> + (cond
> + ((= p 1)
> + (slime-switch-to-output-buffer))
> + ((or (= p 4) (= p 16))
> + (switch-to-buffer
> + (slime-find-connection-buffer-by-type-name (slime-read-lisp-implementation-type-name)))
> + (if (= p 16) (slime-make-default-connection)))))
I merged this into slime-switch-to-output-buffer.
> +(defun slime-read-lisp-implementation-type-name ()
> + (let ((default (slime-lisp-implementation-type-name)))
> + (completing-read
> + (format "Name (default %s): " default)
> + (mapcar #'(lambda (p) (let ((slime-dispatching-connection p)) (slime-with-connection-buffer (p) (list (slime-lisp-implementation-type-name))))) slime-net-processes)
> + nil
> + t
> + nil
> + nil
> + default)))
Please use fewer than 80 characters per line.
> +(defslimefun lisp-implementation-type-name ()
> + #+cmu "cmu"
> + #+sbcl "sbcl"
> + #+openmcl "openmcl"
> + #+lispworks "lispworks"
> + #+allegro "allegro"
> + #+clisp "clisp")
No, no, no. This style is taboo. The proper way is to define a new
interface function and to implement it in the implementation specific
file.
I'll ask Erik Enge to give you CVS write permissions.
Helmut.
More information about the slime-devel
mailing list