From d07ed2eeb8c69fb4ee75247bb8f22660f0313e9f Mon Sep 17 00:00:00 2001 Message-Id: From: Mark Wooding Date: Fri, 11 Jan 2008 14:44:28 +0000 Subject: [PATCH] Made initialization work on systmes with SWANK which are not running in SLime Organization: Straylight/Edgeware From: espen --- gtk/gtk.lisp | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/gtk/gtk.lisp b/gtk/gtk.lisp index e53ff46..11afe7e 100644 --- a/gtk/gtk.lisp +++ b/gtk/gtk.lisp @@ -20,7 +20,7 @@ ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -;; $Id: gtk.lisp,v 1.88 2008-01-10 22:11:15 espen Exp $ +;; $Id: gtk.lisp,v 1.89 2008-01-11 14:44:28 espen Exp $ (in-package "GTK") @@ -129,15 +129,19 @@ (defun %init-async-event-handling (display) #?-(or (featurep :cmu) (sbcl< 1 0 6)) ;; When running in Slime we need to hook into the Swank server ;; to handle events asynchronously. - (if (find-package "SWANK") - (let ((read-from-emacs (symbol-function (find-symbol "READ-FROM-EMACS" "SWANK"))) - (stream (funcall (find-symbol "CONNECTION.SOCKET-IO" "SWANK") (symbol-value (find-symbol "*EMACS-CONNECTION*" "SWANK"))))) - (setf (symbol-function (find-symbol "READ-FROM-EMACS" "SWANK")) - #'(lambda () - (loop - (case (socket-status (cons stream :input) 0 *event-poll-interval*) - ((:input :eof) (return (funcall read-from-emacs))) - (otherwise (main-iterate-all))))))) + (unless (and + (find-package "SWANK") + (let ((connection (symbol-value (find-symbol "*EMACS-CONNECTION*" "SWANK")))) + (when connection + (let ((read-from-emacs (symbol-function (find-symbol "READ-FROM-EMACS" "SWANK"))) + (stream (funcall (find-symbol "CONNECTION.SOCKET-IO" "SWANK") connection))) + (setf (symbol-function (find-symbol "READ-FROM-EMACS" "SWANK")) + #'(lambda () + (loop + (case (socket-status (cons stream :input) 0 + *event-poll-interval*) + ((:input :eof) (return (funcall read-from-emacs))) + (otherwise (main-iterate-all)))))))))) #-(and clisp readline) (warn "Asynchronous event handling not supported on this platform. An explicit main loop has to be started.")) -- [mdw]