Common Lisp layer
Table of ContentsClose
1. Description
This layer provides support for Common Lisp to Spacemacs.
2. Install
If you have previously installed slime in any other way, it is recommended that you uninstall it before proceeding. You should clean up any config files tied to slime that are left behind as well. Linux users can just purge the slime package if it was a distribution install.
To use this configuration layer, add it to your ~/.spacemacs
. You will need to
add common-lisp
to the existing dotspacemacs-configuration-layers
list in this
file.
This layer defaults to using sbcl. If you want to use a different implementation
of Common Lisp, you can specify it in your ~/.spacemacs
(defun dotspacemacs/user-config () (setq inferior-lisp-program "/path/to/your/lisp"))
3. Structuraly safe editing
This layer adds support for evil-cleverparens
which allows to safely edit
lisp code by keeping the s-expressions balanced.
By default this mode is not activated. You can turn it on locally on the active
buffer with SPC m T s
(s
for safe).
To turn it on automatically for all common-lisp
buffers call the following
function in your dotspacemacs/user-config
function:
(spacemacs/toggle-evil-safe-lisp-structural-editing-on-register-hook-common-lisp-mode)
or to enable it for all supported modes:
(spacemacs/toggle-evil-safe-lisp-structural-editing-on-register-hooks)
When enabled the symbol 🆂
should be displayed in the mode-line.
4. Key bindings
4.1. Working with lisp files (barfage, slurpage & more)
Spacemacs comes with a special lisp-state
for working with lisp code that
supports slurpage, barfage and more tools you'll likely want when working with
lisp.
As this state works the same for all files, the documentation is in global
DOCUMENTATION.org. In general, use SPC k
to interact with the lisp-state.
4.2. Leader
4.2.1. Help
Key binding | Description |
---|---|
SPC m h a |
SLIME apropos |
SPC m h d |
Disassemble symbol at point |
SPC m h h |
Describe symbol at point |
SPC m h i |
Inspect definition |
SPC m h H |
Hyperspec lookup symbol at point |
SPC m h p |
Browse apropos results for a package's exported symbols |
SPC m h t |
Toggle tracing of the function at point |
SPC m h T |
Untrace all functions |
SPC m h < |
Show all known callers |
SPC m h > |
Show all known callees |
SPC m h m |
Show all usages of a macro |
SPC m h r |
Show references to global variable |
SPC m h s |
Show all methods specialized on a class |
SPC m h S |
Show all setters of global variable |
SPC m h b |
Show all binders of global variable |
4.2.2. Evaluation
Key binding | Description |
---|---|
SPC m e b |
Evaluate buffer |
SPC m e c |
Evaluate parent sexp of current form around point |
SPC m e C |
Evaluate current def or set form around point |
SPC m e e |
Evaluate last sexp |
SPC m e l |
Go to end of line and evaluate last sexp |
SPC m e f |
Evaluate top level sexp |
SPC m e F |
Undefine the function at point |
SPC m e r |
Evaluate region |
SPC m e s |
Evaluate symbol around point |
4.2.3. REPL
Key binding | Description |
---|---|
SPC m ' |
Start Slime or Switch to REPL if it's already connected |
SPC m s i |
Start an inferior process |
SPC m s e |
Evaluate last expression in REPL |
SPC m s q |
Quit |
4.2.4. Compile
Key binding | Description |
---|---|
SPC m c c |
Compile file |
SPC m c C |
Compile file and load it |
SPC m c l |
Load file |
SPC m c n |
Remove compilation notes |
SPC m c f |
Compile function |
SPC m c r |
Compile region |
4.2.6. Macroexpansion
Key binding | Description |
---|---|
SPC m m a |
Macroexpand the expression at point completely |
SPC m m o |
Macroexpand the expression at point once |