I had slime + clisp (on cygwin) working fine. Yesterday I decided to upgrade various cygwin packages (including clisp). Now when I try to start slime I get this error:
;; Loading file /home/jcano/.clisprc.lisp ... ;; Loaded file /home/jcano/.clisprc.lisp [1]> *** - LOAD: A file with name /c/cygwin/home/jcano/elisp/slime/2006-06-21/slime/swank-loader.lisp does not exist The following restarts are available: ABORT :R1 ABORT
I tried picking up the latest SLIME (my previous slime was 2006-jan-20) but neither "fairly stable" nor "head" made any difference. I also blew away my ~/.slime directory in case that was stale (slime is no longer getting far enough to rebuild ~/.slime) but that didn't help.
Yes, I looked in "~/elisp/slime/2006-06-21/slime" and it does indeed contain the file that
Here is my current version of clisp;
GNU CLISP 2.38 (2006-01-24) (built on winsteingoldlap.bluelnk.net [10.41.52.143]) Software: GNU C 3.4.4 (cygming special) (gdc 0.12, using dmd 0.125) gcc -W -Wswitch -Wcomment -Wpointer-arith -Wimplicit -Wreturn-type -Wmissing-declarations -Wno-sign-compare -O2 -fexpensive-optimizations -DUNICODE -DDYNAMIC_FFI -I. -x none -lintl libcharset.a libavcall.a libcallback.a -lreadline -lncurses -liconv -L/usr/local/libsigsegv-cygwin/lib -lsigsegv -L/usr/X11R6/lib -lX11 SAFETY=0 HEAPCODES STANDARD_HEAPCODES SPVW_PAGES SPVW_MIXED libsigsegv 2.2 libiconv 1.9 libreadline 5.0 Features: (READLINE REGEXP SYSCALLS I18N LOOP COMPILER CLOS MOP CLISP ANSI-CL COMMON-LISP LISP=CL INTERPRETER SOCKETS GENERIC-STREAMS LOGICAL-PATHNAMES SCREEN FFI GETTEXT UNICODE BASE-CHAR=CHARACTER PC386 UNIX CYGWIN) C Modules: (clisp i18n syscalls regexp readline) Installation directory: /usr/lib/clisp/ User language: ENGLISH Machine: I686 (I686) jcano-lt [192.168.1.103]
I run slime like this
M-x slime
and this is in my .emacs:
(defun slime () "load my .emacs_slime and run M-x slime" (interactive) (load-file "~/.emacs_slime") (slime))
.emacs_slime file:
;; -*- mode: emacs-lisp -*- (message "begin .emacs_slime") (setq inferior-lisp-program "clisp")
(add-to-list 'load-path ;; CVS head (concat (getenv "HOME") "/elisp/slime/2006-06-21/slime") t) (require 'slime) (slime-setup)
;;; Configuration of Erik Naggum's HyperSpec access package.
;; If you have a local copy of the HyperSpec, set its path here. (setq common-lisp-hyperspec-root "file:///c:/cygwin/home/jcano/docs/CL/HyperSpec/") (setq common-lisp-hyperspec-symbol-table (concat (getenv "HOME") "/docs/CL/HyperSpec/ilisp/map_sym.txt" )) (message "end .emacs_slime")
If I run clisp and execute the following command manually:
[1]> (load "/c/cygwin/home/jcano/elisp/slime/2006-06-21/slime/swank-loader.lisp")
*** - LOAD: A file with name /c/cygwin/home/jcano/elisp/slime/2006-06-21/slime/swank-loader.lisp does not exist The following restarts are available: ABORT :R1 ABORT Break 1 [2]> (load "/c:cygwin/home/jcano/elisp/slime/2006-06-21/slime/swank-loader.lisp")
*** - PARSE-NAMESTRING: syntax error in filename "/c:cygwin/home/jcano/elisp/slime/2006-06-21/slime/swank-loader.lisp" at position 2 The following restarts are available: ABORT :R1 ABORT ABORT :R2 ABORT Break 2 [3]> abort
Break 1 [2]> abort
[4]> (load "/home/jcano/elisp/slime/2006-06-21/slime/swank-loader.lisp") ;; Loading file /home/jcano/elisp/slime/2006-06-21/slime/swank-loader.lisp ... ;; Compiling file /home/jcano/elisp/slime/2006-06-21/slime/swank-backend.lisp ... ;; Wrote file ;; /home/jcano/.slime/fasl/2006-06-18/clisp-2.38-unix-pc386/swank-backend.fas
[... successful loading ...]
I see in slime.el
(eval-and-compile (defvar slime-path (let ((path (or (locate-library "slime") load-file-name))) (and path (file-name-directory path))) "Directory containing the Slime package. This is used to load the supporting Common Lisp library, Swank. The default value is automatically computed from the location of the Emacs Lisp package."))
; ...
(defun slime-init-command (port-filename coding-system) "Return a string to initialize Lisp." (let ((loader (if (file-name-absolute-p slime-backend) slime-backend (concat slime-path slime-backend))) (encoding (slime-coding-system-cl-name coding-system))) (format "%S\n%S\n\n" `(load ,loader :verbose t) `(swank:start-server ,port-filename :external-format ,encoding))))
OK, so CLisp wants file paths to be in cygwin/unix format (e.g. "/home/jcaon" and "/cygdrive/c/cygwin" etc.) but emacs (which is a win32 application) is providing a windows style "c:/cygwin/home/..." path which, somewhere along the way gets converted to "/c/cygwin/home/..."
I can probably fix this by overriding slime-path (I'll try that after posting this). Does anyone know why upgrading (I think I had 2.35) to 2.38 would cause this failure? Can this be fixed so other noobs don't suffer the same problems I have?
Regards, --jfc
funkyj@gmail.com writes:
I had slime + clisp (on cygwin) working fine. Yesterday I decided to upgrade various cygwin packages (including clisp). Now when I try to start slime I get this error:
[1]> *** - LOAD: A file with name /c/cygwin/home/jcano/elisp/slime/2006-06-21/slime/swank-loader.lisp does not exist The following restarts are available: ABORT :R1 ABORT
[...]
I can probably fix this by overriding slime-path (I'll try that after posting this). Does anyone know why upgrading (I think I had 2.35) to 2.38 would cause this failure?
OK, I patched `slime-path' in my .emacs_slime file like this:
(defvar slime-path "/home/jcano/elisp/slime/2006-06-21/slime/")
and I no longer get the error mentioned above (i.e. can't find "swank-loader.lisp"). Now I'm getting a new error:
;; Loaded file /home/jcano/.slime/fasl/2006-06-18/clisp-2.38-unix-pc386/swank.fas 0 errors, 0 warnings WARNING: These Swank interfaces are unimplemented: (ACTIVATE-STEPPING ADD-FD-HANDLER ADD-SIGIO-HANDLER ALL-THREADS CALLS-WHO DISASSEMBLE-FRAME FIND-THREAD INSPECT-FOR-EMACS INTERRUPT-THREAD RECEIVE REMOVE-FD-HANDLERS REMOVE-SIGIO-HANDLERS SEND SLDB-BREAK-AT-START SLDB-BREAK-ON-RETURN SPAWN THREAD-ID TOGGLE-TRACE WHO-MACROEXPANDS WHO-SPECIALIZES) ;; Loaded file /home/jcano/elisp/slime/2006-06-21/slime/swank-loader.lisp T [2]> *** - nonexistent directory: #P"/" The following restarts are available: ABORT :R1 ABORT Break 1 [3]> :bt
Printed 0 frames Break 1 [3]>
Damn, that will teach me to upgrade, eh? Here are the versions of stuff I'm currently using:
clisp (from Cygwin): GNU CLISP 2.38 (2006-01-24) (built on winsteingoldlap.bluelnk.net [10.41.52.143])
SLIME: CVS head (also tried 'fairly stable') 2006-06-21
emacs: GNU Emacs 21.3.1 (i386-mingw-nt5.1.2600) of 2004-03-10 on NYAUMO
.emacs_slime (slime specific emacs lisp -- loaded by .emacs)
;; -*- mode: emacs-lisp -*- (message "begin .emacs_slime") (setq inferior-lisp-program "clisp")
;;; #@ attempted work around for 'swank-loader.lisp does not exist' ;;; error (defvar slime-path "/home/jcano/elisp/slime/2006-06-21/slime/")
(add-to-list 'load-path ;; CVS head (concat (getenv "HOME") "/elisp/slime/2006-06-21/slime") t) (require 'slime) (slime-setup)
;;; Configuration of Erik Naggum's HyperSpec access package.
;; If you have a local copy of the HyperSpec, set its path here. (setq common-lisp-hyperspec-root "file:///c:/cygwin/home/jcano/docs/CL/HyperSpec/") (setq common-lisp-hyperspec-symbol-table (concat (getenv "HOME") "/docs/CL/HyperSpec/ilisp/map_sym.txt" )) (message "end .emacs_slime")