[slime-devel] Re: patch: make slime-connection ask if it should start slime if there is no connection

Madhu enometh at meer.net
Thu Feb 21 02:36:38 UTC 2008


[reply-to list only]

* "Nikodemus Siivola" Wrote on Wed, 20 Feb 2008 16:33:56 +0200:

| The attached patch make SLIME-CONNECTION ask "No connection: start
| Slime?" if there is no connection -- and then wait for the connection
| to come up.

FWIW. I have been patching slime-connection from the very beginning to
get this behaviour.

|  (defun slime-connection ()
|    "Return the connection to use for Lisp interaction.
|  Signal an error if there's no connection."
| @@ -1868,7 +1873,11 @@
|      (cond ((and (not conn) slime-net-processes)
|             (error "No default connection selected."))
|            ((not conn)
| -           (error "Not connected."))
| +           (if (not (maybe-slime "No connection: start Slime? "))
| +               (error "No connection.")
| +             (while (not (setq conn (slime-current-connection)))
| +               (sit-for 1))
| +             conn))
|            ((not (eq (process-status conn) 'open))
|             (error "Connection closed."))
|            (t conn))))

The added code [above] would make sense in the next cond branch too.
However I typically wish to connect to a lisp running swank at port
4005, started OUTSIDE of emacs --- Here is my local definition, to
illustrate the idea

(defun slime-connection () ;;madhu  050404
  "Return the connection to use for Lisp interaction.
Signal an error if there's no connection."
  (let ((conn (slime-current-connection)))
    (unless conn
      (when slime-net-processes
	(setq slime-default-connection (car slime-net-processes))
	(setq conn (slime-current-connection))))
    (cond ((and (not conn) slime-net-processes)
	   (error "No default connection selected. XXX")) ; after trying
	  ((not conn)
	   (or (and (y-or-n-p "Not connected. connect now? ")
		    (slime-connect "localhost" 4005))
	       (error "Not connected.")))
	  ((not (eq (process-status conn) 'open))
	   (or (and (y-or-n-p "Connection closed. connect now? ")
		    (slime-connect "localhost" 4005))
	       (error "Connection closed.")))
	  (t conn))))


| Reasons I did not merge this straightaway:
|
|  * It would be a lot better if Slime started by SLIME-CONNECTION
|    like this didn't rearrange windows the way it now does.

This [rearrangement of windows] is indeed annoying

--
Madhu







More information about the slime-devel mailing list