Skip to content



  • General
  • Use lower-case for refer/import/require sorting. #560 #561
  • Avoid removing comments when sorting/cleaning namespace. #559
  • Break lines when sorting refers along with then new :clean :sort :refer :max-line-length setting with a default of 80. #562
  • Deprecate lens-segregate-test-references in favor to :code-lens :segregate-test-references
  • Check for a default .cljfmt.edn config file for cljfmt config settings if no :cljfmt-config-path was provided. #563
  • Bump clj-kondo to 2021.09.16-20210919.160121-5 fixing false-positives with potemkin import-var analysis.

  • Editor

  • Fix resolve macro as code action after regression introduced recently.
  • Fix unused-public-var not being suppressed during project startup. #554


  • Support renaming namespaces as well with rename feature.
  • Use relative paths instead of absolute paths on diff messages.
  • Add analyze-project! to analyze whole project only and cache analysis, useful for REPL usage for example.


  • Editor
  • Rollback change on didChangeWatchedFiles for :change events, avoiding outdated changes overwriting newer changes.


  • General
  • Create .clj-kondo folder if not exists in project root. #528
  • Fix exception when :clojure-lsp/unused-public-var linter is :off. #546
  • Bump clj-kondo to 2021.08.07-20210903.210340-28 to fix a false-positive with potemkin.
  • Bump clj-kondo to 2021.08.07-20210909.131804-29 fixing issues with built-in clj-kondo cache not present on graalvm binaries. #548
  • Exclude cljs.test/deftest from unused public vars linter.
  • Migrate default db file from .lsp/sqlite.db to .lsp/.cache/sqlite.db, this is necessary as in the future we will replace sqlite with other db implementation, for users they just need to consider/gitignore the .lsp/.cache folder, this way any next change on db implementations or any other cache will not affect user.
  • Auto migrate existing .lsp/sqlite.db to new .lsp/.cache/sqlite.db to avoid unnecessary project re-scan.
  • Deprecates :sqlite-db-path in place of :cache-path.

  • Editor

  • Fix didChangeWatchedFiles to correctly create the file on server, properly change file content and re-scan with clj-kondo, or remove file analysis. This should improve LSP analysis reliability when changing files outside the editor. #536
  • Improve completion only showing valid local vars for current cursor.
  • Improve completion sorting adding priority to each item, showing most used symbols like variables and functions first before other completion items.


  • New diagnostics command, which return all diagnostics found by clojure-lsp (using clj-kondo). Check the API section for more details.

