1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
There are many additional Emacs packages that can enhance your Clojure programming
experience. The majority of the minor modes listed here should be enabled for both
`cider-repl-mode` and `clojure-mode` for optimal effects.
## clj-refactor
[clr-refactor](https://github.com/clojure-emacs/clj-refactor.el) builds on top
of clojure-mode and CIDER and adds a ton of extra functionality (e.g. the
ability to thread/unthread expression, find and replace usages, introduce let
bindings, extract function and so on).
A full list of features is available
[here](https://github.com/clojure-emacs/clj-refactor.el/wiki).
We hope to incorporate some of its features into clojure-mode and CIDER themselves
down the road.
**Make sure that the version of `clj-refactor` you've installed is compatible with
your CIDER version.**
## helm-cider
[helm-cider](https://github.com/clojure-emacs/helm-cider) provides Helm
interface for certain CIDER commands (e.g. `cider-apropos`).
## cider-hydra
[cider-hydra](https://github.com/clojure-emacs/cider-hydra) provides a nice way
to navigate groups of related CIDER commands.
You can think of it as a fancier [which-key](https://github.com/justbur/emacs-which-key).
## squiggly-clojure
[squiggly-clojure](https://github.com/clojure-emacs/squiggly-clojure) is a
Flycheck checker for Clojure, using tools like
[eastwood](https://github.com/jonase/eastwood),
[core.typed](http://typedclojure.org/) and
[kibit](https://github.com/jonase/kibit).
## sayid
[sayid](http://bpiel.github.io/sayid/) is a powerful alternative of CIDER's
built-in basic tracing functionality.
## Inf-clojure
This package provides basic interaction with a Clojure subprocess (REPL). It's
based on ideas from the popular inferior-lisp package.
[inf-clojure](https://github.com/clojure-emacs/inf-clojure) has two components -
a nice Clojure REPL with auto-completion and a minor mode
(`inf-clojure-minor-mode`), which extends clojure-mode with commands to evaluate
forms directly in the REPL.
It's basically a simple alternative of CIDER, which provides a subset of CIDER's
functionality.
## subword-mode
Enabling `CamelCase` support for editing commands(like
`forward-word`, `backward-word`, etc) in the REPL is quite useful since
we often have to deal with Java class and method names. The built-in
Emacs minor mode `subword-mode` provides such functionality:
```el
(add-hook 'cider-repl-mode-hook #'subword-mode)
```
## Paredit
The use of [paredit](http://mumble.net/~campbell/emacs/paredit.html)
when editing Clojure (or any other Lisp) code is highly
recommended. You're probably using it already in your `clojure-mode`
buffers (if you're not you probably should). You might also want to
enable `paredit` in the REPL buffer as well:
```el
(add-hook 'cider-repl-mode-hook #'paredit-mode)
```
## Smartparens
[smartparens](https://github.com/Fuco1/smartparens) is an excellent alternative
to paredit. Many Clojure hackers have adopted it recently and you might want
to give it a try as well. To enable `smartparens` in the REPL buffer use the
following code:
```el
(add-hook 'cider-repl-mode-hook #'smartparens-strict-mode)
```
## rainbow-delimiters
[RainbowDelimiters](https://github.com/Fanael/rainbow-delimiters) is a minor
mode which highlights parentheses, brackets, and braces according to their
depth. Each successive level is highlighted in a different color. This makes it
easy to spot matching delimiters, orient yourself in the code, and tell which
statements are at a given depth. Assuming you've already installed
RainbowDelimiters you can enable it in the REPL like this:
```el
(add-hook 'cider-repl-mode-hook #'rainbow-delimiters-mode)
```
## eval-sexp-fu
[eval-sexp-fu](https://github.com/hchbaw/eval-sexp-fu.el) provides some visual
feedback when evaluating expressions. [cider-eval-sexp-fu](https://github.com/clojure-emacs/cider-eval-sexp-fu) provides
CIDER integration for `eval-sexp-fu`.
```el
(require 'cider-eval-sexp-fu)
```
|