So after reading some of the horror stories of getting clisp inside cygwin to work with slime + emacs on windows, I was determined to get a simpler solution than rewriting how all the path names are parsed inside slime. So this is what I came up with in my .emacs:
(require 'slime) (slime-setup) (defun slimed () (interactive) (let ((lisp-process (start-process "lisp" "lisp" "clisp" "-i ~/.slime.lisp -ansi"))) (while (and (memq (process-status lisp-process) '(open run)) (goto-char (point-max)) (forward-line -1) (not (looking-at ";; Swank started"))) (accept-process-output lisp-process 1) (sit-for 1)) (slime-connect "127.0.0.1" 4005)))
My .slime.lisp file is:
(load "/usr/emacs/site-lisp/slime/swank-loader.lisp") (swank-loader::loadup) (swank::create-server)
So, everything works great! I was super pleased with the hack, "slimed" gets slime REPL running and everything in slime-mode works....
except for M-. It causes the slime trace quoted below, but only in cases where it should actually find the symbol in question. If the symbol isn't defined, slime propperly indicates this. I'm somewhat new to slime (and windows), so if anyone has any insight, let me know. For the record I'm using the CVS version of slime on Emacs 22.2 with clisp 2.44.
Thanks, -Nat
Slime trace: --------------------------------------------------
PARSE-NAMESTRING: argument #1=(SYSTEM::DEFUN/DEFMACRO #P"/home/Nat/.slime.lisp" 3 3) should be a pathname designator #2=(OR STRING FILE-STREAM PATHNAME) [Condition of type SIMPLE-TYPE-ERROR]
Restarts: 0: [ABORT] Return to SLIME's top level. 1: [CLOSE-CONNECTION] Close SLIME connection 2: [SKIP] skip (CREATE-SERVER)
Backtrace: 0: [319] frame binding variables (~ = dynamically): | ~ SWANK::*SLDB-STEPPING-P* <--> NIL [No Locals] 1: [316] frame binding variables (~ = dynamically): | ~ SWANK::*SLDB-LEVEL* <--> 0 2: [313] frame binding variables (~ = dynamically): | ~ *PACKAGE* <--> #<PACKAGE COMMON-LISP-USER> 3: <1/307> #<COMPILED-FUNCTION SWANK::DEBUG-IN-EMACS> - #(NIL #<SIMPLE-TYPE-ERROR #x1025C0AD>) 4: <1/304> #<COMPILED-FUNCTION SWANK:SWANK-DEBUGGER-HOOK> [302] frame binding variables (~ = dynamically): | ~ *DEBUGGER-HOOK* <--> #<COMPILED-FUNCTION SWANK:SWANK-DEBUGGER-HOOK> 5: <1/299> #<SYSTEM-FUNCTION INVOKE-DEBUGGER> 1 [298] frame binding variables (~ = dynamically): | ~ SYSTEM::*PRIN-STREAM* <--> #<UNBOUND> 6: [295] frame binding variables (~ = dynamically): | ~ *PRINT-READABLY* <--> NIL 7: [292] frame binding variables (~ = dynamically): | ~ *PRINT-ESCAPE* <--> T 8: <1/289> #<SYSTEM-FUNCTION PARSE-NAMESTRING> 1 - #<UNBOUND> 9: <1/283> #<SYSTEM-FUNCTION PATHNAME-TYPE> - NIL 10: <1/278> #<COMPILED-FUNCTION SWANK-BACKEND::FSPEC-PATHNAME> - #<COMPILED-FUNCTION SWANK-BACKEND::FSPEC-LOCATION> 11: <1/276> #<COMPILED-FUNCTION SWANK-BACKEND::FSPEC-LOCATION> - TEST 12: <1/273> #<COMPILED-FUNCTION #:|244 245 (DEFIMPLEMENTATION FIND-DEFINITIONS (NAME) ...)-21-1-1|> - #<COMPILED-FUNCTION #:|244 245 (DEFIMPLEMENTATION FIND-DEFINITIONS (NAME) ...)-21-1-1|> 13: <1/269> #<COMPILED-FUNCTION SWANK-BACKEND:FIND-DEFINITIONS> - #<COMPILED-FUNCTION SWANK::XREF>ELISP> 14: <1/263> #<COMPILED-FUNCTION SWANK:FIND-DEFINITIONS-FOR-EMACS> - #<COMPILED-FUNCTION SWANK:FIND-DEFINITIONS-FOR-EMACS> 15: [261] EVAL frame for form (SWANK:FIND-DEFINITIONS-FOR-EMACS "test") 16: [258] frame binding environments VAR_ENV <--> NIL FUN_ENV <--> NIL BLOCK_ENV <--> NIL GO_ENV <--> NIL DECL_ENV <--> ((DECLARATION OPTIMIZE DECLARATION)) 17: <1/253> #<SYSTEM-FUNCTION EVAL> [252] frame binding variables (~ = dynamically): | ~ SWANK::*BUFFER-PACKAGE* <--> #<UNBOUND> 18: [249] frame binding variables (~ = dynamically): | ~ SWANK::*PENDING-CONTINUATIONS* <--> NIL 19: [246] frame binding variables (~ = dynamically): | ~ SWANK::*BUFFER-READTABLE* <--> #<UNBOUND> 20: [242] unwind-protect frame [No Locals] 21: <1/237> #<COMPILED-FUNCTION SWANK::EVAL-FOR-EMACS-1> - #<COMPILED-FUNCTION SWANK::EVAL-FOR-EMACS-1> 22: [236] frame binding variables (~ = dynamically): | ~ *DEBUGGER-HOOK* <--> #<COMPILED-FUNCTION SWANK:SWANK-DEBUGGER-HOOK> 23: <1/232> #<COMPILED-FUNCTION #:|592 597 (DEFINTERFACE CALL-WITH-DEBUGGER-HOOK (HOOK FUN) ...)-57-3-1|> - #<COMPILED-FUNCTION #:|592 597 (DEFINTERFACE CALL-WITH-DEBUGGER-HOOK (HOOK FUN) ...)-57-3-1|> 24: <1/227> #<COMPILED-FUNCTION SWANK-BACKEND:CALL-WITH-DEBUGGER-HOOK> - #(NIL (SWANK:FIND-DEFINITIONS-FOR-EMACS "test") NIL 11) 25: <1/223> #<COMPILED-FUNCTION SWANK::EVAL-FOR-EMACS> <2/223> #<SYSTEM-FUNCTION FUNCALL> 4 - SWANK::EVAL-FOR-EMACS 26: <1/217> #<COMPILED-FUNCTION SWANK::READ-FROM-EMACS> [217] frame binding variables (~ = dynamically): | ~ SWANK::*SLDB-QUIT-RESTART* <--> ABORT 27: [214] frame binding variables (~ = dynamically): | ~ SYSTEM::*ACTIVE-RESTARTS* <--> (#S(RESTART :NAME SWANK::CLOSE-CONNECTION :TEST #1=#<COMPILED-FUNCTION SYSTEM::DEFAULT-RESTART-TEST> :INVOKE-TAG #:SIMPLE-RESTART-21719 :INVOKE-FUNCTION NIL :REPORT #<FUNCTION :LAMBDA (STREAM) (FORMAT STREAM "Close SLIME connection")> :INTERACTIVE #2=#<COMPILED-FUNCTION SYSTEM::DEFAULT-RESTART-INTERACTIVE> :MEANINGFULP T) #S(RESTART :NAME SYSTEM::SKIP :TEST #1# :INVOKE-TAG NIL :INVOKE-FUNCTION #<COMPILED-FUNCTION SYSTEM::EVAL-LOADED-FORM-1> :REPORT #<COMPILED-FUNCTION SYSTEM::EVAL-LOADED-FORM-2> :INTERACTIVE #2# :MEANINGFULP T) #S(RESTART :NAME SYSTEM::STOP :TEST #1# :INVOKE-TAG NIL :INVOKE-FUNCTION #<COMPILED-FUNCTION SYSTEM::EVAL-LOADED-FORM-3> :REPORT #<COMPILED-FUNCTION SYSTEM::EVAL-LOADED-FORM-4> :INTERACTIVE #2# :MEANINGFULP T)) 28: [211] catch frame for tag #:SIMPLE-RESTART-21209 29: <1/207> #<COMPILED-FUNCTION SWANK::HANDLE-REQUEST-1> - #<COMPILED-FUNCTION SWANK::HANDLE-REQUEST-1> 30: [206] frame binding variables (~ = dynamically): | ~ *DEBUGGER-HOOK* <--> #<COMPILED-FUNCTION SWANK:SWANK-DEBUGGER-HOOK> 31: <1/202> #<COMPILED-FUNCTION #:|592 597 (DEFINTERFACE CALL-WITH-DEBUGGER-HOOK (HOOK FUN) ...)-57-3-1|> - #<COMPILED-FUNCTION #:|592 597 (DEFINTERFACE CALL-WITH-DEBUGGER-HOOK (HOOK FUN) ...)-57-3-1|> 32: <1/197> #<COMPILED-FUNCTION SWANK-BACKEND:CALL-WITH-DEBUGGER-HOOK> - #<COMPILED-FUNCTION SWANK::CALL-WITH-CONNECTION-1> 33: <1/194> #<COMPILED-FUNCTION SWANK::CALL-WITH-CONNECTION-1> - #<COMPILED-FUNCTION SWANK::CALL-WITH-CONNECTION-1> 34: [193] frame binding variables (~ = dynamically): | ~ *TERMINAL-IO* <--> #<IO TERMINAL-STREAM> 35: [190] frame binding variables (~ = dynamically): | ~ *STANDARD-INPUT* <--> #<IO SYNONYM-STREAM *TERMINAL-IO*> 36: [187] frame binding variables (~ = dynamically): | ~ *QUERY-IO* <--> #<IO SYNONYM-STREAM *TERMINAL-IO*> 37: [184] frame binding variables (~ = dynamically): | ~ *DEBUG-IO* <--> #<IO SYNONYM-STREAM *TERMINAL-IO*> 38: [181] frame binding variables (~ = dynamically): | ~ *TRACE-OUTPUT* <--> #<IO SYNONYM-STREAM *TERMINAL-IO*> 39: [178] frame binding variables (~ = dynamically): | ~ *ERROR-OUTPUT* <--> #<IO SYNONYM-STREAM *TERMINAL-IO*> 40: [175] frame binding variables (~ = dynamically): | ~ *STANDARD-OUTPUT* <--> #<IO SYNONYM-STREAM *TERMINAL-IO*> 41: <1/167> #<COMPILED-FUNCTION SWANK::CALL-WITH-REDIRECTED-IO> - #<COMPILED-FUNCTION SWANK::MAYBE-CALL-WITH-IO-REDIRECTION> 42: <1/164> #<COMPILED-FUNCTION SWANK::MAYBE-CALL-WITH-IO-REDIRECTION> [162] frame binding variables (~ = dynamically): | ~ SWANK::*EMACS-CONNECTION* <--> NIL 43: <1/157> #<COMPILED-FUNCTION SWANK::CALL-WITH-CONNECTION> [155] frame binding variables (~ = dynamically): | ~ SWANK::*SWANK-STATE-STACK* <--> NIL 44: <1/151> #<COMPILED-FUNCTION SWANK::HANDLE-REQUEST> - #<COMPILED-FUNCTION SWANK::SIMPLE-SERVE-REQUESTS-2> 45: <1/149> #<COMPILED-FUNCTION SWANK::SIMPLE-SERVE-REQUESTS-2> - #<COMPILED-FUNCTION SWANK::SIMPLE-SERVE-REQUESTS-2> 46: [148] handler frame for conditions SWANK::SWANK-ERROR 47: [142] compiled block frame for #S(RESTART :NAME SWANK::CLOSE-CONNECTION :TEST #<COMPILED-FUNCTION SYSTEM::DEFAULT-RESTART-TEST> :INVOKE-TAG #:SIMPLE-RESTART-21719 :INVOKE-FUNCTION NIL :REPORT #<FUNCTION :LAMBDA (STREAM) (FORMAT STREAM "Close SLIME connection")> :INTERACTIVE #<COMPILED-FUNCTION SYSTEM::DEFAULT-RESTART-INTERACTIVE> :MEANINGFULP T) 48: [138] frame binding variables (~ = dynamically): | ~ SYSTEM::*ACTIVE-RESTARTS* <--> (#S(RESTART :NAME SYSTEM::SKIP :TEST #1=#<COMPILED-FUNCTION SYSTEM::DEFAULT-RESTART-TEST> :INVOKE-TAG NIL :INVOKE-FUNCTION #<COMPILED-FUNCTION SYSTEM::EVAL-LOADED-FORM-1> :REPORT #<COMPILED-FUNCTION SYSTEM::EVAL-LOADED-FORM-2> :INTERACTIVE #2=#<COMPILED-FUNCTION SYSTEM::DEFAULT-RESTART-INTERACTIVE> :MEANINGFULP T) #S(RESTART :NAME SYSTEM::STOP :TEST #1# :INVOKE-TAG NIL :INVOKE-FUNCTION #<COMPILED-FUNCTION SYSTEM::EVAL-LOADED-FORM-3> :REPORT #<COMPILED-FUNCTION SYSTEM::EVAL-LOADED-FORM-4> :INTERACTIVE #2# :MEANINGFULP T)) 49: [135] catch frame for tag #:SIMPLE-RESTART-21719 50: [132] unwind-protect frame 51: <1/128> #<COMPILED-FUNCTION SWANK::SIMPLE-SERVE-REQUESTS> - #<COMPILED-FUNCTION SWANK::SIMPLE-SERVE-REQUESTS> 52: <1/125> #<COMPILED-FUNCTION SWANK::SERVE-REQUESTS> - #<SWANK::CONNECTION #x10274595> 53: [122] unwind-protect frame 54: <1/118> #<COMPILED-FUNCTION SWANK::SERVE-CONNECTION> - #<COMPILED-FUNCTION SWANK::SETUP-SERVER-SERVE> 55: <1/113> #<COMPILED-FUNCTION SWANK::SETUP-SERVER-SERVE> - NIL 56: <1/107> #<COMPILED-FUNCTION SWANK::SETUP-SERVER> - #<COMPILED-FUNCTION SWANK:CREATE-SERVER> 57: <1/101> #<COMPILED-FUNCTION SWANK:CREATE-SERVER> - #<COMPILED-FUNCTION SWANK:CREATE-SERVER> 58: [96] EVAL frame for form (SWANK:CREATE-SERVER) 59: [93] frame binding environments VAR_ENV <--> NIL FUN_ENV <--> NIL BLOCK_ENV <--> NIL GO_ENV <--> NIL DECL_ENV <--> ((DECLARATION OPTIMIZE DECLARATION)) 60: <1/88> #<SYSTEM-FUNCTION EVAL> - #<COMPILED-FUNCTION SYSTEM::EVAL-LOADED-FORM-LOW> [No Locals] 61: <1/86> #<COMPILED-FUNCTION SYSTEM::EVAL-LOADED-FORM-LOW> [85] frame binding variables (~ = dynamically): | ~ SYSTEM::*ACTIVE-RESTARTS* <--> NIL 62: [82] compiled tagbody frame for #(NIL NIL) 63: <1/74> #<COMPILED-FUNCTION SYSTEM::EVAL-LOADED-FORM> - (SWANK:CREATE-SERVER) 64: [71] unwind-protect frame 65: [69] frame binding variables (~ = dynamically): 66: [68] frame binding variables (~ = dynamically): | ~ SYSTEM::*C-ERROR-OUTPUT* <--> #<UNBOUND> 67: [65] frame binding variables (~ = dynamically): | ~ *READTABLE* <--> #<READTABLE #x100B5AED> 68: [62] frame binding variables (~ = dynamically): | ~ *PACKAGE* <--> #<PACKAGE COMMON-LISP-USER> 69: [59] frame binding variables (~ = dynamically): | ~ FFI::*FOREIGN-LIBRARY* <--> NIL 70: [56] frame binding variables (~ = dynamically): | ~ FFI::*FOREIGN-LANGUAGE* <--> NIL 71: [53] frame binding variables (~ = dynamically): | ~ SYSTEM::*CURRENT-SOURCE-LINE-2* <--> NIL 72: [50] frame binding variables (~ = dynamically): | ~ SYSTEM::*CURRENT-SOURCE-LINE-1* <--> NIL 73: [47] frame binding variables (~ = dynamically): | ~ SYSTEM::*CURRENT-SOURCE-FILE* <--> NIL 74: [44] frame binding variables (~ = dynamically): | ~ *LOAD-TRUENAME* <--> NIL 75: [41] frame binding variables (~ = dynamically): | ~ *LOAD-PATHNAME* <--> NIL 76: [38] frame binding variables (~ = dynamically): | ~ SYSTEM::*LOAD-INPUT-STREAM* <--> NIL 77: [35] frame binding variables (~ = dynamically): | ~ SYSTEM::*LOAD-LEVEL* <--> 0 78: [30] frame binding variables (~ = dynamically): | ~ *LOAD-OBSOLETE-ACTION* <--> NIL 79: [27] frame binding variables (~ = dynamically): | ~ *LOAD-COMPILING* <--> NIL 80: [23] frame binding variables (~ = dynamically): | ~ *LOAD-ECHO* <--> NIL 81: [20] frame binding variables (~ = dynamically): | ~ *LOAD-PRINT* <--> NIL 82: [17] frame binding variables (~ = dynamically): | ~ *LOAD-VERBOSE* <--> T