FStarLang/fstar-mode.el@3bbfe93abd -> FStarLang/fstar-mode.el@537c31983f Fuco1/sphinx-mode@77ca51adf9 -> Fuco1/sphinx-mode@038a9195b0 OCamlPro/ocp-indent@f38578c25d -> OCamlPro/ocp-indent@1213857683 ProofGeneral/PG@af2e7b9a4e -> ProofGeneral/PG@fbb2878e49 ShuguangSun/ess-view-data@dd6a85935b -> ShuguangSun/ess-view-data@5ec1c7206f abicky/nodejs-repl.el@130d49b073 -> abicky/nodejs-repl.el@c232b4964b agda/agda@900bdaa335 -> agda/agda@5e31b2534d ananthakumaran/exunit.el@8de56e3fd5 -> ananthakumaran/exunit.el@9a7cfc3d78 bricka/emacs-kotlin-ts-mode@a25d56ceca -> bricka/emacs-kotlin-ts-mode@051c9ef534 clojure-emacs/cider@12f10a6f4b -> clojure-emacs/cider@389833f85a clojure-emacs/clj-refactor.el@dc1bbc8cda -> clojure-emacs/clj-refactor.el@362cb46bf8 clojure-emacs/clojure-mode@b766094aea -> clojure-emacs/clojure-mode@28dc02114a clojure-emacs/clojure-ts-mode@da56a6938f -> clojure-emacs/clojure-ts-mode@32490c80fa cpitclaudel/company-coq@5affe7a96a -> cpitclaudel/company-coq@78ed04ce39 diml/utop@3322adaa52 -> diml/utop@33201e6076 emacs-ess/ESS@d19efaae12 -> emacs-ess/ESS@8369d574f1 emacs-geiser/chicken@5f2c1bb446 -> emacs-geiser/chicken@8342bad8ce emacs-geiser/geiser@c1c27072a4 -> emacs-geiser/geiser@c8b862f00e emacs-lsp/emacs-ccls@5636ee6c50 -> emacs-lsp/emacs-ccls@34251b799e emacs-lsp/lsp-haskell@081d5115ce -> emacs-lsp/lsp-haskell@aa9b5bce35 emacs-lsp/lsp-java@21c89243ad -> emacs-lsp/lsp-java@9230a0007c emacs-lsp/lsp-pyright@73377169be -> emacs-lsp/lsp-pyright@0e59c00c7f emacs-lsp/lsp-sourcekit@1fb230109e -> emacs-lsp/lsp-sourcekit@30918cd1ae emacs-php/php-mode@462b62248f -> emacs-php/php-mode@40b8abed30 emacs-rustic/rustic@29f912c750 -> emacs-rustic/rustic@2b4ac5de3b emacs-straight/auctex@f58a2b972b -> emacs-straight/auctex@a2809e4d70 emacs-straight/org-mode@4e6d38d1a6 -> emacs-straight/org-mode@8b15a0d0b4 emacsorphanage/dart-mode@f82ff05230 -> emacsorphanage/dart-mode@edb45cb709 emacsorphanage/htmlize@8e3841c837 -> emacsorphanage/htmlize@c9a8196a59 emacsorphanage/restclient@bba663590f -> emacsorphanage/restclient@ad97f666b6 erlang/otp@b9d3ec017d -> erlang/otp@2a970bf725 fosskers/sly-overlay@d629450590 -> fosskers/sly-overlay@345b554ad0 fsharp/emacs-fsharp-mode@8d08f05788 -> fsharp/emacs-fsharp-mode@91abae13e8 fuxialexander/org-pdftools@5613b7ae56 -> fuxialexander/org-pdftools@2b3357828a fxbois/web-mode@be2d59c8fa -> fxbois/web-mode@1eb0abb1a9 godotengine/emacs-gdscript-mode@5136be407a -> godotengine/emacs-gdscript-mode@a0d25b46d8 greghendershott/racket-mode@c4cc7c160b -> greghendershott/racket-mode@172b7d4c5a hakimel/reveal.js@eb95b14531 -> hakimel/reveal.js@4cf184924d haskell/haskell-mode@e9c3567393 -> haskell/haskell-mode@e5d32021ea idris-hackers/idris-mode@ccf32ed0b5 -> idris-hackers/idris-mode@da5c22f436 jart/disaster@8b44591322 -> jart/disaster@0299c129d4 joaotavora/sly@ce17a568ef -> joaotavora/sly@63131ef965 jschaf/powershell.el@9efa1b4d0a -> jschaf/powershell.el@99e0e73082 jwiegley/nix-update-el@77022ccd91 -> jwiegley/nix-update-el@d67f4f7ba8 kaushalmodi/ox-hugo@e3365cb4e6 -> kaushalmodi/ox-hugo@a907ea9514 ledger/ledger-mode@d9b6648201 -> ledger/ledger-mode@e9bb645e8f magit/orgit-forge@050590fbc7 -> magit/orgit-forge@5a0dbe2601 magit/orgit@224350397d -> magit/orgit@8493c24808 minad/org-modern@1723689710 -> minad/org-modern@d5e1f5af65 necaris/conda.el@05de0c8f0c -> necaris/conda.el@8a1a934a2d nex3/haml-mode@a64d58df8f -> nex3/haml-mode@3bb4a96535 nix-community/nix-ts-mode@62ce3a2dc3 -> nix-community/nix-ts-mode@e68ef36312 ocaml/dune@422986440e -> ocaml/dune@28b7e8f3b2 ocaml/merlin@e4c66857ad -> ocaml/merlin@8b88b89ee7 oer/org-re-reveal@da7e1feba9 -> oer/org-re-reveal@4eb0f71474 org-noter/org-noter@a28f61238a -> org-noter/org-noter@aafa08a49c org-roam/org-roam@c172951345 -> org-roam/org-roam@89dfaef38b polymode/polymode@74ba75d4bc -> polymode/polymode@25ba9463a4 pope/ob-go@2067ed55f4 -> pope/ob-go@c6c7c811fb ppareit/graphviz-dot-mode@8ff793b137 -> ppareit/graphviz-dot-mode@2c7ba85d19 purescript-emacs/psc-ide-emacs@4e614df553 -> purescript-emacs/psc-ide-emacs@c64b05d901 purescript-emacs/purescript-mode@8c4736759a -> purescript-emacs/purescript-mode@61732e23bd pythonic-emacs/pyenv-mode@ba1a8c7bd7 -> pythonic-emacs/pyenv-mode@364bddb8f0 rust-lang/rust-mode@25d91cff28 -> rust-lang/rust-mode@9915b3a585 salmanebah/opencl-mode@204d5d9e0f -> salmanebah/opencl-mode@6464abf969 shoshin/minitest-emacs@5999c45c04 -> shoshin/minitest-emacs@d278e94fb1 skuro/plantuml-mode@ea45a13707 -> skuro/plantuml-mode@348e83ff19 slim-template/emacs-slim@8c92169817 -> slim-template/emacs-slim@0b1b380329 sogaiu/janet-ts-mode@ac684edf57 -> sogaiu/janet-ts-mode@0e4d04d648 swift-emacs/swift-mode@e30b9d46e0 -> swift-emacs/swift-mode@fc7df7bd90 szermatt/emacs-bash-completion@d0637428fd -> szermatt/emacs-bash-completion@762f28fefb technomancy/fennel-mode@df8e83d6e2 -> technomancy/fennel-mode@0d638f6133 tpapp/julia-repl@317d560218 -> tpapp/julia-repl@681efc14a7 wbolster/emacs-python-pytest@25d9801562 -> wbolster/emacs-python-pytest@ed2ecee09d ziglang/zig-mode@c46d024733 -> ziglang/zig-mode@dab3c37c2d zweifisch/ob-elixir@8990a8178b -> zweifisch/ob-elixir@8e5d2f3c7a
:lang clojure
Description unfold
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
Maintainers
Module flags
- +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.
Packages
Hacks
- 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.
TODO Changelog
This module does not have a changelog yet.
Installation
Enable this module in your doom!
block.
This module requires:
This module optionally requires:
- 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
- cljfmt, for formatting code (if doom-module::editor format)
Usage
Below is a listing of the various keybinds provided by the module.
REPL management
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 |
Tests
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 |
Search/navigation
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 |
Evaluation
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 |
Debugging
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 |
Help
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 |
Configuration
enrich-classpath
In recent versions, an option has been introduced that attempts to improve the experience of CIDER by accessing java source & javadocs, though this option is still currently considered beta.
In order to opt into this, add the following to your config.el
(setq cider-enrich-classpath t)
See the docs for more
Troubleshooting
There are no known problems with this module. Report one?
Frequently asked questions
This module has no FAQs yet. Ask one?
TODO Appendix
This module has no appendix yet. Write one?