[slime-devel] Question about current directory and M-x cd behavior

Anton Vodonosov avodonosov at yandex.ru
Mon Jun 11 17:47:24 UTC 2012

11.06.2012, 21:33, "Zach Beane" <xach at xach.com>:
> Jeffrey Cunningham <jeffrey at jkcunningham.com> writes:
>>  Thanks, Zach. That's exactly what I needed to know.
>>  I tried it in a fresh emacs & slime setup and see that M-x cd calls
>>  swank:set-default-directory, after which *DEFAULT-PATHNAME-DEFAULTS* has been
>>  changed as expected. What's curious is that I periodically run into cases
>>  where  it doesn't seem to be working. Of course, at the moment my working emacs
>>  slime (recently started) is behaving as it should. Next time it acts up I'll
>>  take a look at the value of *default-pathname-defaults* to see if it is in fact
>>  being changed. I bet not.
> M-x cd invokes the emacs "cd" function, which changes emacs's notion of
> where the current working directory is, but it has no effect on the Lisp
> implementation connected via SLIME.
> M-x slime-cd (or the ,cd REPL command) should always update the Lisp
> implementation's notion of the current working directory.

There is also also has M-x slime-set-default-directory (now that I know about slime-cd
I wonder what is the difference between them). 

BTW, both these slime functions call swank:set-default-directory.
This method in some lisp implementations does a little bit more that changing

;; swank-lispworks.lisp
(defimplementation set-default-directory (directory)
  (namestring (hcl:change-directory directory)))

;; swank-clisp.lisp
(defimplementation set-default-directory (directory)
  (setf (ext:default-directory) directory)
  (namestring (setf *default-pathname-defaults* (ext:default-directory))))

More information about the slime-devel mailing list