doomemacs/modules/lang/common-lisp/autoload/common-lisp.el
Colin Woodbury 2853982447 feat(common-lisp): use sly-asdf
This allows us to offload system loading and testing to a third-party
library.
2024-01-24 12:28:43 -05:00

40 lines
1.4 KiB
EmacsLisp

;;; lang/common-lisp/autoload/common-lisp.el -*- lexical-binding: t; -*-
;; HACK Fix #1772: void-variable sly-contribs errors due to sly packages (like
;; `sly-macrostep') trying to add to `sly-contribs' before it is defined.
;;;###autoload (defvar sly-contribs '(sly-fancy))
;;;###autoload
(defun +lisp/open-repl ()
"Open the Sly REPL."
(interactive)
(require 'sly)
(if (sly-connected-p) (sly-mrepl)
(sly nil nil t)
(cl-labels ((recurse (attempt)
(sleep-for 1)
(cond ((sly-connected-p) (sly-mrepl))
((> attempt 5) (error "Failed to start Slynk process."))
(t (recurse (1+ attempt))))))
(recurse 1))))
;;;###autoload
(defun +lisp/reload-project ()
"Restart the Sly session and reload a chosen system."
(interactive)
(sly-restart-inferior-lisp)
(cl-labels ((recurse (attempt)
(sleep-for 1)
(condition-case nil
(sly-eval "PONG")
(error (if (= 5 attempt)
(error "Failed to reload Lisp project in 5 attempts.")
(recurse (1+ attempt)))))))
(recurse 1)
(sly-asdf-load-system)))
;;;###autoload
(defun +lisp/find-file-in-quicklisp ()
"Find a file belonging to a library downloaded by Quicklisp."
(interactive)
(doom-project-find-file "~/.quicklisp/dists/"))