This module adds support for the Clojure(Script) language.
- Interactive development environment (
cider
): REPL, compilation, debugging, running tests, definitions & documentation lookup, code completion, and much more - Refactoring (
clj-refactor
) - Linting (
clj-kondo
), requires doom-module::checkers syntax - LSP support (
clojure-lsp
), required doom-module:+lsp
- @elken
- +lsp
-
Enable LSP support for
clojure-mode
(alongside Cider). Requires doom-module::tools lsp and a langserver (supports clojure-lsp). - +tree-sitter
- Leverages tree-sitter for better syntax highlighting and structural text editing. Requires doom-module::tools tree-sitter.
- doom-package:cider
- doom-package:clj-refactor
- doom-package:flycheck-clj-kondo if doom-module::checkers syntax
- Error messages emitted from CIDER are piped into the REPL buffer when it is first opened, to make them easier to notice.
- Disabled the help banner when opening the cider REPL.
This module does not have a changelog yet.
Enable this module in your doom!
block.
This module requires:
- clojure
- clj-kondo, for linting code (if doom-module::checkers syntax)
- clojure-lsp, for LSP support (if doom-module:+lsp)
- neil for the ability to add packages to your Clojure project from Emacs
- jet for jet integration
Below is a listing of the various keybinds provided by the module.
For the most part, general usage should fall into:
- Open a Clojure project
- Open/connect to a REPL
As such, these bindings are most likely to be used.
Keybind | Command |
---|---|
<localleader> ’ | cider-jack-in-clj |
<localleader> c | cider-connect-clj |
<localleader> C | cider-connect-cljs |
<localleader> m ” | cider-jack-in-cljs |
<localleader> r R | cider-restart |
<localleader> r q | cider-quit |
<localleader> r B | +clojure/cider-switch-to-repl-buffer-and-switch-ns |
<localleader> r L | cider-load-buffer-and-switch-to-repl-buffer |
<localleader> r b | cider-switch-to-repl-buffer |
<localleader> r c | cider-find-and-clear-repl-output |
<localleader> r l | cider-load-buffer |
<localleader> r n | cider-repl-set-ns |
<localleader> r r | cider-ns-refresh |
The module also provides support for running tests through cider, including a nicely formatted output.
Keybind | Command |
---|---|
<localleader> t a | cider-test-rerun-test |
<localleader> t l | cider-test-run-loaded-tests |
<localleader> t n | cider-test-run-ns-tests |
<localleader> t p | cider-test-run-project-tests |
<localleader> t r | cider-test-rerun-failed-tests |
<localleader> t s | cider-test-run-ns-tests-with-filters |
<localleader> t t | cider-test-run-test |
Some useful bindings for navigating around namespaces and symbols. When using doom-module:+lsp, the bindings in doom-module::tools lsp are supported.
Keybind | Command |
---|---|
<localleader> g b | cider-pop-back |
<localleader> g g | cider-find-var |
<localleader> g n | cider-find-ns |
<localleader> h n | cider-find-ns |
<localleader> n N | cider-browse-ns-all |
<localleader> n n | cider-browse-ns |
<localleader> h a | cider-apropos |
Outside of the SPC m e bindings for evaluating forms, the following are also available; including some to pretty-print the results.
Keybind | Command |
---|---|
<localleader> e D | cider-insert-defun-in-repl |
<localleader> e E | cider-insert-last-sexp-in-repl |
<localleader> e R | cider-insert-region-in-repl |
<localleader> e b | cider-eval-buffer |
<localleader> e d | cider-eval-defun-at-point |
<localleader> e e | cider-eval-last-sexp |
<localleader> e r | cider-eval-region |
<localleader> p d | cider-pprint-eval-defun-at-point |
<localleader> p D | cider-pprint-eval-defun-to-comment |
<localleader> p p | cider-pprint-eval-last-sexp |
<localleader> p P | cider-pprint-eval-last-sexp-to-comment |
<localleader> p r | cider-pprint-eval-last-sexp-to-repl |
A number of bindings to provide useful overlays that help during debugging. cider-enlighten-mode
is a mode that will highlight the results of a function evaluation, including the locals. See a demo here.
Keybind | Command |
---|---|
<localleader> M | cider-macroexpand-all |
<localleader> R | hydra-cljr-help-menu/body |
<localleader> e u | cider-undef |
<localleader> i e | cider-enlighten-mode |
<localleader> i i | cider-inspect |
<localleader> i r | cider-inspect-last-result |
<localleader> m | cider-macroexpand-1 |
Several bindings used for viewing documentation for various functions, both inside and outside of both a REPL and Emacs (K for example uses the sources and a cached version of clojuredocs)
Keybind | Command |
---|---|
<localleader> h c | cider-clojuredocs |
<localleader> h d | cider-doc |
<localleader> h j | cider-javadoc |
<localleader> h w | cider-clojuredocs-web |
K | +lookup/documentation |
🔨 This module has no configuration documentation yet. Write some?
There are no known problems with this module. Report one?
This module has no FAQs yet. Ask one?
🔨 This module has no appendix yet. Write one?