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