-
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.
-
API/CLI
- 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. https://github.com/clj-kondo/clj-kondo/issues/1370. - 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.
-
API/CLI
- 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
-
API/CLI
- 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
-
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 https://github.com/BetterThanTomorrow/calva/issues/1050
- 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/
-
API/CLI
- 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.
-
API/CLI
- 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.
-
API/CLI
- 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.
- API/CLI
- 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
install-latest-clojure-lsp.sh
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.
-
API/CLI
- 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 https://github.com/clj-kondo/clj-kondo/issues/1246
- 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 install-latest-clojure-lsp.sh 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 clojure.java.io 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 https://github.com/clojure-lsp/clojure-lsp/pull/261 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
- 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
Can you improve this documentation? These fine people already did:
Eric Dallo, Noah, Raf, Andrey Listopadov, wdullaer, Shogo Ohta, Clojure LSP bot, Nate Smith, Marconi, Matthew Steedman & Peter StrömbergEdit on GitHub