#+title:    :lang common-lisp
#+subtitle: If you've seen one lisp, you've seen them all
#+created:  June 13, 2018
#+since:    21.12.0

* Description :unfold:
This module provides support for [[https://lisp-lang.org/][Common Lisp]] and the [[doom-package:Sly]] development
environment. Common Lisp is not a single language but a specification, with many
competing compiler implementations. By default, [[http://www.sbcl.org/][Steel Bank Common Lisp]] (SBCL) is
assumed to be installed, but this can be configured.

Common Lisp benefits from a mature specification and rich standard library.
Thanks to its powerful REPL and debugger, it boasts an "interactive programming"
style often unseen in other languages. Compiled Common Lisp programs are trusted
to run unmodified for a long time.

** Maintainers
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]

** Module flags
/This module has no flags./

** Packages
- [[doom-package:sly]]
- [[doom-package:sly-macrostep]]
- [[doom-package:sly-repl-ansi-color]]

** Hacks
/No hacks documented for this module./

** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./

* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]

This module requires [[http://www.sbcl.org/][SBCL]].

* TODO Usage
#+begin_quote
 󱌣 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote

This module does not integrate with [[doom-module::tools lsp]]. Sly (and SLIME before it) is
considered the defacto development environment for Common Lisp and provides much
of what is normally expected of an LSP, plus tight integration with the REPL and
Emacs.

** Sly
Using this module is mostly a matter of using Sly. Please consider reading
through [[http://joaotavora.github.io/sly/#A-SLY-tour-for-SLIME-users][the Sly Tour]].

A Sly session will be started when you open a =.lisp= file. Use [[kbd:][<localleader> ']]
to switch to the REPL minibuffer.

** org-mode
This module also enables the evaluation of =lisp= source blocks in Org Mode.
However, you will need a running Sly session for this to work. ~M-x sly~ starts
such a session if you didn't have one open already.

** formatter
By enabling [[doom-module::editor format]], [[fn:apheleia-indent-lisp-buffer]] will be
used to format the current buffer.

Enable [[doom-module::editor format +onsave]] to format the buffer on save.

* TODO Configuration
#+begin_quote
 󱌣 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote

If you don't want Sly to use SBCL, you can configure the variable
~inferior-lisp-program~ to some other binary on your PATH.

* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]

* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]

* TODO Appendix
#+begin_quote
 󱌣 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote
