diff --git a/modules/lang/common-lisp/autoload/common-lisp.el b/modules/lang/common-lisp/autoload/common-lisp.el index 337809d96..255e1cc19 100644 --- a/modules/lang/common-lisp/autoload/common-lisp.el +++ b/modules/lang/common-lisp/autoload/common-lisp.el @@ -3,3 +3,17 @@ ;; 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)))) diff --git a/modules/lang/common-lisp/config.el b/modules/lang/common-lisp/config.el index 39a6f65cd..d1c66b20a 100644 --- a/modules/lang/common-lisp/config.el +++ b/modules/lang/common-lisp/config.el @@ -24,7 +24,7 @@ (remove-hook 'lisp-mode-hook #'sly-editing-mode)) (after! lisp-mode - (set-repl-handler! 'lisp-mode #'sly-mrepl) + (set-repl-handler! 'lisp-mode #'+lisp/open-repl) (set-eval-handler! 'lisp-mode #'sly-eval-region) (set-lookup-handlers! 'lisp-mode :definition #'sly-edit-definition