6.4 KiB
Clojure contribution layer for Spacemacs
Table of Contents
Description
This layer adds support for Clojure language using Cider.
Features
- REPL via cider
- Refactoring via clj-refactor
- Auto completion via [ac-cider][]
- Automatic formatting via align-cljlet
Install
Layer
To use this contribution add it to your ~/.spacemacs
(setq-default dotspacemacs-configuration-layers '(clojure))
Pretty Symbols
Pretty symbols for anonymous functions, set literals and partial, like (λ [a] (+ a 5))
, ƒ(+ % 5)
, ∈{2 4 6}
and Ƥ
.
To enable this feature, add the following snippet to the dotspacemacs/config
section of your ~/.spacemacs
file:
(setq clojure-enable-fancify-symbols t)
Or set this variable when loading the configuration layer:
(setq-default dotspacemacs-configuration-layers
'((clojure :variables clojure-enable-fancify-symbols t)))
Cider and clj-refactor
Quick Start with lein
- Install
lein
via your OS package manager. - Create a file
~/.lein/profiles.clj
with the following content:
{:user {:plugins [[cider/cider-nrepl "0.9.0-SNAPSHOT"]
[refactor-nrepl "0.3.0-SNAPSHOT"]]}}
More details
More info regarding installation of nREPL middleware can be found here:
- cider: cider repo
- clj-refactor: refactor-nrepl
Key Bindings
Documentation
Key Binding | Description
----------------------|------------------------------------------------------------ SPC m d d | cider doc SPC m d g | cider grimoire SPC m d j | cider javadoc
Evaluation
Key Binding | Description
----------------------|------------------------------------------------------------ SPC m e b | eval buffer SPC m e e | eval last sexp SPC m e r | eval region
Goto
Key Binding | Description
----------------------|------------------------------------------------------------ SPC m g g | goto var SPC m g e | goto error SPC m g r | goto resource SPC m g b | go back
REPL
Key Binding | Description
----------------------|------------------------------------------------------------
SPC m s b | send and eval buffer in REPL
SPC m s B | send and eval buffer and switch to REPL in insert state
SPC m s e | send and eval last sexp in REPL
SPC m s E | send and eval last sexp and switch to REPL in insert state
SPC m s f | send and eval function in REPL
SPC m s F | send and eval function and switch to REPL in insert state
SPC m s i | start REPL
SPC m s n | send and eval ns form in REPL
SPC m s N | send and eval ns form and switch to REPL in insert state
SPC m s r | send and eval region in REPL
SPC m s R | send and eval region and switch to REPL in insert state
SPC m s s | switch to REPL
Tests
Key Binding | Description
----------------------|------------------------------------------------------------ SPC m t t | run tests
Refactoring
Key Binding | Description
------------------------|------------------------------------------------------------ SPC m r a d | add declaration SPC m r a i | add import to ns SPC m r a m | add missing libspec SPC m r a p | add project dependency SPC m r a r | add require to ns SPC m r a u | add use to ns SPC m r c c | cycle coll SPC m r c i | cycle if SPC m r c n | clean ns SPC m r c p | cycle privacy SPC m r d k | destructure keys SPC m r e f | extract function SPC m r e l | expand let SPC m r f u | find usages SPC m r h d | hotload dependency SPC m r i l | introduce let SPC m r m f | move form SPC m r m l | move to let SPC m r p c | project clean SPC m r p f | promote function SPC m r r d | remove debug fns SPC m r r f | rename file SPC m r r l | remove let SPC m r r r | remove unused requires SPC m r r s | rename symbol SPC m r r u | replace use SPC m r s n | sort ns SPC m r s p | sort project dependencies SPC m r s r | stop referring SPC m r t f | thread first all SPC m r t h | thread SPC m r t l | thread last all SPC m r u a | unwind all SPC m r u w | unwind
Reformatting
Forms currently handled:
- let
- when-let
- if-let
- binding
- loop
- with-open
- literal hashes {}
- defroute
- cond
- condp (except :>> subforms)
More info here.
Key Binding | Description
------------------------|------------------------------------------------------------ SPC m = | reformat current form