anchor.diff:      (setf *wait-message-thread*
             (bt:make-thread
              (lambda () (loop
  +                        :named exit
  +                        :do
                           (handler-case
  -                            (progn
  +                            (loop
  +
  +                              ;; workaround for windows
  +                              ;;  (sleep seems to be necessary to receive
  +                              ;;   change-connection event immediately)
  +                              #+(and sbcl win32)
  +                              (sleep 0.001)
  +
                                 (unless (connected-p)
                                   (setf *wait-message-thread* nil)
  -                                (return))
  +                                (return-from exit))
                                 (when (message-waiting-p *connection* :timeout 1)
                                   (let ((barrior t))
                                     (send-event (lambda ()
  
positive.code:     (loop
        (let ((*connection* (find-connection)))
          (unless *connection* (return))
          (lisp-rex '(uiop:quit))
          (remove-connection *connection*)))))
  
  (defun sit-for* (second)
  
negative.code:         (dolist (c conn-list)
            (let* ((s  (lem-lisp-mode.swank-protocol::connection-socket c))
                   (fd (sb-bsd-sockets::socket-file-descriptor (usocket:socket s))))
              (ignore-errors
                ;;(usocket:socket-shutdown s :IO)
                ;;(usocket:socket-close s)
                (sockint::shutdown fd sockint::SHUT_RDWR)
                (sockint::close fd)))))))
    (add-hook *exit-editor-hook* 'slime-quit-all-for-win32))
  
  (pushnew (cons ".lisp$" 'lisp-mode) *auto-mode-alist* :test #'equal)
  