Ahoyhoy,
A few times I've sat down to "fix" the behaviour of `M-x slime' and `M-x slime-connect' as regards multiple connections but I always give up and can't decide what they should do.
Here are some cases:
M-x slime, no prefix argument, already connected: Close all connections, but don't kill any inferior-lisps. If *inferior-lisp* exists then connect to that Lisp, otherwise start a new one and connect.
.. or with prefix arg: Ask if we should create an additional connection. If yes, create a new *inferior-lisp* and connect. If no, do as above.
M-x slime-connect, no prefix argument, already connected: Close all existing connections and then make the new one.
.. or with prefix arg: Ask if we should close existing connections first. If yes, do as above. If no, keep existing connections and create a new one.
Now that the protocol is robust I don't think you'd want `M-x slime' to reconnect to the current *inferior-lisp*, so maybe it should create an additional connection? And what about slime-connect?
There's also the question of how we should recycle REPL buffers. I don't know if anyone has strong opinions on that.
-Luke