All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
- Upgrade Roslyn to 4.12.0
- Fix an issue where server breaks when inspecting class/properties involved in source-generated code:
- By @granitrocky in #189
- Make sure textDocument/findReferences respects Context.IncludeDeclaration
- Fix an issue where server would file on projects using code generators (like Asp.Net razor) on some of the endpoints:
Full Changelog: https://github.com/razzmatazz/csharp-language-server/compare/0.15.0...0.16.0
Full Changelog: https://github.com/razzmatazz/csharp-language-server/compare/0.14.0...0.15.0
- Speed up completion by not showing name suggestions or items from unimported namespaces
- Bump Ionide.LanguageServerProtocol to 0.6.0, fix some of the types used for dynamic registration
- Reduce noise when loading >10 project files, include currently loading project in progress bar.
- By @BrianCArnold in #162
- Register TextDocumentSync lazily
- By Adam Tao @tcx4c70
- Support completionItem/resolve method to speed up completion;
- By Adam Tao @tcx4c70
- Do not rename symbol in strings or comments, restore file rename
- As reported by @Myrslaver in #157
- Stop collecting symbols in method body
- By Adam Tao @tcx4c70
- Fix TypeHierarchy registration
- By Adam Tao @tcx4c70
- Fix wrong references number
- By Adam Tao @tcx4c70
- Add progress reporting when loading a solution/project
- By Adam Tao @tcx4c70
- More refactoring and fixes from rework branch:
- By Adam Tao @tcx4c70, from https://github.com/tcx4c70/csharp-language-server/commits/rework/
Full Changelog: https://github.com/razzmatazz/csharp-language-server/compare/0.13.0...0.14.0
- Bump Ionide.LanguageServerProtocol dependency to v0.5.0
- Fix performance issue in completion handler introduced in 0.12.0
- Reported by @DanielViberg in #151, bisected by @DmitryHudrich
- Fix "Extract interface.." code action
- Reported by @JorgeHerreraU in #152
- Bump MSBuild, Argu and ICSharpCode.Decompiler dependency versions
Full Changelog: https://github.com/razzmatazz/csharp-language-server/compare/0.12.0...0.13.0
- Update Roslyn 4.7.0->4.9.2 to support C# 12
- PR by @arussellk: #141
- Register server capabilities with the client lazily to improve startup performance
- PR by @tcx4c70: #102
- Rework logging to be based on Serilog
- PR by @tcx4c70: #134
- More refactoring by @tcx4c70
- PR by @tcx4c70: #102
- Change package management to CPM
- PR by @tcx4c70: #132
- Update Ionide.LanguageServerProtocol dependency to v0.4.22
- refactoring by @tcx4c70
- PR by @tcx4c70 in #102
- csharp-ls will now use and require .NET 8 runtime/SDK
- PR by @BeauCranston in #122
- Add support for textDocument/typeDefinition
- PR by @rudiejd in #123
- Upgrade dependencies: Roslyn, ICSharpCode.Decompiler, Microsoft.Build;
- Fix for a crash in serverEventLoop
- By @kstatz12 in #113
- Possible fixes to #62
and #57
- By Adam Tao @tcx4c70 in #112
- Fix issues with code actions and other functionality that was
broken after upgrade to recent roslyn version.
- Fixed by Adam Tao @tcx4c70 in #111
- Make --solution cmd line param take effect even when the editor provides us
with
csharp.
settings;- By @vytautassurvila in #105
- Upgrade dependencies: Roslyn, ICSharpCode.Decompiler, Microsoft.Build;
- Support formatting options
- By @weirongxu in #94
- Add more symbols to documentSymbols & codeLens
- By Adam Tao @tcx4c70 in #87
- Support type and call hierarchy
- By Adam Tao @tcx4c70 in #74
- Semantic token types fix
- By Adam Tao @tcx4c70 in #84
- Fix crash if there is no newline at the end of the last line
- By Adam Tao @tcx4c70 in #83
- Avoid a crash when client does not signal textDocument/publishDiagnostics cap
- Reported and fixed by @sharpSteff in #77
- Update Roslyn libs to 4.6.0-1.final, Microsoft.Build* to 17.5.0
- Finish initialization early and load solution/project in background
- Previous behaviour was causing problems in eglot (emacs) where client has a timeout set for server initialization
- Add support for server configuration via LSP:
csharp.solution
- solution file to load
- Semantic token improvements
- By Adam Tao @tcx4c70 in #70
- Inlay hint support
- Remove timeout on handler for
codelens/resolve
-- that wasn't a good idea to begin with
- Fixes for Windows where file:// URIs were not parsed/built properly from native filenames before;
- Reported by @blasco and @gorsheninmv in #57
- Upgrade Roslyn to 4.5.0-2.final (from 4.4.0);
- Semantic token support
- By Adam Tao @tcx4c70 in #68
- Fix an issue where some of initial LSP requests deadlock.
- Improve scheduling of background diagnostics processing;
- Support for the .NET SDK 7.0;
- Note that there was an issue with .NET SDK 7 previews breaking SDK, you may need to do some cleanup, see:
- csharp-ls will now require .NET 7 SDK
- Thanks to @Decodetalkers in #56
- Fixes for the
textDocument/prepareRename
request; - Upgrade Microsoft.Build + Roslyn libs.
- Add support for
textDocument/prepareRename
request; - Upgrade Microsoft.Build + Roslyn libs;
- Update
textDocument/documentSymbol
handler:- emit hierarchical symbol tree, where client supports it;
- emit
DocumentSymbol[]
instead ofSymbolInformation[]
, the former of which has more info.
- Fix an issue where we would fail to generate code action list if one of code action providers would raise an exception; -- log the message to the log instead and continue with the next provider to be more resilent;
- Upgrade Microsoft.Build libs;
- Inject required roslyn WorkspaceServices so more refactorings work now:
- pull member;
- move static members to another class;
- generate overrides;
- others;
- Fix an issue where a new file was added to wrong project.
- Fix intermittent server crashes after upgrading to latest Ionide.LanguageServerProtocol:
- Upgrade roslyn libs to 4.4.0-1.final;
- Properly format + "localize" symbol names in
textDocument/documentSymbol
response;- Reported by @joefbsjr in #42
- Properly format ITypeSymbol (structs/enums/classes) when displaying type info on
workspace/symbol
and other LSP requests;- Reported by @joefbsjr in #41
- Load solution-in-sync when initializing. This will help "server initializing" notification work better for clients that depend on
initialize
request not to complete until the server/solution is properly loaded initialized.- Reported by @joefbsjr in #40
https://www.google.com/search?tbm=isch&q=daugai+lithuania
- Fix (hopefully) how timeout on "textDocument/codeLens" works -- an empty result is returned now, and not as a request cancellation;
- Fix how request cancellation is signalled to down the pipes to StreamJsonRpc/Ionide.LSP -- we will unwrap AggregateException to expose TaskCanceledException:
- see #32 reported by @vytautassurvila;
- Add a fix for some editor where special urls on file path, like '#' were not handled properly:
- PR #38 by @tcx4c70
- Update Roslyn, MSBuild and ICSharpCode.Decompiler;
- Fix how "unnecesary using directive" is exposed, hopefully:
- fixes #35 by @Decodetalkers;
- Expose actual csharp compiler diagnostics ids (e.g. CS0117) for nicer diagnostics messages.
- Fix another long-standing bug with incremental document synchronisation;
- very visible on nvim but affects all editors/clients;
- reported by @Decodetalkers #31;
- Improve textDocument/completion:
- provide
CompletionItem.FilterText
andCompletionItem.SortText
;
- provide
- Implement textDocument/signatureHelp;
- change
CodeAnalysis.AddImport
kind toquickfix
- this will show add missing imports in vscode's quick fix panel;
- don't run pending read/only requests until previous r/w one is processed;
- this should fix #28 reported by @vytautassurvila
- Don't register capabilities when initialized, but after "initialized" has been received from the client;
- this makes us more LSP-spec compatible;
- noted by @vytautassurvila in #26
- Revert Roslyn update, broke some of the stuff with now gain;
- Fix an issue where some of the assemblies cannot be inspected with go-to-definition from metadata;
- Try harder to match method by arity when doing "go-to-definition" on metadata;
- e.g.
Console.WriteLine()
should now open the correct definition as it is single matching methodWriteLine
onConsole
with arity of 0;
- e.g.
- Update Roslyn and ICSharpCode libs;
- Observe and update solution when unopen files are changed/added/removed;
- this should reduce the need to restart lsp workspace often after adding/removing files or after git branch switches;
- Reload solution on .sln or .csproj change;
- Change how diagnostics are calculated (again) so we sent it for all the documents that we know are open, once a random file has been modified, in the descending order that they were touched.
- Run diagnostics resolution outside the main state actor so we don't lock up other processing;
- Add timeout for codelens requests to avoid excessive CPU usage as that is prone to run for a long time;
- Really fix write-request serialization;
- Revert the emacs-29 fix, didn't do much.
- Carefully observe incoming requests from StreamJsonRpc to actually serialize write-access to solution state;
- Should fix sync issues (another attempt..)
- Attempt to fix an issue with emacs-29 by setting
bufferSize
inConsole.OpenStandardInput
call.
- Support for document formatting, courtesy of @kstatz12;
- Fix
textDocument/didOpen
handler:- we will now refresh roslyn solution with file contents as reported by the editor, as our state could have been outdated since;
- Fix sync issues by serializing writes to server state;
- Implement incremental file change sync to improve performance for large files;
- Handle $/cancellationRequest's to handle cancellation requests properly.
- Refactor server state tracking to (hopefully) fix some issues with document sync/versioning;
- Fix, hopefully in the final form, how symbols are formatted by using roslyn To*DisplayString() methods;
- Don't show symbol attributes on textDocument/documentSymbol response;
- Implementation for code lens that shows number of references;
- Needs client implementation of
workspace/executeCommand
:csharp.showReferences
;
- Needs client implementation of
- Nicer on-hover markdown that should match the context better;
- Expose properties & events on textDocument/documentSymbol;
- Pull
add using import
code action to the top of action list, mark it prefered and withKind
, csharp-language-server#9.
- Bump roslyn libs to a newer version;
- Add support for
textDocument/implementation
; - Expose more bits from xmldoc properly on tip on hover;
- Drop local LanguageServerProtocol clone from FSAC and use Ionide.LanguageServerProtocol instead;
- Fix file creation via code actions (e.g. when extracting an interface or inner class to another file);
- List params and exceptions in the same order as they appear on docxml on the symbol (instead of random order) -- csharp-language-server#6;
- Disable incorrectly implemented
textDocument/implementation
provider csharp-language-server#4;
- Update roslyn+msbuild libs to support for
net6.0
projects; - Use .NET 6.0 for runtime;
- Fix
workspace/symbol
to return correct locations; - Implement
textDocument/implementation
(alias totextDocument/definition
actually); - Support for
codeAction/resolve
so we have faster code action resolution/less overhead when working on large solutions.
- Enable code actions that are nested, like "generate field/property/ro-field/ro-property";
- Update how tooltip on hover is formatted; should be much nicer;
- Fix how adding new file works -- don't write unnecesary
<Compile>
when a new file is added and trigger diagnostics update immediately.
- Don't reference NuGet.* packages as those bind to particular(?) sdk -- things work better now, as it was not working for me with updated SDK dependencies;
- Update roslyn dependencies;
- Adding new file works (i.e. no need to restart workspace anymore);
- There is an issue that Roslyn adds (unnecessary)
<Compile>
to the project;
- There is an issue that Roslyn adds (unnecessary)
- Don't highlight namespace symbols as those can cover all the symbols on the source file and that is not useful;
- Add -l/--loglevel <debug|info|warning|error> param;
- Expose C# docxml as markdown for more proper on-hover experience (still needs more love, FsAutoComplete does it beautifully);
- Don't publish diagnostics for C# documents generated from metadata.
- Support
--help
and--version
command line params. - Support for
-s/--solution
param to load specific solution file.
- No -alpha version number suffix so you don't need --version to install with
dotnet tool install
; - Don't return from
initialize
until we actually load the solution; - Report csharp-ls version number to the client.
Initial version:
- Most of basic LSP features work: rename/go-to-def/find references, etc;
- Support for textDocument/documentHighlight;
- Go-to-metadata (needs integration from your LSP client;)
- Published as
dotnet tool csharp-ls