- lists were not correctly indented sometimes - **note** and such things do not exist in org - Note and Important - Change Feature list to heading - Change TODOS to actual org TODOS - Add TOC to python layer - list indentation - some typos I could not leave unchanged - TODO formatting - List indentation - typos - wrong markup fix conversion issues
6.9 KiB
6.9 KiB
Clojure contribution layer for Spacemacs
Table of Contents TOC@4
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"]]
:dependencies [[alembic "0.3.2"]
[org.clojure/tools.nrepl "0.2.7"]]}}
More details
More info regarding installation of nREPL middleware can be found here:
- cider: cider_install
- clj-refactor: refactor-nrepl
Key Bindings
Documentation
Key Binding | Description |
---|---|
SPC m h h |
cider doc |
SPC m h g |
cider grimoire |
SPC m h j |
cider javadoc |
Evaluation
Key Binding | Description |
---|---|
SPC m e b |
eval buffer |
SPC m e e |
eval last sexp |
SPC m e f |
eval function at point |
SPC m e r |
eval region |
SPC m e w |
eval last sexp and replace with result |
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 c |
connect to REPL (cider-connect) |
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 (cider-jack-in) |
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 q |
kill REPL (cider-quit) |
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 a |
run all tests in namespace |
SPC m t r |
re-run test failures for namespace |
SPC m t t |
run test at point |
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 at align-cljlet.
Key Binding | Description |
---|---|
SPC m f l |
reformat current form |