(setenv "WINEDEBUG" "trace+message,trace+icon") (defun connect-to-swank (port-file) (let ((reporter (make-progress-reporter "Waiting for port file"))) (while (not (file-exists-p port-file)) (sit-for .1) (progress-reporter-update reporter))) (let ((port (car (read-from-string (let ((buffer (find-file-noselect port-file))) (prog1 (with-current-buffer buffer (buffer-string)) (kill-buffer buffer))))))) (slime-connect "localhost" port nil nil) (let ((reporter (make-progress-reporter "Waiting for SWANK"))) (while (or (not (slime-connected-p)) (slime-busy-p)) (sit-for .1) (progress-reporter-update reporter))))) (let ((port-file "/tmp/port.txt")) (delete-file port-file) (let ((buffer (get-buffer-create "*wineconsole*"))) (start-process "wineconsole" buffer "wineconsole" "sbcl")) (connect-to-swank port-file) (slime-eval-async '(cl:progn (cl:map cl:nil (cl:function asdf:load-system) '("mcclim.backend.gdi" "clim-examples" "clim-listener" "clouseau")) (cl:load "z:/home/jmoringe/code/cl/mcclim/Backends/gdi/monitor.lisp")) (lambda (thing) (slime-eval-async '(cl:progn (bt:make-thread (cl:lambda () (mcclim.backend.gdi::run-monitor))) (bt:make-thread (cl:lambda () (clim-demo:demodemo))) (bt:make-thread (cl:lambda () (clim-listener:run-listener))) (bt:make-thread (cl:lambda () (clouseau:inspect 'climi::*all-ports*))) nil)))))