Before setting up your editor, see Project setup
on how to configure clj-kondo for your project. TL;DR: this involves creating
a .clj-kondo directory in the root of your project.
For integrating with Emacs, see flycheck-clj-kondo.
For Spacemacs, check here or get flymake-kondor if you are using flymake.
Like most editor plugins, the 'Clojure Lint' extension by @marcomorain uses the installed version of clj-kondo. In Visual Studio Code, go to Preferences > Extensions. Search for 'clojure lint' and select the Click 'install'. That's it.
The native version of clj-kondo is not well supported yet for Windows environments due to limitations of GraalVM. If you're using Windows, you can install the clj-kondo extension instead. It bundles clj-kondo and requires no additional installation. Note that this extension is part of Calva since v2.0.54.
Despite the native not working well on Windows, users can still have command-line version of clj-kondo by installing the NPM package. This invokes the clj-kondo standalone jar.
Atom requires clj-kondo to be on your $PATH. In Atom, there are a few ways to install:
apm install linter-kondo linter linter-ui-default intentions busy-signalThis section is for Vim 8+ or Neovim.
Install ALE using your favorite plugin manager. This already has in-built support for clj-kondo.
In your .vimrc, add:
let g:ale_linters = {'clojure': ['clj-kondo']}
to only have clj-kondo as the linter.
To enable both clj-kondo and joker, add:
let g:ale_linters = {'clojure': ['clj-kondo', 'joker']}
Reload your .vimrc and it should start working.
Create this file in ~/.config/nvim/compiler/clj-kondo.vim or ~/.vim/compiler/clj-kondo.vim.
if exists("current_compiler")
finish
endif
let current_compiler="clj-kondo"
if exists(":CompilerSet") != 2
command -nargs=* CompilerSet setlocal <args>
endif
CompilerSet errorformat=%f:%l:%c:\ Parse\ %t%*[^:]:\ %m,%f:%l:%c:\ %t%*[^:]:\ %m
CompilerSet makeprg=clj-kondo\ --lint\ %
You can populate the quickfix list like so:
:compiler clj-kondo
:make
See romainl's vanilla linting for how to automatically execute linting and automatically open the quickfix.
If you have vim-dispatch installed, you can use this command to be both async and more convenient:
:Dispatch -compiler=clj-kondo
Currently there are two ways to get clj-kondo integration in IntelliJ: via the clj-kondo LSP server or via the File Watchers plugin.
Download the latest clj-kondo LSP server jar to your system. Go to the
Github releases and look
for clj-kondo-lsp-server-<version>-standalone.jar. The jar is provided
since version 2019.11.23.
Install the LSP Support plugin by gtache, either from the marketplace of via a zipfile downloaded from the a Github release. Version 1.6.0 or later is required.
Raw command.Extension field enter clj;cljs;cljc;edn.java -jar <path> where <path> matches the downloaded
jar file,
e.g. /Users/borkdude/clj-kondo-lsp-server-2019.11.23-standalone.jar.Now, when editing a Clojure file, you should get linting feedback.
This section assumes that you are already using Cursive.
Repeat the below steps for the file types Clojure (.clj), ClojureScript (.cljs)
and CLJC (.cljc).
+ and choose the <custom>
template.clj-kondo <filetype> (where <filetype> is one of
Clojure, ClojureScript or CLJC).Current fileclj-kondo.--lint $FilePath$ --cache.--lint $FilePath$ --cache --config "{:lint-as {manifold.deferred/let-flow clojure.core/let}}".$FileDir$.Create output file from stdoutNever$FILE_PATH$:$LINE$:$COLUMN$: $MESSAGE$.ok and under the newly created file-watcher, change level to Global - this will enable the watcher in all future projects.
Ensure that:
syntax-checking is present in dotspacemacs-configuration-layers.clj-kondo is available on PATH.In the .spacemacs file:
When using the stable master branch:
In dotspacemacs-additional-packages add flycheck-clj-kondo.
In the dotspacemacs/user-config function add the following:
(use-package clojure-mode
:ensure t
:config
(require 'flycheck-clj-kondo))
To install it alongside joker:
In dotspacemacs-additional-packages add flycheck-clj-kondo and flycheck-joker.
In the dotspacemacs/user-config function add the following:
(use-package clojure-mode
:ensure t
:config
(require 'flycheck-joker)
(require 'flycheck-clj-kondo)
(dolist (checker '(clj-kondo-clj clj-kondo-cljs clj-kondo-cljc clj-kondo-edn))
(setq flycheck-checkers (cons checker (delq checker flycheck-checkers))))
(dolist (checkers '((clj-kondo-clj . clojure-joker)
(clj-kondo-cljs . clojurescript-joker)
(clj-kondo-cljc . clojure-joker)
(clj-kondo-edn . edn-joker)))
(flycheck-add-next-checker (car checkers) (cons 'error (cdr checkers)))))
If using the develop branch, clj-kondo is available as a part of the standard
clojure layer. This will become the way to install in the next stable
release of spacemacs.
To enable it:
dotspacemacs-configuration-layers.clojure-enable-linters with the value 'clj-kondo.It should look like this:
dotspacemacs-configuration-layers
'(...
(clojure :variables
clojure-enable-linters 'clj-kondo)
)
Reload the config to enable clj-kondo.
Add the following to ~/.config/kak/kakrc:
hook global WinSetOption filetype=clojure %{
set-option window lintcmd 'clj-kondo --lint'
}
The :lint command will run clj-kondo and annotate the buffer with lint
warnings and errors.
clj-kondo is fast enough to lint as you code! If you want to do this, use
the following configuration:
hook global WinSetOption filetype=clojure %{
set-option window lintcmd 'clj-kondo --lint'
lint-enable
hook -group lint-diagnostics window NormalIdle .* %{ lint; lint-show }
}
This works well, but tends to clear the message line too frequently. The following work-around prevents linting from displaying the warning and error counts on the message line:
define-command -hidden -override lint-show-counters %{}
Can you improve this documentation? These fine people already did:
Michiel Borkent, Rahul De, Jason Felice, Dominic Monroe, Oleg, turbo-cafe, chorin1, Sam Han, Gerred Dillon & Rahuλ DéEdit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |