← [[doom-module-index:][Back to module index]]               ! [[doom-module-issues:::lang clojure][Issues]]  ↖ [[doom-source:modules/lang/clojure/][Github]]  ± [[doom-suggest-edit:][Suggest edits]]  ? [[doom-help-modules:][Help]]
--------------------------------------------------------------------------------
#+TITLE:    :lang clojure
#+SUBTITLE: Java with a lisp
#+CREATED:  May 30, 2017
#+SINCE:    2.0.3

* 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 ~:checkers syntax~
- LSP support (~clojure-lsp~)

** Maintainers
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]

** Module flags
- +lsp ::
  Enable LSP support for ~clojure-mode~ (alongside Cider). Requires [[doom-module:][:tools lsp]]
  and a langserver (supports [[https://clojure-lsp.io/][clojure-lsp]]).

** Packages
- [[doom-package:][cider]]
- [[doom-package:][clj-refactor]]
- [[doom-package:][flycheck-clj-kondo]] if [[doom-module:][:checkers syntax]]

** 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 section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./

* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]

This module requires:
- [[https://clojure.org/][clojure]]
- [[https://leiningen.org/][leiningen]], for the REPL
- [[https://github.com/borkdude/clj-kondo][clj-kondo]], for linting code
- [[https://clojure-lsp.github.io/clojure-lsp/][clojure-lsp]], for LSP support (if [[doom-module:][+lsp]])

* TODO Usage
#+begin_quote
 🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote

| Keybind           | Command                                              |
|-------------------+------------------------------------------------------|
| [[kbd:][<localleader> ']]   | ~cider-jack-in-clj~                                  |
| [[kbd:][<localleader> C]]   | ~cider-connect-cljs~                                 |
| [[kbd:][<localleader> M]]   | ~cider-macroexpand-all~                              |
| [[kbd:][<localleader> R]]   | ~hydra-cljr-help-menu/body~                          |
| [[kbd:][<localleader> c]]   | ~cider-connect-clj~                                  |
| [[kbd:][<localleader> e D]] | ~cider-insert-defun-in-repl~                         |
| [[kbd:][<localleader> e E]] | ~cider-insert-last-sexp-in-repl~                     |
| [[kbd:][<localleader> e R]] | ~cider-insert-region-in-repl~                        |
| [[kbd:][<localleader> e b]] | ~cider-eval-buffer~                                  |
| [[kbd:][<localleader> e d]] | ~cider-eval-defun-at-point~                          |
| [[kbd:][<localleader> e e]] | ~cider-eval-last-sexp~                               |
| [[kbd:][<localleader> e r]] | ~cider-eval-region~                                  |
| [[kbd:][<localleader> e u]] | ~cider-undef~                                        |
| [[kbd:][<localleader> g b]] | ~cider-pop-back~                                     |
| [[kbd:][<localleader> g g]] | ~cider-find-var~                                     |
| [[kbd:][<localleader> g n]] | ~cider-find-ns~                                      |
| [[kbd:][<localleader> h a]] | ~cider-apropos~                                      |
| [[kbd:][<localleader> h c]] | ~cider-clojuredocs~                                  |
| [[kbd:][<localleader> h d]] | ~cider-doc~                                          |
| [[kbd:][<localleader> h j]] | ~cider-javadoc~                                      |
| [[kbd:][<localleader> h n]] | ~cider-find-ns~                                      |
| [[kbd:][<localleader> h w]] | ~cider-clojuredocs-web~                              |
| [[kbd:][<localleader> i e]] | ~cider-enlighten-mode~                               |
| [[kbd:][<localleader> i i]] | ~cider-inspect~                                      |
| [[kbd:][<localleader> i r]] | ~cider-inspect-last-result~                          |
| [[kbd:][<localleader> m "]] | ~cider-jack-in-cljs~                                 |
| [[kbd:][<localleader> m]]   | ~cider-macroexpand-1~                                |
| [[kbd:][<localleader> n N]] | ~cider-browse-ns-all~                                |
| [[kbd:][<localleader> n n]] | ~cider-browse-ns~                                    |
| [[kbd:][<localleader> n r]] | ~cider-ns-refresh~                                   |
| [[kbd:][<localleader> p d]] | ~cider-pprint-eval-defun-at-point~                   |
| [[kbd:][<localleader> p D]] | ~cider-pprint-eval-defun-to-comment~                 |
| [[kbd:][<localleader> p p]] | ~cider-pprint-eval-last-sexp~                        |
| [[kbd:][<localleader> p P]] | ~cider-pprint-eval-last-sexp-to-comment~             |
| [[kbd:][<localleader> p r]] | ~cider-pprint-eval-last-sexp-to-repl~                |
| [[kbd:][<localleader> r B]] | ~+clojure/cider-switch-to-repl-buffer-and-switch-ns~ |
| [[kbd:][<localleader> r L]] | ~cider-load-buffer-and-switch-to-repl-buffer~        |
| [[kbd:][<localleader> r R]] | ~cider-restart~                                      |
| [[kbd:][<localleader> r b]] | ~cider-switch-to-repl-buffer~                        |
| [[kbd:][<localleader> r c]] | ~cider-find-and-clear-repl-output~                   |
| [[kbd:][<localleader> r l]] | ~cider-load-buffer~                                  |
| [[kbd:][<localleader> r n]] | ~cider-repl-set-ns~                                  |
| [[kbd:][<localleader> r q]] | ~cider-quit~                                         |
| [[kbd:][<localleader> r r]] | ~cider-ns-refresh~                                   |
| [[kbd:][<localleader> t a]] | ~cider-test-rerun-test~                              |
| [[kbd:][<localleader> t l]] | ~cider-test-run-loaded-tests~                        |
| [[kbd:][<localleader> t n]] | ~cider-test-run-ns-tests~                            |
| [[kbd:][<localleader> t p]] | ~cider-test-run-project-tests~                       |
| [[kbd:][<localleader> t r]] | ~cider-test-rerun-failed-tests~                      |
| [[kbd:][<localleader> t s]] | ~cider-test-run-ns-tests-with-filters~               |
| [[kbd:][<localleader> t t]] | ~cider-test-run-test~                                |

* TODO Configuration
#+begin_quote
 🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote

* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]

* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]

* TODO Appendix
#+begin_quote
 🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote
