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 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.
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.
clojure-cheatsheet
clojure-cheatsheet in an Emacs rendition of the web-based official Clojure Cheatsheet, that's easily searchable via Helm.
helm-cider
helm-cider provides Helm
interface for certain CIDER commands (e.g. cider-apropos
).
cider-hydra
cider-hydra provides a nice way to navigate groups of related CIDER commands.
You can think of it as a fancier which-key.
squiggly-clojure
squiggly-clojure is a Flycheck checker for Clojure, using tools like eastwood, core.typed and kibit.
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 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:
(add-hook 'cider-repl-mode-hook #'subword-mode)
Paredit
The use of paredit
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:
(add-hook 'cider-repl-mode-hook #'paredit-mode)
Smartparens
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:
(add-hook 'cider-repl-mode-hook #'smartparens-strict-mode)
rainbow-delimiters
RainbowDelimiters 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:
(add-hook 'cider-repl-mode-hook #'rainbow-delimiters-mode)
auto-complete
auto-complete is a popular Emacs interactive auto-completion framework. ac-cider provides a completion source for auto-complete-mode, including, where CIDER provides it, pop-up documentation for completed symbols.
eval-sexp-fu
eval-sexp-fu provides some visual
feedback when evaluating expressions. cider-eval-sexp-fu provides
CIDER integration for eval-sexp-fu
.
(require 'cider-eval-sexp-fu)