diff --git a/init.el b/init.el index 5cc5ef5..1aeb52f 100644 --- a/init.el +++ b/init.el @@ -587,6 +587,21 @@ (sly-symbol-completion-mode nil) :config (setq inferior-lisp-program "sbcl") + (defun my--sly-add-project-root-to-asdf (old-init) + (let ((dir (if-let* ((proj (project-current)) + (root (project-root proj))) + root + default-directory))) + (if (directory-files dir nil "\\.asd\\'" t 1) + (let ((old-init-list (read old-init))) + (setf (cddadr old-init-list) + (cons `(push (pathname ,(sly-to-lisp-filename dir)) + (symbol-value + (read-from-string "asdf:*central-registry*"))) + (cddadr old-init-list))) + (format "%S\n\n" old-init-list)) + old-init))) + (advice-add #'sly-init-using-asdf :filter-return #'my--sly-add-project-root-to-asdf) (sly-setup) (with-eval-after-load 'meow (add-to-list 'meow-mode-state-list '(sly-db-mode . motion))))