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.
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).
Thanks. It works.