quit shortcut doesn't work #9

Closed
bach741974 opened this Issue Oct 14, 2011 · 2 comments

2 participants

@bach741974

sbcl-1.0.52.0
When I try use shortcut quit in slime repl it doesn't close sbcl. After quit I need to type (quit) in sbcl repl (inferior-lisp) to exit

from sbcl. CCL works fine in that situation. Thanks.

@akovalenko
Owner

First, (quit) is not needed actually, just about anything can be entered instead (e.g. an empty line with RET, or process EOF with M-: (process-send-eof)). My SBCL uses asynchronous I/O whenever possible, but it's not normally possible for inherited pipes on Windows: they can't be set to overlapped mode.

To my knowledge, CCL uses auxilary threads for reacting on outstanding I/O completion asynchronously, when it's impossible for some channel in a straightforward way. While I had to use this approach for console I/O, I'm reluctant to add similar workaround for pipes -- the solution has some downsides that I wanted to avoid.

Meanwhile, the following workaround (on the Emacs side) can be used:

;;; Add it to your ~/.emacs
;;; send EOF to the inferior process after shutting down anything else.
(defadvice slime-quit-lisp (around alert-sbcl activate)
  (let ((process (slime-inferior-process (slime-connection))))
    ad-do-it (process-send-eof process)))

Hope this helps (and also hope to come up eventually with a real solution).

@bach741974

Thanks. It works.

@bach741974 bach741974 closed this Dec 5, 2011
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment