Both ilisp and run-lisp when invoked a second time switch back to their buffer. slime did not. Now it does too:
(defun slime () "Start an inferior^_superior Lisp and connect to its Swank server, or switch to the slime REPL buffer if it's already running." (interactive) (if (get-buffer-process (get-buffer "*inferior-lisp*")) (switch-to-buffer (slime-output-buffer)) (when (or (not (slime-bytecode-stale-p)) (slime-urge-bytecode-recompile)) (cond ((and current-prefix-arg (slime-connected-p) (get-buffer "*inferior-lisp*")) (unless (slime-maybe-rearrange-inferior-lisp) (slime-disconnect))) (t (slime-disconnect))) (slime-maybe-start-lisp) (slime-read-port-and-connect))))