Skip to content

Instantly share code, notes, and snippets.

@fiddlerwoaroof
Created November 2, 2019 20:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fiddlerwoaroof/88d88a5f520f020fc97660ca476d1369 to your computer and use it in GitHub Desktop.
Save fiddlerwoaroof/88d88a5f520f020fc97660ca476d1369 to your computer and use it in GitHub Desktop.
(defun fwoar--find-lisp-project-root (dir-name)
(let ((root (locate-dominating-file dir-name
(lambda (n)
(directory-files n nil "^[^.#][^#]*[.]asd$")))))
(when root
(cons 'lisp root))))
(cl-defmethod project-roots ((project (head lisp)))
(list (cdr project)))
(pushnew 'fwoar--find-lisp-project-root project-find-functions)
(defun fwoar--get-asds ()
(let ((dir-of-asd (locate-dominating-file default-directory
(lambda (n)
(directory-files n nil "^[^.#][^#]*[.]asd$")))))
(when dir-of-asd
(directory-files dir-of-asd
t "^[^.#][^#]*[.]asd$"))))
(defun fwoar--cp-connected-hook (&rest ignore)
(when (boundp 'buf)
(with-current-buffer buf
(slime-change-directory
(car (project-roots (project-current))))
(slime-eval `(cl:mapc 'asdf:load-asd ',(fwoar--get-asds))
"CL-USER")
(slime-eval-async `(asdf:load-system
,(file-name-base (car (fwoar--get-asds)))))))
(remove-hook 'slime-connected-hook 'fwoar--cp-connected-hook))
(defun slime-for-current-project ()
(interactive)
(setf buf (current-buffer))
(add-hook 'slime-connected-hook 'fwoar--cp-connected-hook)
(slime))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment