Skip to content



  • General
  • Bump clj-kondo to 2024.05.22 fixing high memory usage issue.
  • Bump Clojure to 1.11.3
  • Fix use of :filename-pattern from kondo breaking references.

  • Editor

  • Add clojure.test/deftest option to resolve macro as code action. #1850
  • Allow starting clojure-lsp without a project root but with limited features. #1815


  • General
  • Bump clj-depend to 0.11.0.
  • Fix renaming ns when one source path is a prefix of another (e.g. src/clj and src/cljs) #1805

  • Editor

  • Use scope location instead of name location for folding feature.
  • Fix paredit commands to consider previous element when cursor inside a closing bracket.
  • Fix paredit commands to move cursor after applying command.
  • Fix corner case on paredit comamnds duplicating forms.
  • References of a var-definition now consider full quoted qualified symbols. #1804


  • Editor
  • Adding require command fails for requires without alias. #1791
  • Add require command without alias now add requires with brackets.
  • Project tree feature now support keyword definitions like re-frame sub/reg. #1789
  • Support textDocument/foldingRange LSP feature. #1602
  • Improve textDocument/documentSymbol considering keyword definitions and returning flatten elements.
  • Fix Add require/import usages count in code actions. #1794.


  • General
  • Bump clj-kondo to 2024.03.13 fixing high memory usage issue.

  • Editor

  • Fix workspace/didChangeConfiguration exception causing noise on logs. #1784


  • General
  • Bump clj-kondo to 2024.02.13-20240228.191822-15.
  • Add :clojure-lsp/different-aliases linter. #1770
  • Fix unused-public-var false positives for definterface methods. #1762
  • Fix rename of records when usage is using an alias. #1756

  • Editor

  • Fix documentation resolve not working for clients without hover markdown support.
  • Added setting to allow requires and imports to be added within the current comment form during code action and completion: :add-missing :add-to-rcf #1316
  • Fix suppress-diagnostics not working on top-level forms when preceded by comment. #1678
  • Fix add missing import feature on some corner cases for java imports. #1754
  • Fix semantic tokens and other analysis not being applied for project files at root. #1759
  • Add support for adding missing requires and completion results referring to JS libraries which already have an alias in the project #1587


  • General
  • Fix binary not wokring on some aarch64 linux. #1748
  • Add new Project tree feature via the clojure/workspace/projectTree/nodes custom method. #1752
  • Fix --log-path setting to work with listen/empty arg, starting clojure-lsp server and logging properly.

  • Editor

  • Fix didChangeConfiguration throwing exception. #1749
  • Fix rename of ns causing wrong ns names because of duplicate rename actions. #1751
  • Fix range-formatting throwing exceptions when unbalanced parens are sent from client. #1758
  • Fix rename functions need to clean up LSP state or restart in some clients implementing LSP method didRenameFiles. #1755
  • Fix thread last all failed after comment form #_(...). #1745


  • General
  • Fix deep-merge of client settings with project settings.
  • Fix max-line-length on clean-ns feature not respecting some lines when contains a lot of refers. #1729
  • Bump cljfmt to 0.12.0.
  • Bump clj-kondo to 2023.12.15.

  • Editor

  • Fix edn tree visualization for keys with same name in the same level. #1558
  • Make clear when hover feature is in a calling and not in a specific symbol. #1281
  • Exclude keys that are already included in the function call from completion suggestions. #1720


  • Drastically improves performance of format task matching cljfmt, avoiding analyzing the project. #1723


  • General
  • Bump clj-kondo to 2023.10.21-20231022.204832-4.
  • Fix move-to-let/expand-let bug for multi-arity functions #1283
  • Fix :dependency-scheme setting for .java files from jars #1653
  • Bump graalvm to 21.
  • Improve overall performance using GraalVM 21 PGO (Profile-Guided Optimizations).
  • Extract the responsibility for merging clj-depend config #1265
  • Support passing configurations to clj-depend via CLI #1694
  • Bump clj-depend to 0.9.2
  • Performance: remove keyword-usages elements from external analysis as they are not used for any feature and for big projects may affect memory. #1700

  • Editor

  • New paredit refactorings:
    • forward-slurp
    • forward-barf
    • backward-slurp
    • backward-barf
    • raise
    • kill
  • Improve rename to avoid internal errors and show proper error messages. #1691
  • Exclude unused-public-vars when inside a comment block.
  • Add :analysis-summary field to serverInfo command to get information about project for performance analysis.
  • Add :analysis settings, with options to disable specific analysis for better performance on huge projects. #1700


  • General
  • Fix truncation of namespaced keywords #1640
  • Add rewrite-clj node to cursor-info.
  • Fixing semantic-tokens, collons not managed by lsp anymore. #1550
  • Fix :paths-ignore-regex setting to consider settings reload.
  • Bump clj-kondo to 2023.07.14-20230717.090255-3. #1624
  • Fix inconsistencies with :defined-by->lint-as.
  • Improve memory usage during cache save, avoiding "Out of memory" exceptions.
  • Prevent file rename when a namespace is defined in multiple files #1574
  • Fix user formatting setting being override by :style/indent metadata in macros.
  • Bump cljfmt to 0.11.2. #1634
  • Bump lsp4clj to 1.8.1.
  • Added functionality to workspace/didChangeConfiguration so it changes configuration on runtime.

  • Editor

  • Avoid returning all known keywords on empty keywords completion for performance reasons.


  • Improve mem/cpu usage using less analysis for tasks.


  • General
  • Update flake.nix to build with babashka. #1373
  • Bump clj-kondo to 2023.06.02-20230630.144012-16.
  • Improve support for ClojureDart .cljd files. #1589
  • Slightly reduce OutOfMemory exceptions that may happen with the JVM version.
  • Support ignore unused-public-vars via :linters :clojure-lsp/unused-public-var :exclude-when-contains-meta clj-kondo setting.
  • Fix restructure-keys when map has an :or. #1583
  • Bump lsp4clj to 1.8.0.
  • Add post startup tasks progress feedbacks, like "Generating stubs", "Analyzing JDK source" and "Fetching Clojars".
  • Bump cljfmt to 0.10.6. #1605

  • Editor

  • New code actions: Replace ':refer :all' with ':refer [my-refer]' and Replace ':refer :all' with alias. #1575
  • Enhance java support for hover and completion of static class members.
  • Improve :paths-ignore-regex to ignore features avoiding impact in huge files that are intented to be excluded.
  • Fixed semantic-tokens for full qualified namespace
  • Add score to completion items for a better completion client sorting. #1595
  • Revamp keyword completion. #1599
  • Avoid LSP errors when cleaning a file without namespaces. #1603


  • New feature: Find all references via API and CLI. #1572


  • General
  • Bump clj-kondo to 2023.04.15-20230503.152749-8

  • Editor

  • Fix edn tree to consider symbols. #1556
  • Fix edn tree to consider vector root nodes. #1557
  • Fix edn tree to handle invalid edn code and not throw exceptions while typing code.


  • Avoid enabling unecessary analysis features for API/CLI lint, improving memory usage.


  • General
  • Fix reflection issue in JDK19 with Thread/sleep #1520
  • Bump clj-kondo to 2023.04.15-20230418.173453-3, fixing analysis inconsistencies with schema.core
  • Ignore vars defined wrongly via config. #1510
  • Add support for :output {:langs true} in clj-kondo config to show .cljc language contexts

  • Editor

  • Fix classpath issue message to properly ignore or retry after user input. #1500
  • Decreate debounce time for calculating changes and diagnostics, improving UX in cost of performance, it doesn't seem to highly affect performance though.
  • Add new setting to change diagnostics range type. #1530
  • Spec compliance: avoid registering client capabilities if dynamic registration is not set. #1535
  • Improve java support: using new java-member-definitions analysis, first feature is the allow completion of static members (fields and methods) for java classes.
  • Show edn tree when in edn files via documentSymbol feature.
  • Improve java db cache consistency + analysis performance.


  • Editor
  • Fix exception on hover feature on graal images.


  • General
  • Add new setting :paths-ignore-regex to allow ignore analyzing/linting specific paths, useful if you have folders or files that are not relevant to be linted and are huge which may affect performance.
  • Bump clj-kondo. Fixes missing lint class constructors, making clojure-lsp show add import code action always.
  • Fix wrong ns rename for cljc files. #1508

  • Editor

  • Fix cache issue: wrong external dependencies analysis when running clojure-lsp in editor after running on CLI, affecting navigation. #1473
  • Bump lsp4clj fixing progress notifications during initialization for Calva.
  • Allow go to definition of namespace even when the var is not known. Ex: clojure.string/foo will go to the definition of clojure.string. This is useful for cases where the var was not created yet but user wants to go to the ns to check the available functions or check the correct name of the function.
  • Avoid basing results on old analysis.
  • Add new setting :completion :analysis-type to choose between :fast-but-stale(default) or :slow-but-accurate, this should define whether completion should wait for changes that may still happening, this by default reverts the behavior introduced after #1425. #1487
  • Fix textDocument/hover issue when doc metadata isn't a string literal.
  • Follow references to other vars in doc metadata for use in textDocument/hover.
  • Support :arglists meta when finding docs of functions via hover feature. #1504
  • Enhance hover to search clojuredocs on CLJS. #1506


  • General
  • Bump clj-kondo to 2023.01.20
  • Avoid false-positives of unused-public-var for functions used in :gen-class that starts with - as convention. #1443
  • New jar available on releases: clojure-lsp-server.jar, an Uberjar not aot-ed containing both clojure-lsp core + server code, improving startup time for JVM clients, for example for lein-clojure-lsp. Any lib using clojure-lsp-standalone.jar should consider switch to this new jar.
  • Change :source-paths-ignore-regex default value to ["target.*"], removing resource folders. #1452
  • Bump cljfmt to 0.9.2
  • Bump lsp4clj to 1.7.0
  • Support :style/indent metadata for indentation with cljfmt #1420

  • Editor

  • Fix add missing import code action when there are multiple options. #1422
  • Only show completion items if no changed code is being processed, avoiding wrong completion items. #1425
  • Improve semantic tokens for defprotocol, definterface coloring as interface tokens.
  • Include reffered vars in completion. #1440
  • Allow rename alias of function calls, renaming properly both function usages and alias definition.
  • Add support for keyword analysis in edn files, allowing find-references, document highlight and other lsp features to keywords.
  • find-definition and references for quoted symbols like 'clojure.core/inc and symbols mentioned in .edn files. #1446
  • Show error messages when can't apply edits after commands. #1448


  • Make diagnostics command print as json or edn. #1419
  • Make possible starting a chan server with clojure-lsp components, useful to other clients extend.
  • Consider edn files when linting project, allowing to format edn files. #1452
  • Report diagnostics lines and columns as 1 based, not 0 like LSP, following clj-kondo standard. #1459


  • General
  • Fix rename issue with VS-Code/Calva on MS-Windows. #1388
  • Only publish progress on initialize if client provided a workDoneProgress. #1363
  • Bump clj-kondo to 2022.12.08.
  • Avoid wrong clj-kondo configs in case clojure-lsp process is spawned from a different directory than project-root.
  • Fall back on CLJS var when finding definition from Clojure and nothing was found. #1403

  • Editor

  • Show better icons for multimethods, var-arg fns, protocols, records, interfaces and types on workspace/symbol and textDocument/documentSymbol.
  • Inlining the last binding of a let removes the let. #210
  • Allow import java classes via code-actions Add import 'x.y.Z'.
  • Make add-import command/code-action smarter, checking if there is already a package import to just include the classname instead of full import.
  • Add new refactoring cycle-keyword-auto-resolve, e.g. ::bar -> :foo/bar and vice-versa. #1128
  • Supporting find definition/references/implementations of definterface.
  • Avoid watching ignored source-paths, causing find-definition/references and other features go to wrong files.


  • Allow specify analysis type for dump command, default to analyze project only analysis. #1383
  • Add :result to the dump command. #1390
  • Important regression fix where clojure-lsp may do inconsistent lint when classpath scan fail without showing to user the error.


  • General
  • Bump clj-kondo to 2022.11.02 avoiding breaking changes on custom hooks.
  • Bump graalvm to 22.3.0. #1345

  • Editor

  • Add refactorings to change param order of defn/defmacro, also changing call sites. #1131
  • Avoid shadowing existing locals when restructuring keys. #1229
  • Let editors control whether the server's log includes traces of the messages they are exchanging.
  • Bump promesa to 9.0.470
  • Bump lsp4clj to 1.5.0
  • For users with fewer cores, avoid unnecessary waits for file analysis.
  • Reduce CPU usage by aborting requests that the client won't use.
  • Fix to mark some code actions as preferred, so editors can emphasize them.
  • Adds java classes completions, since clj-kondo now knows all java classes defined on external dependencies. #1329
  • Fix completion to consider required namespaces without alias or refers. #1352


  • General
  • Improve clj-depend merge config to overwrite source-paths only if it is nil or empty. #1264
  • Fix stubs generation issue on MS-Windows, coming out of enabling all integrations tests on windows. #1211
  • Improve MS-Windows support by fixing various path, URI and line ending issues coming out of repairing the unit tests suite on windows. #1211
  • End dep-graph-queries experiment; clojure-lsp now uses the dep-graph to optimize queries whenever possible
  • Bump clj-kondo to 2022.10.05. #1226
  • Fix issue with changes being reporting with spurious and incorrect line endings on MS-Windows text files. #1211
  • Index internal data by URI instead of filename, to minimize conversion between these formats when running queries. #1207
  • Add support to enable trace logs on server via --trace flag. (For latest Emacs's lsp-mode this can be enabled easyly via lsp-clojure-trace-enable variable)
  • Bump graalvm version for MS-Windows to 22.2.0, in sync with the other archs. #1211

  • Editor

  • Fix to avoid error when checking code actions from an #_x uneval node. #1227
  • Add support to decompile jar as a java project when finding the definition of a java class, allowing to have LSP features on that java project. #1187
  • Add refactorings similar to Sort map: Sort vector, Sort list, Sort set, and Sort clauses for functions like assoc. #1155
  • Support java class decompilation for zipfile scheme (vim users).
  • Avoid keeping diagnostics of external closed files for Calva.
  • Lint opened files after a clojure-lsp or clj-kondo config file is saved on disk, avoiding users to re-edit files. #1247
  • Allow find definition of java class usages where definition comes from clojure, like defrecords.
  • Fix: wait for rename to apply before allowing another rename, to ensure suggested name is correct. #1270
  • Process requests in parallel, to prevent typing lag and other performance problems introduced during migration away from lsp4j. #1240
  • Fix: Avoid wrong ns require after Create ns and require code-action/command.
  • Fix: Avoid errors when a file starts with a comment. #1252
  • Bump promesa to 9.0.462 and use it for parallel request processing.


  • Fix missing diagnostics when --project-root is different than current directory. #1245
  • Add new dump feature, returning analysis, project information, dependency-graph and others. Check clojure-lsp.api/dump for more information. #744
  • Improve CLI output avoiding logs from clj-kondo which are already available via verbose log.


  • General
  • Remove dependency on lsp4j.
  • Fix extra space on :import when sorting classes. #1152
  • Bump Graalvm from to 22.2.0 improving binary performance/size. #1154
  • Bump clj-kondo to 2022.08.03.
  • General release of dep-graph-queries, improving query performance. See prior release for feature details.
  • Generate nightly builds for macos aarch64 (M1/M2) every push on master.
  • Bump lsp4clj to 1.2.1.
  • Bump cljfmt to 0.9.0.
  • Fix issue with classpath clojure build tools invocation on MS-Windows. #1132
  • Bump babashka/fs to 0.1.11.

  • Editor

  • Improve completion sorting, showing locals before functions and other completion items. #1158
  • Fix hover to show current var definition docs instead of def/defn. #1157
  • Improve hover for requires to show ns docstring. #1171
  • Fix destructuring of things that have been destructured before. #1156
  • Some completions require that a new alias be added to the ns form. Fix this feature for Calva users, and improve performance for all users. #1068
  • Fix resolve-macro-as code action corner case. #1084
  • Ensure line numbers provided by document-symbol correspond to the latest version of the file. #1178
  • Avoid exceptions when clients use URIs that don't exist on disk.
  • Fix documentation on completion items. #1181
  • Fix rename of defrecords. #1165
  • Fix to send all diagnostics to client at startup, even in very large projects. #1153
  • Fix to preserve kebab-casing in server-info-raw. #1195
  • Add refactoring Restructure keys, the inverse of Destructure keys. #1170
  • Add refactorings to convert between (:x m) and (get m :x) or (:y (:x m)) and (get-in m [:x :y]). #1172
  • Add support to imported java class on completion. #1193
  • Add new question to skip or retry classpath scan during startup if failed.
  • Improve performance of processing of changed files outside editor calling clj-kondo in batch. #1205
  • When renaming a keyword that is also a destructured key, rename its local usages too. #1192


  • General
  • Bump cljfmt from 0.8.0 -> 0.8.2

  • Editor

  • Add clojure.core/fn to resolve-macro-as options. #1094
  • Restore #995 Improve element selected on textDocument/hover (previously reverted) with a fix that keeps it working for Calva even after a syntax error is introduced.
  • Improve call hierarchy performance by parsing less frequently. #1092
  • Improve system wide performance by keeping a graph of dependencies between namespaces. #990 #1053 Enable setting :experimental {:dep-graph-queries true} to beta test this feature.
  • Improve performance by adding second level of analysis indexing.
  • Improve performance of things that need keyword definitions, like completion and custom lint.
  • Fix hover showing previous function elements on some cases. #1098
  • Fix: find definition will find registration of unnamespaced keyword.
  • Fix to update unused-public-var lint on registered keywords as usages change in other files. #1018
  • Fix to navigate to var defined by declare, when there aren't any later defs. #1107
  • Fix to always go to the definition of the correct var imported by potemkin. #1020
  • Fix to correctly rename namespaces. #1121
  • Fix to correctly :keep require and import indent spacing. #1141
  • Improve accuracy of progress reporting during uncached startup. #1134
  • Add refactoring Destructure keys to destructure keywords. #905
  • Add refactoring Extract to def to create a def from the thing under the cursor. #1136
  • Include defmethods in document and workspace symbols. #1016


  • Editor
  • Reverted #995 Improve element selected on textDocument/hover, as it caused clojure-lsp to stop working for Calva users after a syntax error was introduced. #1080


  • General
  • clojure-lsp has a flake.nix now, being able to be built using clj-nix. #999
  • Remove use-source-paths-from-classpath setting, its value was already true and disabling it could cause false-positives.
  • Add compute-external-file-changes setting as true by default, when enabled it will consider file changes outside editor like git branch changes and update analysis, avoiding the need to restart server when a file is changed outside editor, this will only work if client file-watchers is enabled. #1002
  • Bump lsp4clj to 0.4.1.
  • Remove deprecated disabled setting :linters :clj-kondo :async-custom-lint?. #1017
  • Fix references and code lens of defrecord/deftype for cljs files. #1055
  • Fix clean-ns to move reader conditionals to before normal requires. #1057
  • Add new optional linter: clj-depend integration. #957
  • Add new setting :source-paths-ignore-regex to filter source-paths that are auto generated for example for cljs projects, the default value should be enought for most cases (["resources.*" "target.*"]), replacing old ignore-classpath-directories.
  • Bump clj-kondo to 2022.06.22.

  • Editor

  • Add support to rename namespace of namespaced keywords like re-frame events/subs. #978
  • Improve performance of find-declaration feature. #1021
  • Fix to avoid suggesting an alias from a clj file to a cljs file. #1024
  • Find references of namespace usages now find all namespace usages on project, not only the definition. #1022
  • Improve element selected on textDocument/hover, showing the function being called instead of the closest element found backwards. #995
  • Fix drag from quoted symbols and other special nodes #969
  • Drag requests two smaller edits, instead of one large edit, potentially avoiding flicker. #1043
  • Drag is disabled between clauses, to avoid arbitrarily choosing one to move. #1030
  • Cursor doesn't move within dragged clause. #1029
  • Improve performance of drag forward.
  • Avoid invalid cached analysis and document text after a rename. #1049
  • Improve lint performance by only linting references files when usage is added or removed. #1019
  • Extracted functions are private. #1039
  • Fix errors when Emacs lock files are linted. #1054


  • General
  • Bump clj-kondo to 2022.05.31
  • Consider .clj_kondo files as clj files.


  • General
  • Allow specify how many classes clojure-lsp should check before moving sorted package imported classes to next line. #966
  • Allow :linters to be configured by LSP clients passing string keys/values. #977
  • Support clj-kondo :config-in-ns and :ns-groups for clojure-lsp/unused-public-var linter. #981
  • Improve clean-ns correct positioning of multiple refers.

  • Editor

  • Fix powershell.exe command execution error on Windows
  • Fix drag in are when clojure.test is aliased. #967
  • Reduce time to calculate semantic tokens, reducing CPU usage in large files. #970
  • Fix JDK global cache load when jdk source were already analyzed on previous sessions, fixing finding definition of jdk classes not working sometimes.
  • Fix command move-form not working.
  • Fix find definition of macros required by :require-macros on cljs files. #980
  • Add support to completion keywords found on function definition :keys destructuring, improving completion on api calls.
  • Avoid duplicate parens when inserting snippets during completion. #982


  • Make all cli features open files faster, improving speed of all CLI/API features. Fixes #985


  • General
  • Bump clj-kondo to 2022.04.26-20220429.192438-2.
  • Decrease uncached startup time by 60-70%, by instructing clj-kondo to skip var definition bodies when analyzing deps. #1674
  • Improve speed of alias/ns completions.
  • Change alias/ns completions to return a label that matches the input.
  • Support sorting classes inside package imports during clean-ns. #932
  • Avoid saving duplicate source-paths, not calling clj-kondo to analyze same filenames multiple times, improving startup speed.
  • Improve progress report both on editor and CLI using new clj-kondo callback feature.

  • Editor

  • Support workspace/willRenameFiles, renaming namespaces and all its references when a file is renamed.
  • Don't save cache when classpath lookup failed.
  • Wait for editor to apply edits before requesting cursor re-positioning. Fixes cursor positioning after drag in Calva.
  • drag: Request edit only of changed clauses, not entire parent, reducing flicker.


  • Bump lsp4clj to 0.3.0.

This release was supported by Clojurists Together


  • General
  • Improve settings documentation.
  • Fix completion performance regression from previous release.
  • Consider .bb and .cljd files as clj files. #906
  • Bump to clojure 1.11.0
  • Improve analysis query performance as a whole for lots of features. #916
  • Bump clj-kondo to 2022.04.09-20220414.123207-3 fixing semantic tokens for :require, :refer and :as. #1609
  • Move lsp4clj to outside clojure-lsp to its own repo/jar release.
  • Fix local files outside source-paths not being linted even if opened/changed.
  • Consider filename + lastModified as checksum for external files, avoiding analyzing it if analysis is already present.
  • graalvm: Compile static linux with --musl for better compatibility. #868
  • java: Use XDG_CACHE_HOME or .cache/clojure-lsp instead of config files for JDK cache.
  • java: Cache JDK analysis globally avoiding high CPU usages after startup.
  • java: Add :java :home-path setting for easier way to specify java location for JDK source analysis. #907

  • Editor

  • Introduce ALPHA move-form command. #566
  • Rename "Move coll entry up/down" to "Drag forward/backward", matching Calva/Paredit terminology
  • drag: clauses move intuitively in clojure.test/are
  • drag: top-level forms can be dragged #891
  • Improve completion performance for most cases, reducing time to compute clj/cljs core symbols.
  • completion: suggest functions defined in Clojure 1.10 and 1.11
  • completion: Fix to no require extra ns when alias is already required. #920
  • promote-fn: new feature Promote a fn to a top-level defn. #783 @mainej
    • promote-fn can also promote a literal #() to a fn
  • demote-fn: Demote a fn to a literal #()
  • breaking remove cycle-fn-literal, since the same refactorings can be performed with the more clearly named promote-fn and demote-fn
  • drag: Fix to drag element-wise in destructured keys, not pair-wise. #927
  • test-tree: reduce CPU usage, especially during startup

  • CLI

  • Reduce CPU and wall-clock time in cli commands clean-ns and diagnostics

This release was supported by Clojurists Together


  • Fix URI resolver on java JDK logic.
  • Fix zipfile scheme when finding external deps.


  • Add java class find-definition support, decompiling .class files when available. #762
  • Add JDK source discoverability feature, searching for installed JDK for later analyze with clj-kondo and support java classes interop.
  • Add :java :download-jdk-source? setting to download JDK source after startup if not cached before globally or found locally. Disabled by default.
  • Avoid high CPU usage and freezes by more efficiently finding referenced files to notify on file change. #844 @mainej
  • Bump clj-kondo to 2022.03.10-20220331.135739-32 improving java analysis and fixing a critical regression for re-frame. #888

This release was supported by Clojurists Together


  • Fix unused-public-var not considering excluding comments, changing async-custom-lint? setting to false.


  • General
  • Fix cljfmt settings merge during refresh/classpath configs merge to avoid multiple config vectors on same symbol.
  • Fix install script for aarch64. #794
  • Fix handling cljfmt config files that end in .clj
  • parser: more efficiently seek to cursor position, improving performance especially in large files. #793 @mainej
  • Fix clean-ns not sorting properly node requires for cljs. #815
  • Fix move-to-let to ensure locals don't move out of scope. #830
  • Improve logic around require suggestions. #837
  • Enhance move-to-let to introduce and expand let if an existing one doesn't exist. #829
  • Bump org.clojure/clojure to 1.11.0.
  • Fix move-coll-entry to maintain cursor position instead of a range. #862
  • Clean ns automatically after adding missing require/imports, enabled by default under new :clean :automatically-after-ns-refactor flag. #558

  • Editor

  • extract-function: Fix wrong args when extracting from multi-arity fn. #683
  • extract-function: Fix wrong args when extracting after a local usage. #812 @mainej
  • move-coll-entry: clauses move intuitively in assoc, case, cond, and similar functions. #780 @mainej
  • move-coll-entry: fix NPE when when invoked from top-level #803 @mainej
  • Generate stubs async after startup, improving startup time. #788
  • Improve and add lots of new snippets following practicalli config. #797
  • Improve how watched new files are analyzed avoiding infinite loops and performance issues. #796
  • Avoid infinite loops when several files are changed simultaneously. #796 @mainej
  • Fix "incoming call hierarchy" not considering usages inside defmethods. #808
  • range-formatting: more efficiently locate extent of range and reduce number of calls to cljfmt, improving performance especially when formatting large ranges. #795 @mainej
  • cycle-fn-literal: new feature convert between function-literal syntaxes (fn [] ...) <-> #(...). #774
  • Add find-implementation feature to defmulti and defmethod. #751
  • Make find-implementation of defprotocol names find its implementations and find-implementation on deftype/defrecord methods find other implementations.
  • Add new code action Introduce let for existing command. #825
  • Make find-implementations consider reify. #827
  • Fix namespace on file creation when nested source-paths are available. #832
  • unused-public-var: fix to show warnings on vars defined with declare. #840
  • unused-public-var: large performance improvements, especially for large projects. #861 @mainej


  • Extract lsp4clj as a seperate library. #807 @Cyrik Supported by Scarlet
  • Fix inconsistency with clean-ns/format not copying kondo configs.

This release was supported by Clojurists Together


  • General
  • Use :source-aliases setting during default deps.edn and lein project-spec aliases, avoiding the need to configure a whole project-spec just because of a additional alias.
  • Exclude from unused-public-var linter vars with metadata ^:export. #753
  • Fix clean-ns multiple refers sort when there is a alias before the refers.
  • Bump clj-kondo from 2022.01.15 to 2022.02.09 adding support for implementation analysis and more improvements.
  • Medium performance improvement during startup when unused-public-var linter is disabled.
  • Medium performance improvement during startup on unused-public-var calculation parallelizing calculations.
  • Small performance improvement on code actions calcullation.
  • Add :use-source-paths-from-classpath setting defaulting to true, which makes clojure-lsp do not manually discovery source-paths but get from classpath excluding jar files and paths outside project-root. #752 #551
  • Improve completion performance when all clojure.core or cljs.core symbols are valid completions. #764, #771 @mainej
  • Fix scenarios where the lint findings in individual files differed from what you'd expect based on the .clj-kondo/config.edn settings.
  • Add :exclude-regex and :exclude-when-definted-by-regex to :clojure-lsp/unused-public-var linter.
  • Bump org.clojure/clojure to 1.11.0-rc1.

  • Editor

  • Fix exception during code actions calculation when in a invalid code of a map with not even key-pairs.
  • Don't return diagnostics for external files like files on jar dependencies, avoiding noise on lint when opening dependencies.
  • Support finding implementations of defprotocol and references of defrecord/deftype, implementing LSP method textDocument/implementation. #656
  • Make the actions and commands aware of when they were invoked from comments or whitespace. This will allow individual refactorings to be more deliberate about how they handle comments and whitespace. #716 @mainej
  • Correctly position the cursor after calling move-coll-entry-down on an entry with leading comments. #758 @mainej
  • Don't return completions when invoked from a comment, avoiding performance problems. #756
  • Fix small anomalies in parameter names of extracted private functions. #759 @mainej
  • Add semantic tokens for protocol implementations methods like defrecord and deftype.
  • Small performance improvevement on code lens calculation using transducers.


  • Small performance improvement to format, clean-ns, diagnostics, and rename via parallelizing parts of the logic.
  • Fix edn->json parser of serverInfo/raw for Calva use cljfmt configuration. #763
  • Add :cljfmt-raw config to serverInfo/raw for Calva. #768
  • Add support for passing specific --filenames for most actions. #775

This release was supported by Clojurists Together


  • General
  • Fix classpath hash regression introduced by last release


  • General
  • Migrate project from depstar -> #711
  • Improve classpath hash to consider invaliding cache when local root deps was changed.
  • Replace datalevin cache db with transit. #703
  • Bump Graalvm from 21.3.0 to improving binary performance/size
  • Update XDG_CONFIG_HOME to clojure-lsp directory in doc/

  • Editor

  • Support going to namespace definition on an alias. #706
  • Add LSP textDocument/declaration, for now adding the making possible navigate to alias and namespaces declared on the namespace. #680
  • Fix removal of file analysis on didClose for external files like jars. #717
  • Fix cursor not moving when using code actions that move the cursor automatically.
  • Fix additional-snippets to work on top-level forms as well.
  • Fix resolve completion item not returning insertText. #719 @Cyrik
  • Remove support for LSP codeAction/resolve. It added complexity and was not used in a way that improved performance of the action menu. #722, #725, #726
  • Fix create public function refactoring not working when function is not a function call.


  • General
  • Fix freezing in some cases during clojure-lsp startup linting. #708


  • General
  • Bump clj-kondo to 2022.01.15.
  • Add :classpath to serverInfo command for downstream usages.
  • Fix issues in extract-function that arise when operating over .cljc files.
  • Add setting :copy-kondo-configs? to allow disable auto clj-kondo config copy, enabled by default. #694
  • Lint unused public keywords, like unused re-frame events/subs. #691
  • Fix rename of namespaced keywords -> aliased keywords. #665
  • Huge refactor on clojure-lsp codebase, spliting code into submodules, this made possible remove a lot of deps from API jar and help separate clojure-lsp features in the future. #658
  • Send testTree notification for all project test files after clojure-lsp start. #697

  • Editor

  • Improve 'create function' refactor code action handling multiple cases. #682
  • Fix 'resolve macro as ...' code action not working.
  • Fix showDocumentRequest issues when triggered via some refactor code action.
  • Add new code actions + commands Move coll entry down and Move coll entry up to move entries within collections. #684, #701


  • Make format, clean-ns and rename features not need to scan whole classpath, analyzing only project code improving performance a lot.


  • Catch clj-kondo prints to stdout and log to clojure-lsp log file avoiding crashes on some clients like vscode/Calva.


  • General
  • Fix some analysis conflicts regarding custom-async-lint? feature introduced on latest release causing outdated analysis and some deadlocks.

  • Editor

  • Fix inline symbol code action regression from previous releases. #678
  • Fix expand let refactor duplicating variables in some cases. #676
  • Add completion support to potemkin usages of a namespace.


  • Wait for db cache upsert before end proccess, avoiding the need to re-lint whole classpath on next api/cli runs.
  • Fix the need to use :raw? true on babashka pod usage.


  • General
  • Bump clj-kondo to 2021.12.19, supporting auto-load configs, improving potemkin support, adding more linters and more.
  • Merge :cljfmt settings with :cljfmt-config-path if file path exists.
  • Avoid high CPU and lockup when clj-kondo throws exceptions. #671
  • Allow absolute paths in deps.edn :local/root #672
  • Fix clojure-lsp not loading for some mono-repo cases, improving local/root support for polylith projects. #673
  • Avoid infinite loop because of cyclic dependencies on deps source-path discovery.
  • Add babashka pod. #555

  • Editor

  • Change call hierarchy to return selection range of usage, not function definition.
  • Return edits in codeAction/resolve responses rather than commands. #655
  • Improve :linters :clj-kondo :async-custom-lint? to avoid infinite loops and default to true.
  • Add new custom LSP feature Test Tree, which shows all test hierarchy of a file. #653
  • Improve function name finding to consider other function definition types for some features. #666
  • Make textDocument/hover return the correct range from LSP spec, the element range instead of the element scope range.


  • Exit process if any error during classpath lookup. Opt-out via :api :exit-on-errors? flag.


  • General
  • Add support for LSP method textDocument/prepareRename which it's the proper way to check if the rename will work correctly. #642
  • Expose new custom method clojure/cursorInfo/raw for custom hack on current cursor information code. #645
  • Support stub generation using clj-easy/stub, adding analysis and linting support for closed sources codes like Datomic. Check :stubs settings for more details. #637
  • Handle config deep merge differently for collections, concating instead of overwriting.
  • Fix unnecessary exception thrown on graal images during startup.
  • Support deps.edn :local/root source-paths discovery, improving support for monorepo projects like polylith. #652
  • New setting value for :clean :sort :require: :lexicographic. #654
  • Bump clj-kondo to 2021.10.20-20211126.151305-16.

  • Editor

  • Support completion on aliased keywords. #649
  • Add new Sort map keys refactoring code action. #651
  • Add new Create function code action, allowing to create a function on a existing namespace or creating a new namespace + the function. #646
  • Improve Extract function refactoring to consider comments above current function.
  • Experimental: new :linters :clj-kondo :async-custom-lint? setting, when true, scan unused-public-vars async improving lint/analysis UI feedback for huge buffers (> ~1000 lines). Default false.

This release was supported by Clojurists Together


  • General
  • Improve rename feature to not heavily rely on valid source-paths for most cases.
  • Fix setTrace exception logs for graalvm native images.
  • Huge improvements on namespaces renames and namespaces references find. #573
  • Fix/Remove warnings during datalevin access.
  • Improve freezing for some MacOS cases. #631
  • Bump clj-kondo to 2021.10.20-20211116.110002-7 improving code parsing and other fixes.

  • Editor

  • Fix "Add require" code actions adding multiple requires instead of the selected.
  • Improve "Add require" wording, making it easier to understand what each different action will do.
  • Smart check all available refers to require, adding refer options to Add require code actions. #627
  • Big improvements on keyword completions. #630
  • Add setting keep-parens-when-threading? to keep parens for single arity functions when threading. #636
  • Avoid adding duplicate requires when adding a new require via code action. #640
  • Improve common known snippets to replace completion items, improving completion UX. #638

This release was supported by Clojurists Together


  • General
  • Bump Graalvm from 21.2.0 to 21.3.0 improving binary performance/size
  • Fix wrong parse of code when code contains namespaced maps like #:foo{:bar 1}. This issue was affecting a lot of features for example code actions.
  • Bump datalevin from 0.5.26 to 0.5.27.
  • Improve semantic tokens for dynamic vars, function definitions, namespaced and aliased keywords.
  • Fix bug where :source-paths settings could be hot-reloaded with wrong-value.

  • Editor

  • Deprecates setting :show-docs-arity-on-same-line? in favor of :hover :arity-on-same-line?.
  • Add support to new LSP LinkedEditingRange feature. #341
  • Improve suggested Add require ... code actions, this should make clojure-lsp smarter when user wants to add a missing require. #614
  • Change :notify-references-on-file-change default from false to true, we had some performance improvements and I've been testing this for some time now and didn't see any new issues with that. This should improve a lot the UX when user change any code that is references on other files, updating the diagnostics for those files as well.
  • Improve rename feature UX to output errors when it's not possible rename.
  • Add support for window/showDocument LSP method, used on create-test command/code action after creating the test to show the test file.
  • Add new Unwind thread once and Unwind whole thread code actions to undo a thread call.
  • Improve code actions performance requesting async all actions.
  • Add new LSP custom method clojure/clojuredocs/raw which takes a symbol and a namespace (both strings) and returns any Clojuredocs entry found, otherwise null.
  • Fix missing keywords rename/references for destructured keywords.

  • CLI

  • Show error/warning message when a classpath scan fail during analysis. Fixes #626
  • Add coloring to diagnostics output matching diagnostic severity.

This release was supported by Clojurists Together


  • Editor
  • Hot fix clojuredocs on graalvm native image.
  • Bump clj-kondo to 2021.10.20-20211020.123254-3 to fix a specific issue with cljs.
  • Implement support to return to client LSP Errors, making user UX better since clojure-lsp can return specific errors for specific exceptions.


  • General
  • Improve intialization feedback report messages.
  • Consider dev and test alias for deps.edn projects as project-specs during classpath lookup. #586
  • Avoid scanning source-paths twice, as it was being considered as part of external classpath as well.
  • Change cache db from sqlite to datalevin for faster startup + better graalvm compatibility.
  • Make the cache analysis save async to make startup faster.
  • Support Auto refresh settings memoizing with a ttl of 1 second avoiding the need of restarting server when changing configs. #502
  • Bump clj-kondo adding new gen-class linter and other fixes/improvements. Fixes #589
  • Remove unused duplicate require if any. #527
  • Fix crash on clean-ns when ns contains comments.
  • Improve project analysis filter to check source-paths. #597

  • Editor

  • Add reference code lens for ns forms. #578
  • Fix expand-let bug that occurs when a list form precedes let. #590
  • Add new command to create test for function at point. #582
  • Add new code action to create test for current function/var
  • Add private to documentSymbol to make clear that a var or function is private.
  • Add new code action Suppress xxx diagnostic, adding clj-kondo comment code to ignore the diagnostic. #591
  • Add more semantic tokens: aliases for macros, variable and function definitions.
  • Add clojuredocs information during symbol hover. #571

This release was supported by Clojurists Together


  • Editor
  • Hot fix hover content wrong type hinting.


  • 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.25 fixing false-positives with potemkin import-var analysis.
  • Re-scan whole project if any clj-kondo config changed for better consistence. #331
  • Fix clojure-lsp not initializing when empty project.clj. #579
  • Support finding config in classpath via new setting:classpath-config-paths ["my-org/my-lib"]. #580

  • Editor

  • Fix resolve macro as code action after regression introduced recently.
  • Fix unused-public-var not being suppressed during project startup. #554
  • Improve hover feature to return elements when inside a function call. #569
  • Fix create-private-function command and code action to consider when new function is inside thread macros.
  • Support $/progress LSP feature, sending notifications for client when server is starting, improving the feedback for the user.
  • Improve semantic tokens support for java classes and methods.


  • 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.
  • Follow same exit status from clj-kondo for diagnostics feature. #572
  • Improve start project feedback reporting the percentage and specific message.

This release was supported by Clojurists Together


  • 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: July 7, 2024