On Wed, Nov 6, 2013 at 11:01 AM, Faré fahree@gmail.com wrote:
On Wed, Nov 6, 2013 at 10:51 AM, Zach Beane xach@xach.com wrote:
Mirko Vukovic mirko.vukovic@gmail.com writes:
I have a system sitting in ~/quicklisp/local-dists and a development version sitting in ~/.../lisp-development/
I would like ASDF to open the latter one. I use asdf:load-system.
I cd to the development directory and start slime there.
(asdf:load-system
...) still tries to fetch the version in the quicklisp directory.
One easy way:
(push '*default-pathname-defaults* asdf:*central-registry*)
I disrecommend pushing '*default-pathname-defaults* into the *central-registry* — that makes system loading less predictable, depending on the binding of this variable.
Instead, I recommend pushing an actual pathname object (that may happen to be the current value of *d-p-d* or of (uiop:getcwd), if you insist), so that the value remains well-defined in the face of rebinding of the variable.
Or better, edit your ~/.config/common-lisp/source-registry.conf and register your software there. Or for temporary stuff, export a CL_SOURCE_REGISTRY, or call asdf:initialize-source-registry with a parameter.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Fraud is the homage that force pays to reason. — Charles Curtis
This works for me now (lightly tested):
(defun asdf::load-local-system (system &rest keys &key (directory *default-pathname-defaults*) &allow-other-keys) (let ((asdf:*central-registry* (push directory asdf:*central-registry*))) (apply #'asdf:load-system system keys)))
(export '(asdf::load-local-system) :asdf)
There may be a better name for this function instead of `local'.
Thanks to all that replied,
Mirko