Slime is a lot nicer than Ilisp, don't know why yet I like it much more, and the pace of developement is realy astonishing. Thank you.
The bad things: (windows) Could not break ACL with C-c C-c or C-c C-b, nothing helped so the only way to exit an infinite loop is to restart ACL :(
There is a bug in (defun user-init-file () "Return the name of the user init file or nil." (let ((home (user-homedir-pathname))) (and (probe-file home) (probe-file (format nil "~A/.swank.lisp" (namestring (truename home)))))))
in windows if my home dir is "D:\home\qzma" it tries to probe "D:\home\qzma\/.swank.lisp" and of course fails miserably, yet i don't know how to fix it to fit both operating systems.
(linux) comming as soon as I'll get home
Ignas Mikalajunas
Ignas Mikalajunas i.mikalajunas@mbt.lt writes:
The bad things: (windows) Could not break ACL with C-c C-c or C-c C-b, nothing helped so the only way to exit an infinite loop is to restart ACL :(
We send a SIGINT to the Lisp process to interrupt it. This will probably not work on Windows. My knowledge about Windows is pretty limited and I have no idea what the proper way to interrupt another process is. If you can fix this problem, please send as a patch and we will include them.
There is a bug in (defun user-init-file () "Return the name of the user init file or nil." (let ((home (user-homedir-pathname))) (and (probe-file home) (probe-file (format nil "~A/.swank.lisp" (namestring (truename home)))))))
in windows if my home dir is "D:\home\qzma" it tries to probe "D:\home\qzma\/.swank.lisp" and of course fails miserably, yet i don't know how to fix it to fit both operating systems.
How about:
(defun user-init-file () "Return the name of the user init file or nil." (let ((home (user-homedir-pathname))) (and (probe-file home) (probe-file (format nil #-mswindows "~A/.swank.lisp" #+mswindows "~A_swank.lsp" (namestring (truename home)))))))
Helmut Eller e9626484@stud3.tuwien.ac.at writes:
Ignas Mikalajunas i.mikalajunas@mbt.lt writes:
The bad things: (windows) Could not break ACL with C-c C-c or C-c C-b, nothing helped so the only way to exit an infinite loop is to restart ACL :(
We send a SIGINT to the Lisp process to interrupt it. This will probably not work on Windows. My knowledge about Windows is pretty limited and I have no idea what the proper way to interrupt another process is. If you can fix this problem, please send as a patch and we will include them.
Just a note: I think this is the first time somebody has run SLIME on Windows. I'm amazed that it didn't have a bunch of little portability niggles preventing it from even starting up. Very good!
How about:
(defun user-init-file () "Return the name of the user init file or nil." (let ((home (user-homedir-pathname))) (and (probe-file home) (probe-file (format nil #-mswindows "~A/.swank.lisp" #+mswindows "~A_swank.lsp" (namestring (truename home)))))))
But surely the pathname of a directory can be extended to refer to a file in a portable way. Anyone know the right way? (Hi Christophe! :-)
Luke Gorrie luke@bluetail.com writes:
But surely the pathname of a directory can be extended to refer to a file in a portable way. Anyone know the right way? (Hi Christophe! :-)
The right way would be using logical-pathnames, but the problem is at least here the . in .swank-somewhat so not using a dot would help.
I'm not sure if that really is a bug or a missing specification. On LispWorks I can do a: (translate-logical-pathname "clb:.test")
but on CMUCL this is broken Parse error in namestring: Expecting a file name, got #.. clb:.test ^ [Condition of type COMMON-LISP::NAMESTRING-PARSE-ERROR]
Restarts: 0: [ABORT] Return to Slime toplevel. 1: [ABORT] Return to Top-Level.
Backtrace: 0: (COMMON-LISP::EXPECTING "a file name" ((#. . 4) ("TEST" . 5))) 1: (COMMON-LISP::PARSE-DIRECTORY ((#. . 4) ("TEST" . 5))) 2: (COMMON-LISP::PARSE-LOGICAL-NAMESTRING "clb:.test" 0 9) 3: (COMMON-LISP::%PARSE-NAMESTRING "clb:.test" NIL #p"" 0 ...) 4: (COMMON-LISP::%PARSE-NAMESTRING 6 "clb:.test" NIL #p"" ...)[:EXTERNAL] 5: (PATHNAME "clb:.test")
I guess I will ask in c.l.l and see what they say about that.
Regards Friedrich
Luke Gorrie luke@bluetail.com writes:
Helmut Eller e9626484@stud3.tuwien.ac.at writes:
How about:
(defun user-init-file () "Return the name of the user init file or nil." (let ((home (user-homedir-pathname))) (and (probe-file home) (probe-file (format nil #-mswindows "~A/.swank.lisp" #+mswindows "~A_swank.lsp" (namestring (truename home)))))))
But surely the pathname of a directory can be extended to refer to a file in a portable way. Anyone know the right way? (Hi Christophe! :-)
Bah.
This might not work, because sadly the #. character is generally considered to be a separator between name and type. That is a whole nother rant, which I won't go into here.
The most likely to work is (let ((home (user-homedir-pathname))) (probe-file (merge-pathnames (make-pathname :name #+win "_swank" #-win ".swank" :type #+win "lsp" #-win "lisp") home))) but we're into dangerous territory here. I'm afraid the only thing I can suggest is try the above, and if it doesn't work on a Windows implementation someone cares about, complain bitterly.
Cheers,
Christophe