* _deepfire@feelingofgreen.ru [2006-11-29 05:24+0100] writes:
The following snippet adds support for per-slime-dialect hooks to be called after the connection is established.
A subtle point is that this allows for nice customisation of lisp projects to be run:
(define-slime-dialect "foo" "sbcl" nil (lambda () (cd "/foo/project/path/") (slime-load-file "load-foo.lisp"))) (define-slime-dialect "bar" "sbcl" nil (lambda () (cd "/path/to/bar/project/") (slime-load-file "load-bar.lisp")))
Granted, this could have been arranged for via parameters to sbcl, effectively making an illusion of two "differeng" lisp implementations, but somehow this just feels... cleaner?
define-slime-dialect is semi obsolete. slime-start in combination with slime-lisp-implementations should be used instead.
I added a :init-function arg to slime-start which can be used like your hooks. Your examples can now be achieved with something like this:
(setq slime-lisp-implementations '((foo ("sbcl") :init-function (lambda () (cd "/foo/project/path/") (slime-load-file "load-foo.lisp")))))
or with a simple function like:
(defun bar () (interactive) ;; ... code for pre-hook, if you need that (slime-start :program "sbcl" :init-function (lambda () ...)))
Helmut.