This release was supported by Clojurists Together


  • Hotfix java classes not present on jar, required for clojure-lsp downstreams.


  • General
  • Improve logging during startup for better troubleshooting.
  • Refactor allowing calls to clojure-lsp.main/run! for manually passing args, useful for lein-clojure-lsp for example.
  • Internal: Move graalvm configuration to sqlite-jdbc.
  • Recognize deftest as function definition form for refactoring features like extract-function.
  • Bump Graalvm from 21.1.0 to 21.2.0


  • Use clj-kondo custom lint for API as well, required for correct diagnostics API feature.

  • Editor

  • Fix regression, custom source-paths from initializationOptions were not being parsed correctly. #537

  • Documentation

  • New domain for documentation and webpage 🚀


  • General
  • Fix classpath scan when classpath has other things like new lines or warning message besides the classpath. Fixes #523
  • Improve clean-ns to remove empty reader conditionals(#?(:clj) or #?@(:clj []) on ns form) after cleaning requires/imports.
  • Fix clean-ns false-positives removals to cljc files when the alias/refer/import is being used inside a reader conditional.
  • Add new setting :linters :clj-kondo :ns-exclude-regex which allows exclude diagnostics/findings for namespaces matching that regex.
  • Fix merge of configs resolved for projects with multiple configurations in parent folders and subprojects.

  • Docs

  • Improved the settings docs with a new link to a file with all available clojure-lsp settings.


  • Fix clojure-lsp --version


  • General
  • Fix wrong parse of source-paths for bb.edn when :paths contains symbols not only strings. #507
  • Bump clj-kondo to fix a issue with clojure-lsp running in a lein process.

  • Editor

  • Fix find-definition in jars for cljc files where the var is available on both cljs and clj files. #509
  • Add clojure.core.async common vars to common-refers to be required via code action.
  • Remove diagnostics when files are deleted, properly cleaning server. #513
  • Don't add ns form to blank edn files. #515
  • Fix initializationOptions parsing for some clients. #516
  • Fix refactor 'add missing refer' when there is already that namespace with a alias but no refers.
  • Improve :notify-references-on-file-change performance and use-cases, still disabled by default for some time.

  • API

  • Rollback printing only via CLI to work with API as well. (can be disabled via :raw? option)
  • Support for release of lein-clojure-lsp


  • Bump clj-kondo to fix window path issues with analysis.
  • Fix issue with references code lens for vim.


  • Fix async project lint after startup for huge projects. #506
  • Fix :lint-project-files-after-startup? to be considered before clojure-lsp lint unusued public vars.
  • Fix excluded symbols for code lens, making clojure-lsp check clj-kondo config as well for the :clojure-lsp/unused-public-var excludes


  • General
  • Parse correctly unescaped URIs sent from clients like vim avoiding errors on some features.
  • Bump clj-kondo fixing analysis position issue with declare, making rename and other features work.
  • Don't use PowerShell profiles on Windows when analyzing classpath. Fixes
  • Support babashka classpath and source-paths discovery via bb.edn file. (needs babashka >= 0.5.1)

  • Editor

  • Add :hover :hide-file-location? settings option to disable displaying the source path on hover.
  • Use new clj-kondo :custom-lint-fn for the :unused-public-var, this should improve performance and give the ability to suppress unused vars via code with #_{:clj-kondo/ignore [:clojure-lsp/unused-public-var]} or #_:clj-kondo/ignore


  • General
  • Minor fix on the analysis queries comparison.
  • Improve GraalVM configuration to use direct/less configurations.
  • Bump clj-kondo 2021.06.18 -> 2021.07.28 which adds support for macroexpanding.

  • Editor

  • Fix outgoing/incoming call hierarchy when vars are outside project/external jars.
  • Fix completion of aliases without var names typed yet, for example: string/


  • Fix filename in diffs with dry option.
  • Add coloring to diffs following git diff.
  • Add ns-exclude-regex for commands that check whole project, allowing to exclude certain namespaces via regex.


  • General
  • clean-ns now sorts ns children forms according to the ClojureStyleGuide, at the moment moving require form before import form, enabled by default under flag :clean :sort :ns setting.
  • Improve startup error handler and logging during project analysis. Related to #484
  • Performance improvements using transducers on analysis queries.
  • Fixed auto-resolve source-paths for lein projects that get source-paths dynamically, clojure-lsp will use the default source-paths for these cases

  • Editor

  • Improve hover output, both markdown and plain text forms.
  • Allow calling thread-first/last and thread-first-all/last-all from within the list.
  • Improve resolve-macro-as messages and default excluded symbols.


  • Fix empty XDG_CONFIG_HOME not defaulting to $HOME/.config #474
  • Improve verbose logging setting.


  • Editor
  • Make semantic-tokens return no token for unknown symbols which has :clj-kondo/unknown-namespace on its analysis.
  • Fix file uri location when hovering a symbol.
  • Add reference code lens to keyword definitions, e.g. re-frame.core/reg-sub.
  • Add semantic-tokens debug information to cursor-info response.


  • Fix when ns form does not match filename. #466
  • Fix errors with project-root on graalvm binary
  • Improve API usage avoiding exceptions and returning just data instead.
  • Improve analysis cache to multiple API calls.
  • Add new --raw option allowing to display only raw data. Useful to integrate with other tools like reviewdog.


  • Add --verbose option for debugging purposes.
  • Fix usage as library parsing :exec-args correctly


  • General
  • Add :clean :sort settings option to disable sorting during clean-ns.
  • Add :keep value to :ns-indent-blocks-indentation setting to don't change indentation during clean-ns.
  • Deprecate in place of install new script.
  • Improve source paths discoverability for leiningen projects following the same rules as deps.edn projects. For more information, check the settings section.


  • Add --dry option to commands, useful to print only diffs instead of making changes.
  • Check the new setup-clojure-lsp Github Action to run clojure-lsp on CI.
  • Add format feature using cljfmt.
  • Now, every release is available in clojars as com.github.clojure-lsp/clojure-lsp.


  • Fix --project-path option for API.
  • Add --log-path option to API.


  • Fix find-references and references lens for defrecord.
  • Improve clean-ns refactoring following the Clojure style guide.
  • Fix clean-ns corner case issue where it would replace the :as value with the :refer value.
  • Deprecate :keep-require-at-start? in favor of :clean :ns-inner-blocks-indentation with default value of :next-line.
  • Bump org.xerial/sqlite-jdbc from 3.34.0 to 3.36.0.
  • Avoid adding duplicated namespace for new blank files.
  • Add API / CLI support, form more information check the API section.


  • Fix missing LSP 3.16 graalvm reflection configs. #452


  • Fix graalvm reflect config for LSP 3.16 protocol. #449
  • Use last definition when showing signature help. #446
  • Create 2 new LSP custom methods: clojure/serverInfo/raw and clojure/serverInfo/log deprecating old commands server-info and cursor-info, check the documentation for more information.
  • Add :final-settings to serverInfo methods. #450


  • Avoid removing whole require if unused refer but with used alias during clean-ns. #447
  • Bump cljfmt 0.7.0 -> 0.8.0. Fixes #266
  • Bump clj-kondo 2021.06.01 -> 2021.06.18


  • Improve source paths discoverability for deps.edn projects. Adds :source-aliases for customization. For more information, check the settings section.


  • Fix graalvm issue on completionItem InsertTextMode
  • Bump clj-kondo and rewrite-clj to latest releases.


  • Fix corner case error with project paths with spaces or other special characters. #437
  • Drastically improve didOpen performance, improving kondo findings parsing and making linting async avoiding blocking some editors. #435
  • Fix :auto-add-ns-to-new-files? flag always being considered as true. #436


  • Fix completion item kind of clojure core items. Fixes #426
  • Fix graalvm reflect config for SublimeText - #430
  • Improve code lens for segregated code lens when on test files.


  • Include non full qualified vars on unused-public-var exclude filter.
  • Improve hover documentation: use correct markdown for docstrings; remove unnecessary new lines; add link to filename location.
  • Rollback full text changes on last release and change approach for a temporary fix. #424


  • Quick fix full text changes to handle it sync for semantic tokens
  • Segregate main references from test references with option to disable via lens-segregate-test-references


  • Significantly improve the performance of workspace symbol filtering/searching. See relevant commit.
  • Always sort refers when clean-ns.
  • Add support for installing with homebrew on Linux.
  • Bump clj-kondo to 2021.04.24-20210426.144134-2 adding support for finding re-frame by keyword. Fixes #411
  • Fix find definition going to declare - Fixes #340
  • Remove common already known clojure macros from Resolve macro as code action.


  • Improve resolve-macro-as command to check and log if couldn't resolve the macro.
  • Improve workspace symbol filtering/searching. Now, the sole candidates shown are guaranteed to include all the characters contained in the filter/search string.
  • Add more tokens to semantic tokens: keywords, functions/var usages, java classes, local variables.
  • Bump Graalvm from 21.0.0 to 21.1.0
  • Bump clj-kondo to 2021.04.23 fixing some keywords corner cases.


  • Add common snippets on completion. Check all available snippets here.
  • Add support for custom snippets via :additional-snippets. Check here for more information. - Fixes #403
  • Bump lsp4j from 0.11.0 -> 0.12.0


  • Fix renaming keywords in cljc files producing duplicate edits.
  • After project startup, publish all project only diagnostics. This is a approach done by other LSPs to make work features like Project errors. Feature flag via lint-project-files-after-startup? with default true.
  • Add experimental support for aarch64 linux native binary
  • Fix formatting issues with a regression introduced on a previous release. - Fixes #339 and #396


  • Fix textDocument/workspaceSymbols filter not working on native binaries.
  • Report duplicate linters as default, can be disabled via :linters :clj-kondo :report-duplicates - Fixes #390
  • Bump rewrite-clj to 1.0.605-alpha to fix exceptions when on clojure files with babashka interpreter on first line.
  • Bump clj-kondo 2021.04.01-20210402.215253-6 to fix bug


  • Bump clj-londo 2021.03.22-20210327.192113-4 - Fixes #385
  • Add support for outgoing call hierarchy - Fixes #384
  • Improve and fix missing completion item kinds.


  • Bump clj-kondo 2021.03.22-20210324.110254-3 - Fixes #382
  • [graalvm] Fixes Unable to invoke no-args constructor for class org.eclipse.lsp4j.ShowDocumentCapabilities error.
  • Fix/enhance keyword rename - #383


  • Migrate from lein to deps.edn
  • Bump clj-kondo to 2021.03.22
  • Fix clean-ns sorting according to symbols not brackets - Fixes #380
  • Fix missing graalvm reflect config for CompletionItemTextEdit - Fixes #381


  • Add code action 'resolve macro as', it requires client to fill the chosen macro and clj-kondo config file.
  • Bump rewrite-clj to 1.0.594-alpha
  • Bump data.json to 2.0.1
  • Bump lsp4j to 0.11.0


  • Add support for diagnostic tags: deprecated and unnecessary.
  • Fix wrong textDocument/documentHighlight for function local-usages.
  • Use new clj-kondo copy-configs flag to copy hooks during lint.
  • Bunp clj-kondo to fix unused public linter check for :exclude-when-defined-by


  • Fix server not analyzing after a wrong code on cljs files - #367
  • Rollback incremental didChange adding a new :text-document-sync-kind setting with :full as default.


  • Fix completion inside refers, re-add support for it - Fixes #364
  • Change range of expression functions clj-kondo diagnostics to avoid collision with function signature.


  • Fix incremental didChange, debouncing distincting by uri, fixing some inconsistent file changes when multiple files are changed at same time (rename, iedit, etc).
  • Make unused-public-var ignore -main public functions.
  • Add :exclude-when-defined-by option to unused-public-var linter, check settings documentation for more information.


  • Fix clojure-lsp lint crash when analyzing specific macros with clj-kondo hooks.
  • Fix didChange for Nvim client.
  • Add new clojure-lsp linter: unused-public-var - Fixes #359
  • Add option to disable clj-kondo linter, check settings documentation for more details.


  • Bump clj-kondo fixing issues on require form not being analyzed.
  • Fix textDocument/workspaceSymbols to use the query sent by client.


  • Add support to complete full qualified namespaces - Fixes #337
  • Add :log-path setting to log to a custom file.
  • Avoid exception on code actions when on cljc reader macros - Related to #346


  • Improve clojure-lsp config search checking always home dir considering XDG_CONFIG_HOME and project root up to system root (/) - Fixes #339.
  • Handle incremental text changes on textDocument/didChange notifications following LSP protocol, improving performance for huge files.
  • Add clj-kondo version to --version and server-info.
  • Add new create private function code action.


  • Improve completion performance resolving the item only when documentation is requested
  • Add new thread first/last all code actions


  • Implement support for textDocument/signatureHelp - Fixes #324
  • Disable notify-references on didChange with a flag notify-references-on-change.
  • Fix completion not working when reader macro on file - Fixes #332


  • Fix duplicated symbols for cljc files on textDocument/documentSymbols - Fixes #328
  • Add namespace require when completing a unimported namespace - Fixes #309
  • Fix completion not working for cljc files


  • Fix completion of invalid clojure core (e.g. foo/) - Fixes #270


  • Allow find all references across the project of simple keywords
  • Allow specify custom sqlite.db location with sqlite-db-path, default to <project>/.lsp/sqlite.db


  • Removing false positive logs from invalid analysis from clj-kondo macro expand analysis
  • Fix call hierarchy when the reference was not open yet in the editor.
  • Smart re-analyze variable/function references when arguments of the definition were updated.
  • Rollback Macos native image compress until it works for MacOS Big Sur - #322


  • Bump clj-kondo to fix false-positive unresolved-vars
  • Prioritize project analysis on all analysis during find definition - Fixes #318
  • Compress native binaries with UPX decreasing binary size.


  • Fix completion issues with graalvm native linux binaries when completing local variables.
  • Fix completion exception when completing numbers - Fixes #310
  • Completion inside a require suggests all available namespaces
  • Change log pattern to /tmp/clojure-lsp.<TIMESTAMP>.out use default temp file. Should fix issues with permissions on tmp folder.


  • Fix auto add ns not working for projects.
  • New code action: Move to let
  • New code action: Change coll to map, list, set or vector


  • Fix config passed to clj-kondo during analysis - Fixes #308


  • Fix auto add ns to check project root and source paths
  • Add alias on copmletion items - Fix completion items for Calva client


  • Fix script - #304
  • Fix clojure-lsp re-analysing classpath when project contains a keyword starting with a number - #305
  • Allow clj-kondo to pick up config correctly in mono repos - #303


  • Make release's native binaries executable by default - #299
  • Improve completion removing the necessity to call completion/resolveItem - #292
  • New code action: Add suggested alias to namespaces - #302


  • Add support for keyword analysis (definition, references, completion, rename, hover)
  • Reduce jar and binaries size excluding some dependencies (Need to fix a lein issue yet)


  • Fix --version on graalvm native compiled binaries


  • Add integration tests to release process


  • Fix clojure-lsp embedded jar binary during release CI
  • Fix duplicate references on cljc files


  • Add to known requires - #291
  • Add manual System/gc after first classpath scan, it should decrease memory after the first startup
  • Add support for Windows GraalVM compiled native binary


  • Add native binaries for Linux and MacOS compiled with GraalVM #267 (Experimental)


  • Fix clj-kondo batch analysis when merging batchs - Fix #284


  • Fix missing printlng and avoid errors for next time (this was causing issues in clients like vim coc)


  • Fix document-symbol after #261 - Fixes #276
  • Reduce memory usage on startup batch analyzing classpath via clj-kondo. - Fixes #268


  • Do not remove document on textDocument/didClose, related to #264.
  • Fix default project-specs for shadow-cljs to use npx prefix.
  • Fix range of textDocument/hover for definition usages.
  • Fix completionItem/resolve broken after #261.


  • Remove references code-lens from deftest forms
  • Fix completion for alias ns from external deps - Fixes #269


Huge refactor which uses clj-kondo analysis/ findings output to almost all clojure-lsp features.

  • Should significantly increase performance and startup time
  • Should fix almost all bugs/issues with windows Users since we now rely on clj-kondo analysis
  • Remove all lint configs from clojure-lsp including macro-defs, they should be configured on clj-kondo side now via .clj-kondo/config.edn
  • Move file path on documentation to bottom


  • Fixes args for extract-function refactoring - Fixes #263


  • Check for defintions when finding references with includeDeclaration as true - Fixes #260
  • Add custom command cursor-info to debugging clojure-lsp.
  • Fix unnecessary new-lines on imports when executing clean-ns


  • Check for the whole line to add-miising-* code actions instead of expect the cursor at the ns to be required/imported - Fixes #258
  • Return all possible add-missing-* code actions to the same line.


  • Fix add missing import code actions after refactor


  • Fixes #208


  • LSP 3.16: Add support for codeAction/resolve improving performance if client supports it
  • Bump extend lib
  • [CI] Remove auto release, next releases should contain more than one PR/fix

Last update: September 19, 2021