diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 39a5d45cc..c9e2da22d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -78,18 +78,21 @@ jobs: fail_ci_if_error: 'true' - name: 🏺 Publish logs if: always() + continue-on-error: true uses: actions/upload-artifact@v2 with: name: 'logs' path: 'artifacts/logs/' - name: 🏺 Publish coverage data if: always() + continue-on-error: true uses: actions/upload-artifact@v2 with: name: 'coverage' path: 'coverage/' - name: 🏺 Publish test data if: always() + continue-on-error: true uses: actions/upload-artifact@v2 with: name: 'test data' diff --git a/LSP.sln b/LSP.sln index 2ffd87ed3..1a5d0701e 100644 --- a/LSP.sln +++ b/LSP.sln @@ -5,6 +5,7 @@ MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{D764E024-3D3F-4112-B932-2DB722A1BACC}" ProjectSection(SolutionItems) = preProject src\Directory.Build.props = src\Directory.Build.props + src\Directory.Build.targets = src\Directory.Build.targets EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{2F323ED5-EBF8-45E1-B9D3-C014561B3DDA}" @@ -72,6 +73,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dap.Shared", "src\Dap.Share EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestingUtils", "test\TestingUtils\TestingUtils.csproj", "{58E83291-1ED9-4921-A12F-F2450AB17F47}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dap.Protocol.Proposals", "src\Dap.Protocol.Proposals\Dap.Protocol.Proposals.csproj", "{D43637CC-94E6-4ED4-BAA3-E5D1AD3285F5}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Protocol.Proposals", "src\Protocol.Proposals\Protocol.Proposals.csproj", "{201B1CA7-AB12-41AD-9246-BC30F2EBE2DF}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -328,6 +333,30 @@ Global {58E83291-1ED9-4921-A12F-F2450AB17F47}.Release|x64.Build.0 = Release|Any CPU {58E83291-1ED9-4921-A12F-F2450AB17F47}.Release|x86.ActiveCfg = Release|Any CPU {58E83291-1ED9-4921-A12F-F2450AB17F47}.Release|x86.Build.0 = Release|Any CPU + {D43637CC-94E6-4ED4-BAA3-E5D1AD3285F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D43637CC-94E6-4ED4-BAA3-E5D1AD3285F5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D43637CC-94E6-4ED4-BAA3-E5D1AD3285F5}.Debug|x64.ActiveCfg = Debug|Any CPU + {D43637CC-94E6-4ED4-BAA3-E5D1AD3285F5}.Debug|x64.Build.0 = Debug|Any CPU + {D43637CC-94E6-4ED4-BAA3-E5D1AD3285F5}.Debug|x86.ActiveCfg = Debug|Any CPU + {D43637CC-94E6-4ED4-BAA3-E5D1AD3285F5}.Debug|x86.Build.0 = Debug|Any CPU + {D43637CC-94E6-4ED4-BAA3-E5D1AD3285F5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D43637CC-94E6-4ED4-BAA3-E5D1AD3285F5}.Release|Any CPU.Build.0 = Release|Any CPU + {D43637CC-94E6-4ED4-BAA3-E5D1AD3285F5}.Release|x64.ActiveCfg = Release|Any CPU + {D43637CC-94E6-4ED4-BAA3-E5D1AD3285F5}.Release|x64.Build.0 = Release|Any CPU + {D43637CC-94E6-4ED4-BAA3-E5D1AD3285F5}.Release|x86.ActiveCfg = Release|Any CPU + {D43637CC-94E6-4ED4-BAA3-E5D1AD3285F5}.Release|x86.Build.0 = Release|Any CPU + {201B1CA7-AB12-41AD-9246-BC30F2EBE2DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {201B1CA7-AB12-41AD-9246-BC30F2EBE2DF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {201B1CA7-AB12-41AD-9246-BC30F2EBE2DF}.Debug|x64.ActiveCfg = Debug|Any CPU + {201B1CA7-AB12-41AD-9246-BC30F2EBE2DF}.Debug|x64.Build.0 = Debug|Any CPU + {201B1CA7-AB12-41AD-9246-BC30F2EBE2DF}.Debug|x86.ActiveCfg = Debug|Any CPU + {201B1CA7-AB12-41AD-9246-BC30F2EBE2DF}.Debug|x86.Build.0 = Debug|Any CPU + {201B1CA7-AB12-41AD-9246-BC30F2EBE2DF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {201B1CA7-AB12-41AD-9246-BC30F2EBE2DF}.Release|Any CPU.Build.0 = Release|Any CPU + {201B1CA7-AB12-41AD-9246-BC30F2EBE2DF}.Release|x64.ActiveCfg = Release|Any CPU + {201B1CA7-AB12-41AD-9246-BC30F2EBE2DF}.Release|x64.Build.0 = Release|Any CPU + {201B1CA7-AB12-41AD-9246-BC30F2EBE2DF}.Release|x86.ActiveCfg = Release|Any CPU + {201B1CA7-AB12-41AD-9246-BC30F2EBE2DF}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -354,6 +383,8 @@ Global {671FFF78-BDD2-4389-B29C-BFD183DA9120} = {2F323ED5-EBF8-45E1-B9D3-C014561B3DDA} {010D4BE7-6A92-4A04-B4EB-745FA3130DF2} = {D764E024-3D3F-4112-B932-2DB722A1BACC} {58E83291-1ED9-4921-A12F-F2450AB17F47} = {2F323ED5-EBF8-45E1-B9D3-C014561B3DDA} + {D43637CC-94E6-4ED4-BAA3-E5D1AD3285F5} = {D764E024-3D3F-4112-B932-2DB722A1BACC} + {201B1CA7-AB12-41AD-9246-BC30F2EBE2DF} = {D764E024-3D3F-4112-B932-2DB722A1BACC} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {D38DD0EC-D095-4BCD-B8AF-2D788AF3B9AE} diff --git a/README.md b/README.md index 26af571e1..540a477d6 100644 --- a/README.md +++ b/README.md @@ -54,6 +54,7 @@ For more information about using the `DebugAdapterClient` / `DebugAdapterServer` | ------- | ----- | | OmniSharp.Extensions.DebugAdapter | [![nuget-version-hefb6om79mfg-badge]![nuget-downloads-hefb6om79mfg-badge]][nuget-hefb6om79mfg] | | OmniSharp.Extensions.DebugAdapter.Client | [![nuget-version-94qjnkon/cda-badge]![nuget-downloads-94qjnkon/cda-badge]][nuget-94qjnkon/cda] | +| OmniSharp.Extensions.DebugAdapter.Proposals | [![nuget-version-ajdnjvhbx+0w-badge]![nuget-downloads-ajdnjvhbx+0w-badge]][nuget-ajdnjvhbx+0w] | | OmniSharp.Extensions.DebugAdapter.Server | [![nuget-version-f/4jrt4grmdg-badge]![nuget-downloads-f/4jrt4grmdg-badge]][nuget-f/4jrt4grmdg] | | OmniSharp.Extensions.DebugAdapter.Shared | [![nuget-version-2fkn0yzdbhmg-badge]![nuget-downloads-2fkn0yzdbhmg-badge]][nuget-2fkn0yzdbhmg] | | OmniSharp.Extensions.DebugAdapter.Testing | [![nuget-version-jppuysmkpfcw-badge]![nuget-downloads-jppuysmkpfcw-badge]][nuget-jppuysmkpfcw] | @@ -62,6 +63,7 @@ For more information about using the `DebugAdapterClient` / `DebugAdapterServer` | OmniSharp.Extensions.JsonRpc.Testing | [![nuget-version-punkj7/efvjq-badge]![nuget-downloads-punkj7/efvjq-badge]][nuget-punkj7/efvjq] | | OmniSharp.Extensions.LanguageClient | [![nuget-version-fclou9t/p2ba-badge]![nuget-downloads-fclou9t/p2ba-badge]][nuget-fclou9t/p2ba] | | OmniSharp.Extensions.LanguageProtocol | [![nuget-version-vddj9t6jnirq-badge]![nuget-downloads-vddj9t6jnirq-badge]][nuget-vddj9t6jnirq] | +| OmniSharp.Extensions.LanguageProtocol.Proposals | [![nuget-version-z5fadevkwpng-badge]![nuget-downloads-z5fadevkwpng-badge]][nuget-z5fadevkwpng] | | OmniSharp.Extensions.LanguageProtocol.Testing | [![nuget-version-md8c3c/bo/8g-badge]![nuget-downloads-md8c3c/bo/8g-badge]][nuget-md8c3c/bo/8g] | | OmniSharp.Extensions.LanguageServer | [![nuget-version-fkxlzvrmzpbw-badge]![nuget-downloads-fkxlzvrmzpbw-badge]][nuget-fkxlzvrmzpbw] | | OmniSharp.Extensions.LanguageServer.Shared | [![nuget-version-4htmykprzq1a-badge]![nuget-downloads-4htmykprzq1a-badge]][nuget-4htmykprzq1a] | @@ -107,6 +109,9 @@ This project is supported by the [.NET Foundation](http://www.dotnetfoundation.o [nuget-94qjnkon/cda]: https://www.nuget.org/packages/OmniSharp.Extensions.DebugAdapter.Client/ [nuget-version-94qjnkon/cda-badge]: https://img.shields.io/nuget/v/OmniSharp.Extensions.DebugAdapter.Client.svg?color=004880&logo=nuget&style=flat-square "NuGet Version" [nuget-downloads-94qjnkon/cda-badge]: https://img.shields.io/nuget/dt/OmniSharp.Extensions.DebugAdapter.Client.svg?color=004880&logo=nuget&style=flat-square "NuGet Downloads" +[nuget-ajdnjvhbx+0w]: https://www.nuget.org/packages/OmniSharp.Extensions.DebugAdapter.Proposals/ +[nuget-version-ajdnjvhbx+0w-badge]: https://img.shields.io/nuget/v/OmniSharp.Extensions.DebugAdapter.Proposals.svg?color=004880&logo=nuget&style=flat-square "NuGet Version" +[nuget-downloads-ajdnjvhbx+0w-badge]: https://img.shields.io/nuget/dt/OmniSharp.Extensions.DebugAdapter.Proposals.svg?color=004880&logo=nuget&style=flat-square "NuGet Downloads" [nuget-f/4jrt4grmdg]: https://www.nuget.org/packages/OmniSharp.Extensions.DebugAdapter.Server/ [nuget-version-f/4jrt4grmdg-badge]: https://img.shields.io/nuget/v/OmniSharp.Extensions.DebugAdapter.Server.svg?color=004880&logo=nuget&style=flat-square "NuGet Version" [nuget-downloads-f/4jrt4grmdg-badge]: https://img.shields.io/nuget/dt/OmniSharp.Extensions.DebugAdapter.Server.svg?color=004880&logo=nuget&style=flat-square "NuGet Downloads" @@ -131,6 +136,9 @@ This project is supported by the [.NET Foundation](http://www.dotnetfoundation.o [nuget-vddj9t6jnirq]: https://www.nuget.org/packages/OmniSharp.Extensions.LanguageProtocol/ [nuget-version-vddj9t6jnirq-badge]: https://img.shields.io/nuget/v/OmniSharp.Extensions.LanguageProtocol.svg?color=004880&logo=nuget&style=flat-square "NuGet Version" [nuget-downloads-vddj9t6jnirq-badge]: https://img.shields.io/nuget/dt/OmniSharp.Extensions.LanguageProtocol.svg?color=004880&logo=nuget&style=flat-square "NuGet Downloads" +[nuget-z5fadevkwpng]: https://www.nuget.org/packages/OmniSharp.Extensions.LanguageProtocol.Proposals/ +[nuget-version-z5fadevkwpng-badge]: https://img.shields.io/nuget/v/OmniSharp.Extensions.LanguageProtocol.Proposals.svg?color=004880&logo=nuget&style=flat-square "NuGet Version" +[nuget-downloads-z5fadevkwpng-badge]: https://img.shields.io/nuget/dt/OmniSharp.Extensions.LanguageProtocol.Proposals.svg?color=004880&logo=nuget&style=flat-square "NuGet Downloads" [nuget-md8c3c/bo/8g]: https://www.nuget.org/packages/OmniSharp.Extensions.LanguageProtocol.Testing/ [nuget-version-md8c3c/bo/8g-badge]: https://img.shields.io/nuget/v/OmniSharp.Extensions.LanguageProtocol.Testing.svg?color=004880&logo=nuget&style=flat-square "NuGet Version" [nuget-downloads-md8c3c/bo/8g-badge]: https://img.shields.io/nuget/dt/OmniSharp.Extensions.LanguageProtocol.Testing.svg?color=004880&logo=nuget&style=flat-square "NuGet Downloads" diff --git a/docs/lsp.md b/docs/lsp.md index 4d393cc98..305ad1f2b 100644 --- a/docs/lsp.md +++ b/docs/lsp.md @@ -214,3 +214,8 @@ NOTE: Scoped configuration must be disposed otherwise it will continue to be upd ### Injecting `ILanguageServer` / `ILanguageClient` You cannot inject `ILanguageServer` or `ILanguageClient` in your handlers (or their services!) because handlers are resolved as part of their initialization. However you can inject `ILanguageServerFacade` or `ILanguageClientFacade`. The should have all the information you're looking for from the core types. + +## Language Proposals +The protocol periodically goes through revisions to add new features and properties to the specification. We publish these proposals in the Proposals nuget package. Due to the nature of these proposals they can/will change regularly, do not expect these to be stable until the next version of the spec is released. Our goal is for full fidelity and to ensure these proposals can be tested and vetted as thoroughly as possible. + +By registering a proposed feature as a handler it should enable itself with any significant changes. However you can call the `EnableProposals()` method on the server or client options to ensure that the proposed Capabilities are serialized as the corresponding capabilities object. This means you can cast `WorkspaceClientCapabilities` as `ProposedWorkspaceClientCapabilities` safely and see the capabilities that may be provided by the client or server. diff --git a/sample/SampleServer/SemanticTokensHandler.cs b/sample/SampleServer/SemanticTokensHandler.cs index 01c54f241..30b0b0c41 100644 --- a/sample/SampleServer/SemanticTokensHandler.cs +++ b/sample/SampleServer/SemanticTokensHandler.cs @@ -7,9 +7,9 @@ using Microsoft.Extensions.Logging; using OmniSharp.Extensions.LanguageServer.Protocol; using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; -using OmniSharp.Extensions.LanguageServer.Protocol.Document.Proposals; +using OmniSharp.Extensions.LanguageServer.Protocol.Document; +using OmniSharp.Extensions.LanguageServer.Protocol.Models; using OmniSharp.Extensions.LanguageServer.Protocol.Models; -using OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals; namespace SampleServer { diff --git a/src/Client/Client.csproj b/src/Client/Client.csproj index 0d65af57a..14bd92c9e 100644 --- a/src/Client/Client.csproj +++ b/src/Client/Client.csproj @@ -9,9 +9,14 @@ - - - - + + + + + + + + <_Parameter1>OmniSharp.Extensions.LanguageProtocol.Testing, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f + diff --git a/src/Client/LanguageClient.cs b/src/Client/LanguageClient.cs index d44493659..e2304fb25 100644 --- a/src/Client/LanguageClient.cs +++ b/src/Client/LanguageClient.cs @@ -155,7 +155,7 @@ InstanceHasStarted instanceHasStarted { _connection = connection; _capabilities = capabilities; - _clientCapabilities = clientCapabilities; + _clientCapabilities = serializer.DeserializeObject(serializer.SerializeObject(clientCapabilities)); _clientInfo = clientInfo; _receiver = lspClientReceiver; _textDocumentIdentifiers = textDocumentIdentifiers; @@ -307,10 +307,11 @@ await LanguageProtocolEventingHelper.Run( private void RegisterCapabilities(ClientCapabilities capabilities) { - capabilities.Window ??= new WindowClientCapabilities(); + capabilities.General ??= _serializer.DeserializeObject("{}"); + capabilities.Window ??= _serializer.DeserializeObject("{}"); capabilities.Window.WorkDoneProgress = _collection.ContainsHandler(typeof(IProgressHandler)); - capabilities.Workspace ??= new WorkspaceClientCapabilities(); + capabilities.Workspace ??= _serializer.DeserializeObject("{}"); capabilities.Workspace.Configuration = _collection.ContainsHandler(typeof(IConfigurationHandler)); capabilities.Workspace.Symbol = UseOrTryAndFindCapability(capabilities.Workspace.Symbol); capabilities.Workspace.ExecuteCommand = UseOrTryAndFindCapability(capabilities.Workspace.ExecuteCommand); @@ -322,7 +323,7 @@ private void RegisterCapabilities(ClientCapabilities capabilities) capabilities.Workspace.DidChangeWatchedFiles = UseOrTryAndFindCapability(capabilities.Workspace.DidChangeWatchedFiles); - capabilities.TextDocument ??= new TextDocumentClientCapabilities(); + capabilities.TextDocument ??= _serializer.DeserializeObject("{}"); capabilities.TextDocument.Synchronization = UseOrTryAndFindCapability(capabilities.TextDocument.Synchronization); capabilities.TextDocument.Completion = UseOrTryAndFindCapability(capabilities.TextDocument.Completion); diff --git a/src/Client/LanguageClientOptionsExtensions.cs b/src/Client/LanguageClientOptionsExtensions.cs index 3000e882a..2c10ae955 100644 --- a/src/Client/LanguageClientOptionsExtensions.cs +++ b/src/Client/LanguageClientOptionsExtensions.cs @@ -7,21 +7,19 @@ using OmniSharp.Extensions.LanguageServer.Protocol.Client; using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; using OmniSharp.Extensions.LanguageServer.Protocol.Models; +using OmniSharp.Extensions.LanguageServer.Protocol.Serialization; namespace OmniSharp.Extensions.LanguageServer.Client { public static class LanguageClientOptionsExtensions { - public static LanguageClientOptions WithSerializer(this LanguageClientOptions options, ISerializer serializer) + public static LanguageClientOptions WithSerializer(this LanguageClientOptions options, LspSerializer serializer) { options.Serializer = serializer; return options; } - public static LanguageClientOptions WithReceiver( - this LanguageClientOptions options, - IReceiver serverReceiver - ) + public static LanguageClientOptions WithReceiver(this LanguageClientOptions options, IReceiver serverReceiver) { options.Services.AddSingleton(serverReceiver); return options; diff --git a/src/Client/LanguageClientServiceCollectionExtensions.cs b/src/Client/LanguageClientServiceCollectionExtensions.cs index f360b4160..ff5a021c5 100644 --- a/src/Client/LanguageClientServiceCollectionExtensions.cs +++ b/src/Client/LanguageClientServiceCollectionExtensions.cs @@ -20,6 +20,7 @@ public static class LanguageClientServiceCollectionExtensions { internal static IContainer AddLanguageClientInternals(this IContainer container, LanguageClientOptions options, IServiceProvider? outerServiceProvider) { + options.WithAssemblies(typeof(LanguageClientServiceCollectionExtensions).Assembly, typeof(LspRequestRouter).Assembly); container = container.AddLanguageProtocolInternals(options); container.RegisterInstance(options.ClientCapabilities); diff --git a/src/Dap.Client/Dap.Client.csproj b/src/Dap.Client/Dap.Client.csproj index 46797d207..1fe996a04 100644 --- a/src/Dap.Client/Dap.Client.csproj +++ b/src/Dap.Client/Dap.Client.csproj @@ -9,6 +9,11 @@ - + + + + + <_Parameter1>OmniSharp.Extensions.DebugAdapter.Testing, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f + diff --git a/src/Dap.Protocol.Proposals/Dap.Protocol.Proposals.csproj b/src/Dap.Protocol.Proposals/Dap.Protocol.Proposals.csproj new file mode 100644 index 000000000..77f12517f --- /dev/null +++ b/src/Dap.Protocol.Proposals/Dap.Protocol.Proposals.csproj @@ -0,0 +1,18 @@ + + + + netstandard2.1;netstandard2.0 + AnyCPU + OmniSharp.Extensions.DebugAdapter.Proposals + OmniSharp.Extensions.DebugAdapter.Protocol + Proposed Debug Adapter Protocol models, classes, interfaces and helper methods, that may or may not make it into the final spec + + + + + + + + + + diff --git a/src/Dap.Protocol/Dap.Protocol.csproj b/src/Dap.Protocol/Dap.Protocol.csproj index 7ab6dcdf4..45920e504 100644 --- a/src/Dap.Protocol/Dap.Protocol.csproj +++ b/src/Dap.Protocol/Dap.Protocol.csproj @@ -9,12 +9,18 @@ - + + + + + + - - + + <_Parameter1>OmniSharp.Extensions.DebugAdapter.Testing, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f + <_Parameter1>OmniSharp.Extensions.DebugAdapter.Server, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f @@ -24,45 +30,8 @@ <_Parameter1>OmniSharp.Extensions.DebugAdapter.Shared, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f + + <_Parameter1>OmniSharp.Extensions.DebugAdapter.Proposals, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f + - - - - MSBuild:GenerateCodeFromAttributes - - - MSBuild:GenerateCodeFromAttributes - - - MSBuild:GenerateCodeFromAttributes - - - MSBuild:GenerateCodeFromAttributes - - - MSBuild:GenerateCodeFromAttributes - - - MSBuild:GenerateCodeFromAttributes - - - MSBuild:GenerateCodeFromAttributes - - - MSBuild:GenerateCodeFromAttributes - - - MSBuild:GenerateCodeFromAttributes - - - MSBuild:GenerateCodeFromAttributes - - - MSBuild:GenerateCodeFromAttributes - - - MSBuild:GenerateCodeFromAttributes - - - diff --git a/src/Dap.Server/Dap.Server.csproj b/src/Dap.Server/Dap.Server.csproj index d20a1f306..e6847acd4 100644 --- a/src/Dap.Server/Dap.Server.csproj +++ b/src/Dap.Server/Dap.Server.csproj @@ -9,7 +9,12 @@ - + + + + + <_Parameter1>OmniSharp.Extensions.DebugAdapter.Testing, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f + diff --git a/src/Dap.Shared/Dap.Shared.csproj b/src/Dap.Shared/Dap.Shared.csproj index 7de1819c1..7b833c799 100644 --- a/src/Dap.Shared/Dap.Shared.csproj +++ b/src/Dap.Shared/Dap.Shared.csproj @@ -8,8 +8,19 @@ - - + + + + + + <_Parameter1>OmniSharp.Extensions.DebugAdapter.Testing, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f + + + <_Parameter1>OmniSharp.Extensions.DebugAdapter.Server, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f + + + <_Parameter1>OmniSharp.Extensions.DebugAdapter.Client, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f + diff --git a/src/Dap.Testing/Dap.Testing.csproj b/src/Dap.Testing/Dap.Testing.csproj index 56c3825df..fd64128ec 100644 --- a/src/Dap.Testing/Dap.Testing.csproj +++ b/src/Dap.Testing/Dap.Testing.csproj @@ -9,9 +9,9 @@ - - - - + + + + diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 65d223b0b..48b9b1adf 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -1,5 +1,5 @@ - + $(GitVersion_NuGetVersion) 0.0.9.9 @@ -9,6 +9,7 @@ true enable + <_Parameter1>Client.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f @@ -25,30 +26,6 @@ <_Parameter1>TestingUtils, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f - - <_Parameter1>OmniSharp.Extensions.LanguageProtocol.Testing, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f - - - <_Parameter1>OmniSharp.Extensions.DebugAdapter.Testing, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f - - - <_Parameter1>OmniSharp.Extensions.JsonRpc.Testing, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f - - - <_Parameter1>OmniSharp.Extensions.LanguageServer, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f - - - <_Parameter1>OmniSharp.Extensions.LanguageServer.Shared, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f - - - <_Parameter1>OmniSharp.Extensions.LanguageClient, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f - - - <_Parameter1>OmniSharp.Extensions.DebugAdapter.Server, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f - - - <_Parameter1>OmniSharp.Extensions.DebugAdapter.Client, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f - <_Parameter1>DynamicProxyGenAssembly2, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7 diff --git a/src/JsonRpc.Generators/JsonRpc.Generators.csproj b/src/JsonRpc.Generators/JsonRpc.Generators.csproj index e9cdf72c9..8f0a15cc0 100644 --- a/src/JsonRpc.Generators/JsonRpc.Generators.csproj +++ b/src/JsonRpc.Generators/JsonRpc.Generators.csproj @@ -6,20 +6,20 @@ OmniSharp.Extensions.JsonRpc.Generators true - - + + - - + + <_Parameter1>Generation.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f - + diff --git a/src/JsonRpc/JsonRpc.csproj b/src/JsonRpc/JsonRpc.csproj index cd4aad87e..81d2c2328 100644 --- a/src/JsonRpc/JsonRpc.csproj +++ b/src/JsonRpc/JsonRpc.csproj @@ -7,32 +7,57 @@ Primitives for working with JsonRpc. This library is used as the base for communication with language servers - - - - - - - - - - + + + + + + + + + + + - <_Parameter1>OmniSharp.Extensions.DebugAdapter, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f + <_Parameter1>OmniSharp.Extensions.LanguageProtocol.Testing, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f - <_Parameter1>OmniSharp.Extensions.LanguageProtocol, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f + <_Parameter1>OmniSharp.Extensions.DebugAdapter.Testing, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f <_Parameter1>OmniSharp.Extensions.JsonRpc.Testing, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f + + <_Parameter1>OmniSharp.Extensions.LanguageServer, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f + + + <_Parameter1>OmniSharp.Extensions.LanguageProtocol, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f + + + <_Parameter1>OmniSharp.Extensions.LanguageProtocol.Proposals, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f + <_Parameter1>OmniSharp.Extensions.LanguageServer.Shared, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f + + <_Parameter1>OmniSharp.Extensions.LanguageClient, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f + + + <_Parameter1>OmniSharp.Extensions.DebugAdapter.Server, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f + + + <_Parameter1>OmniSharp.Extensions.DebugAdapter.Client, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f + <_Parameter1>OmniSharp.Extensions.DebugAdapter.Shared, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f + + <_Parameter1>OmniSharp.Extensions.DebugAdapter, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f + + + <_Parameter1>OmniSharp.Extensions.DebugAdapter.Proposals, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f + diff --git a/src/JsonRpc/JsonRpcServerOptionsBase.cs b/src/JsonRpc/JsonRpcServerOptionsBase.cs index 11ab6539e..6a513ba3e 100644 --- a/src/JsonRpc/JsonRpcServerOptionsBase.cs +++ b/src/JsonRpc/JsonRpcServerOptionsBase.cs @@ -49,13 +49,13 @@ public ILoggerFactory LoggerFactory public T WithAssemblies(IEnumerable? assemblies) { - Assemblies = Assemblies.Concat(assemblies ?? Enumerable.Empty()).ToArray(); + Assemblies = Assemblies.Union(assemblies ?? Enumerable.Empty()).ToArray(); return (T) (object) this; } public T WithAssemblies(params Assembly[] assemblies) { - Assemblies = Assemblies.Concat(assemblies).ToArray(); + Assemblies = Assemblies.Union(assemblies).ToArray(); return (T) (object) this; } diff --git a/src/JsonRpc/Serialization/SerializerBase.cs b/src/JsonRpc/Serialization/SerializerBase.cs index 93adcf7df..868be57c6 100644 --- a/src/JsonRpc/Serialization/SerializerBase.cs +++ b/src/JsonRpc/Serialization/SerializerBase.cs @@ -24,6 +24,14 @@ protected virtual JsonSerializerSettings CreateSerializerSettings() return _settings = settings; } + protected internal static void RemoveConverter(ICollection converters) + { + foreach (var item in converters.Where(z => z.CanConvert(typeof(T))).ToArray()) + { + converters.Remove(item); + } + } + protected internal static void ReplaceConverter(ICollection converters, T item) where T : JsonConverter { diff --git a/src/Protocol.Proposals/Client/Capabilities/ProposedClientCapabilities.cs b/src/Protocol.Proposals/Client/Capabilities/ProposedClientCapabilities.cs new file mode 100644 index 000000000..45d4ac5e9 --- /dev/null +++ b/src/Protocol.Proposals/Client/Capabilities/ProposedClientCapabilities.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; +using Newtonsoft.Json.Linq; +using OmniSharp.Extensions.LanguageServer.Protocol.Serialization; + +namespace OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities +{ + [Obsolete(Constants.Proposal)] + public class ProposedClientCapabilities : ClientCapabilities { } +} diff --git a/src/Protocol.Proposals/Client/Capabilities/ProposedGeneralClientCapabilities.cs b/src/Protocol.Proposals/Client/Capabilities/ProposedGeneralClientCapabilities.cs new file mode 100644 index 000000000..01e6bcefd --- /dev/null +++ b/src/Protocol.Proposals/Client/Capabilities/ProposedGeneralClientCapabilities.cs @@ -0,0 +1,12 @@ +using System; + +namespace OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities +{ + /// + /// General client capabilities. + /// + [Obsolete(Constants.Proposal)] + public class ProposedGeneralClientCapabilities : GeneralClientCapabilities + { + } +} diff --git a/src/Protocol.Proposals/Client/Capabilities/ProposedTextDocumentClientCapabilities.cs b/src/Protocol.Proposals/Client/Capabilities/ProposedTextDocumentClientCapabilities.cs new file mode 100644 index 000000000..ce4c3035e --- /dev/null +++ b/src/Protocol.Proposals/Client/Capabilities/ProposedTextDocumentClientCapabilities.cs @@ -0,0 +1,7 @@ +using System; + +namespace OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities +{ + [Obsolete(Constants.Proposal)] + public class ProposedTextDocumentClientCapabilities : TextDocumentClientCapabilities { } +} diff --git a/src/Protocol.Proposals/Client/Capabilities/ProposedWindowClientCapabilities.cs b/src/Protocol.Proposals/Client/Capabilities/ProposedWindowClientCapabilities.cs new file mode 100644 index 000000000..efc6a0e02 --- /dev/null +++ b/src/Protocol.Proposals/Client/Capabilities/ProposedWindowClientCapabilities.cs @@ -0,0 +1,12 @@ +using System; + +namespace OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities +{ + /// + /// Window specific client capabilities. + /// + [Obsolete(Constants.Proposal)] + public class ProposedWindowClientCapabilities: WindowClientCapabilities + { + } +} diff --git a/src/Protocol.Proposals/Client/Capabilities/ProposedWorkspaceClientCapabilities.cs b/src/Protocol.Proposals/Client/Capabilities/ProposedWorkspaceClientCapabilities.cs new file mode 100644 index 000000000..d92cc3144 --- /dev/null +++ b/src/Protocol.Proposals/Client/Capabilities/ProposedWorkspaceClientCapabilities.cs @@ -0,0 +1,7 @@ +using System; + +namespace OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities +{ + [Obsolete(Constants.Proposal)] + public class ProposedWorkspaceClientCapabilities : WorkspaceClientCapabilities { } +} diff --git a/src/Protocol.Proposals/ProposedExtensions.cs b/src/Protocol.Proposals/ProposedExtensions.cs new file mode 100644 index 000000000..e7f86a3c8 --- /dev/null +++ b/src/Protocol.Proposals/ProposedExtensions.cs @@ -0,0 +1,30 @@ +using OmniSharp.Extensions.JsonRpc; +using OmniSharp.Extensions.LanguageServer.Client; +using OmniSharp.Extensions.LanguageServer.Protocol.Serialization; +using OmniSharp.Extensions.LanguageServer.Server; + +namespace OmniSharp.Extensions.LanguageServer.Protocol +{ + public static class ProposedExtensions + { + /// + /// Enables proposals within serialization + /// + /// + public static LanguageClientOptions EnableProposals(this LanguageClientOptions options) + { + options.Serializer = new ProposedLspSerializer(); + return options; + } + + /// + /// Enables proposals within serialization + /// + /// + public static LanguageServerOptions EnableProposals(this LanguageServerOptions options) + { + options.Serializer = new ProposedLspSerializer(); + return options; + } + } +} diff --git a/src/Protocol.Proposals/Protocol.Proposals.csproj b/src/Protocol.Proposals/Protocol.Proposals.csproj new file mode 100644 index 000000000..b330ead61 --- /dev/null +++ b/src/Protocol.Proposals/Protocol.Proposals.csproj @@ -0,0 +1,19 @@ + + + netstandard2.1;netstandard2.0 + AnyCPU + OmniSharp.Extensions.LanguageProtocol.Proposals + OmniSharp.Extensions.LanguageServer.Protocol + Proposed Language Server Protocol models, classes, interfaces and helper methods, that may or may not make it into the final spec + + + + + + + + + + + + diff --git a/src/Protocol.Proposals/Readme.md b/src/Protocol.Proposals/Readme.md new file mode 100644 index 000000000..10bbb4522 --- /dev/null +++ b/src/Protocol.Proposals/Readme.md @@ -0,0 +1,4 @@ +# LSP Proposals +Any types that are in this assembly are subject to addition or removal at any time as the [spec](https://microsoft.github.io/language-server-protocol/specifications/specification-3-17/#version_3_17_0) itself evolves. + +We strive to have the most up to date feature set for C# against the LSP spec, so sometimes that means things will break in this assembly. The goal is for this assembly to evolve and the protocol assembles to stay largerly untouched from breaking changes, as much as is possible. diff --git a/src/Protocol.Proposals/Serialization/ProposedCapabilitiesConverter.cs b/src/Protocol.Proposals/Serialization/ProposedCapabilitiesConverter.cs new file mode 100644 index 000000000..0ea286577 --- /dev/null +++ b/src/Protocol.Proposals/Serialization/ProposedCapabilitiesConverter.cs @@ -0,0 +1,20 @@ +using System; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace OmniSharp.Extensions.LanguageServer.Protocol.Serialization +{ + internal class ProposedCapabilitiesConverter : JsonConverter + where TTo : TFrom + where TFrom : notnull + { + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + return serializer.Deserialize(reader); + } + + public override bool CanConvert(Type objectType) => objectType == typeof(TFrom); + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) => throw new NotImplementedException(); + public override bool CanWrite => false; + } +} diff --git a/src/Protocol.Proposals/Serialization/ProposedLspSerializer.cs b/src/Protocol.Proposals/Serialization/ProposedLspSerializer.cs new file mode 100644 index 000000000..aa7c6c8f1 --- /dev/null +++ b/src/Protocol.Proposals/Serialization/ProposedLspSerializer.cs @@ -0,0 +1,30 @@ +using System.Collections.Generic; +using Newtonsoft.Json; +using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; +using OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities; + +namespace OmniSharp.Extensions.LanguageServer.Protocol.Serialization +{ + internal class ProposedLspSerializer : LspSerializer + { + public new static LspSerializer Instance { get; } = new ProposedLspSerializer(); + + protected override void AddOrReplaceConverters(ICollection converters) + { + AddProposedCapabilitiesConverter(converters); + AddProposedCapabilitiesConverter(converters); + AddProposedCapabilitiesConverter(converters); + AddProposedCapabilitiesConverter(converters); + AddProposedCapabilitiesConverter(converters); + AddProposedCapabilitiesConverter(converters); + AddProposedCapabilitiesConverter(converters); + base.AddOrReplaceConverters(converters); + } + + private void AddProposedCapabilitiesConverter(ICollection converters) where TTo : TFrom where TFrom : notnull + { + RemoveConverter(converters); + ReplaceConverter(converters, new ProposedCapabilitiesConverter()); + } + } +} diff --git a/src/Protocol.Proposals/Server/Capabilities/ProposedServerCapabilities.cs b/src/Protocol.Proposals/Server/Capabilities/ProposedServerCapabilities.cs new file mode 100644 index 000000000..c7644c56a --- /dev/null +++ b/src/Protocol.Proposals/Server/Capabilities/ProposedServerCapabilities.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using Newtonsoft.Json.Linq; +using OmniSharp.Extensions.LanguageServer.Protocol.Models; +using OmniSharp.Extensions.LanguageServer.Protocol.Serialization; + +namespace OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities +{ + /// + /// + /// + /// + /// Is not a record on purpose... + /// get; set; for the moment, to allow for replacement of values. + /// + [Obsolete(Constants.Proposal)] + public class ProposedServerCapabilities : ServerCapabilities + { + } +} diff --git a/src/Protocol.Proposals/Server/Capabilities/ProposedWorkspaceServerCapabilities.cs b/src/Protocol.Proposals/Server/Capabilities/ProposedWorkspaceServerCapabilities.cs new file mode 100644 index 000000000..b3d70aef4 --- /dev/null +++ b/src/Protocol.Proposals/Server/Capabilities/ProposedWorkspaceServerCapabilities.cs @@ -0,0 +1,11 @@ +using System; +using OmniSharp.Extensions.LanguageServer.Protocol.Models; +using OmniSharp.Extensions.LanguageServer.Protocol.Serialization; + +namespace OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities +{ + [Obsolete(Constants.Proposal)] + public class ProposedWorkspaceServerCapabilities : WorkspaceServerCapabilities + { + } +} diff --git a/src/Protocol/CapabilitiesBase.cs b/src/Protocol/CapabilitiesBase.cs index 5034e63f7..2d43dda82 100644 --- a/src/Protocol/CapabilitiesBase.cs +++ b/src/Protocol/CapabilitiesBase.cs @@ -4,7 +4,7 @@ namespace OmniSharp.Extensions.LanguageServer.Protocol { - public abstract class CapabilitiesBase + public abstract class CapabilitiesBase : ICapabilitiesBase { [JsonExtensionData] public IDictionary ExtensionData { get; set; } = new Dictionary(); } diff --git a/src/Protocol/CapabilityKeyAttribute.cs b/src/Protocol/CapabilityKeyAttribute.cs index f663ba392..db02a4d67 100644 --- a/src/Protocol/CapabilityKeyAttribute.cs +++ b/src/Protocol/CapabilityKeyAttribute.cs @@ -1,8 +1,6 @@ using System; using System.Collections.Generic; -using System.Diagnostics; using System.Linq; -using System.Runtime.CompilerServices; namespace OmniSharp.Extensions.LanguageServer.Protocol { diff --git a/src/Protocol/Client/Capabilities/ClientCapabilities.cs b/src/Protocol/Client/Capabilities/ClientCapabilities.cs index de0ac5ecc..07be4f2f9 100644 --- a/src/Protocol/Client/Capabilities/ClientCapabilities.cs +++ b/src/Protocol/Client/Capabilities/ClientCapabilities.cs @@ -4,7 +4,7 @@ namespace OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities { - public class ClientCapabilities : CapabilitiesBase + public class ClientCapabilities : CapabilitiesBase, IClientCapabilities { /// /// Workspace specific client capabilities. @@ -35,25 +35,4 @@ public class ClientCapabilities : CapabilitiesBase /// public IDictionary Experimental { get; set; } = new Dictionary(); } - - /// - /// General client capabilities. - /// - public class GeneralClientCapabilities - { - /// - /// Client capabilities specific to regular expressions. - /// - /// @since 3.16.0 - proposed state - /// - [Optional] - public RegularExpressionsClientCapabilities? RegularExpressions { get; set; } - - /// - /// Client capabilities specific to the client's markdown parser. - /// - /// @since 3.16.0 - proposed state - /// - [Optional] public MarkdownClientCapabilities? Markdown { get; set; } - } } diff --git a/src/Protocol/Client/Capabilities/GeneralClientCapabilities.cs b/src/Protocol/Client/Capabilities/GeneralClientCapabilities.cs new file mode 100644 index 000000000..f7f2ca959 --- /dev/null +++ b/src/Protocol/Client/Capabilities/GeneralClientCapabilities.cs @@ -0,0 +1,25 @@ +using OmniSharp.Extensions.LanguageServer.Protocol.Serialization; + +namespace OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities +{ + /// + /// General client capabilities. + /// + public class GeneralClientCapabilities : CapabilitiesBase, IGeneralClientCapabilities + { + /// + /// Client capabilities specific to regular expressions. + /// + /// @since 3.16.0 + /// + [Optional] + public RegularExpressionsClientCapabilities? RegularExpressions { get; set; } + + /// + /// Client capabilities specific to the client's markdown parser. + /// + /// @since 3.16.0 + /// + [Optional] public MarkdownClientCapabilities? Markdown { get; set; } + } +} \ No newline at end of file diff --git a/src/Protocol/Client/Capabilities/IClientCapabilities.cs b/src/Protocol/Client/Capabilities/IClientCapabilities.cs new file mode 100644 index 000000000..ab55ba8d6 --- /dev/null +++ b/src/Protocol/Client/Capabilities/IClientCapabilities.cs @@ -0,0 +1,15 @@ +using System.Collections.Generic; +using Newtonsoft.Json.Linq; + +namespace OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities +{ + public interface IClientCapabilities + { + /// + /// Experimental client capabilities. + /// + IDictionary Experimental { get; set; } + + IDictionary ExtensionData { get; set; } + } +} \ No newline at end of file diff --git a/src/Protocol/Client/Capabilities/IGeneralClientCapabilities.cs b/src/Protocol/Client/Capabilities/IGeneralClientCapabilities.cs new file mode 100644 index 000000000..06c15abfe --- /dev/null +++ b/src/Protocol/Client/Capabilities/IGeneralClientCapabilities.cs @@ -0,0 +1,19 @@ +namespace OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities +{ + public interface IGeneralClientCapabilities + { + /// + /// Client capabilities specific to regular expressions. + /// + /// @since 3.16.0 + /// + RegularExpressionsClientCapabilities? RegularExpressions { get; set; } + + /// + /// Client capabilities specific to the client's markdown parser. + /// + /// @since 3.16.0 + /// + MarkdownClientCapabilities? Markdown { get; set; } + } +} \ No newline at end of file diff --git a/src/Protocol/Client/Capabilities/ITextDocumentClientCapabilities.cs b/src/Protocol/Client/Capabilities/ITextDocumentClientCapabilities.cs new file mode 100644 index 000000000..943dc8e52 --- /dev/null +++ b/src/Protocol/Client/Capabilities/ITextDocumentClientCapabilities.cs @@ -0,0 +1,150 @@ +namespace OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities +{ + public interface ITextDocumentClientCapabilities : ICapabilitiesBase + { + Supports Synchronization { get; set; } + + /// + /// Capabilities specific to the `textDocument/completion` + /// + Supports Completion { get; set; } + + /// + /// Capabilities specific to the `textDocument/hover` + /// + Supports Hover { get; set; } + + /// + /// Capabilities specific to the `textDocument/signatureHelp` + /// + Supports SignatureHelp { get; set; } + + /// + /// Capabilities specific to the `textDocument/references` + /// + Supports References { get; set; } + + /// + /// Capabilities specific to the `textDocument/documentHighlight` + /// + Supports DocumentHighlight { get; set; } + + /// + /// Capabilities specific to the `textDocument/documentSymbol` + /// + Supports DocumentSymbol { get; set; } + + /// + /// Capabilities specific to the `textDocument/formatting` + /// + Supports Formatting { get; set; } + + /// + /// Capabilities specific to the `textDocument/rangeFormatting` + /// + Supports RangeFormatting { get; set; } + + /// + /// Capabilities specific to the `textDocument/onTypeFormatting` + /// + Supports OnTypeFormatting { get; set; } + + /// + /// Capabilities specific to the `textDocument/definition` + /// + Supports Definition { get; set; } + + /// + /// Capabilities specific to the `textDocument/declaration` + /// + Supports Declaration { get; set; } + + /// + /// Capabilities specific to the `textDocument/codeAction` + /// + Supports CodeAction { get; set; } + + /// + /// Capabilities specific to the `textDocument/codeLens` + /// + Supports CodeLens { get; set; } + + /// + /// Capabilities specific to the `textDocument/documentLink` + /// + Supports DocumentLink { get; set; } + + /// + /// Capabilities specific to the `textDocument/rename` + /// + Supports Rename { get; set; } + + /// + /// Capabilities specific to the `textDocument/typeDefinition` + /// + /// Since 3.6.0 + /// + Supports TypeDefinition { get; set; } + + /// + /// Capabilities specific to the `textDocument/implementation` + /// + /// Since 3.6.0 + /// + Supports Implementation { get; set; } + + /// + /// Capabilities specific to the `textDocument/documentColor` and the `textDocument/colorPresentation` request. + /// + /// Since 3.6.0 + /// + Supports ColorProvider { get; set; } + + /// + /// The server provides folding provider support. + /// + /// Since 3.10.0 + /// + Supports FoldingRange { get; set; } + + /// + /// The server provides selection provider support. + /// + /// Since 3.15.0 + /// + Supports SelectionRange { get; set; } + + /// + /// Capabilities specific to the `textDocument/linkedEditingRange` request. + /// + /// Since 3.16.0 + /// + Supports LinkedEditingRange { get; set; } + + /// + /// Capabilities specific to `textDocument/publishDiagnostics`. + /// + Supports PublishDiagnostics { get; set; } + + /// + /// Capabilities specific to the `textDocument/callHierarchy`. + /// + /// @since 3.16.0 + /// + Supports CallHierarchy { get; set; } + + /// + /// Capabilities specific to the `textDocument/semanticTokens` + /// + /// @since 3.16.0 + /// + Supports SemanticTokens { get; set; } + + /// + /// Capabilities specific to the `textDocument/moniker` + /// + /// @since 3.16.0 + /// + Supports Moniker { get; set; } + } +} \ No newline at end of file diff --git a/src/Protocol/Client/Capabilities/IWindowClientCapabilities.cs b/src/Protocol/Client/Capabilities/IWindowClientCapabilities.cs new file mode 100644 index 000000000..764287c43 --- /dev/null +++ b/src/Protocol/Client/Capabilities/IWindowClientCapabilities.cs @@ -0,0 +1,24 @@ +namespace OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities +{ + public interface IWindowClientCapabilities : ICapabilitiesBase + { + /// + /// Whether client supports handling progress notifications. + /// + Supports WorkDoneProgress { get; set; } + + /// + /// Capabilities specific to the showMessage request + /// + /// @since 3.16.0 + /// + Supports ShowMessage { get; set; } + + /// + /// Client capabilities for the show document request. + /// + /// @since 3.16.0 + /// + Supports ShowDocument { get; set; } + } +} \ No newline at end of file diff --git a/src/Protocol/Client/Capabilities/MarkdownClientCapabilities.cs b/src/Protocol/Client/Capabilities/MarkdownClientCapabilities.cs index 409e78746..608e196e1 100644 --- a/src/Protocol/Client/Capabilities/MarkdownClientCapabilities.cs +++ b/src/Protocol/Client/Capabilities/MarkdownClientCapabilities.cs @@ -5,9 +5,9 @@ namespace OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities /// /// Client capabilities specific to the used markdown parser. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// - public record MarkdownClientCapabilities + public class MarkdownClientCapabilities { /// /// The name of the parser. diff --git a/src/Protocol/Client/Capabilities/RegularExpressionsClientCapabilities.cs b/src/Protocol/Client/Capabilities/RegularExpressionsClientCapabilities.cs index 19a4af8f0..951a4e76d 100644 --- a/src/Protocol/Client/Capabilities/RegularExpressionsClientCapabilities.cs +++ b/src/Protocol/Client/Capabilities/RegularExpressionsClientCapabilities.cs @@ -5,7 +5,7 @@ namespace OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities /// /// Client capabilities specific to regular expressions. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// public class RegularExpressionsClientCapabilities { diff --git a/src/Protocol/Client/Capabilities/TagSupportCapabilityOptions.cs b/src/Protocol/Client/Capabilities/TagSupportCapabilityOptions.cs index b335983f3..f0bbaeb7d 100644 --- a/src/Protocol/Client/Capabilities/TagSupportCapabilityOptions.cs +++ b/src/Protocol/Client/Capabilities/TagSupportCapabilityOptions.cs @@ -1,5 +1,4 @@ -using System; -using OmniSharp.Extensions.LanguageServer.Protocol.Models; +using OmniSharp.Extensions.LanguageServer.Protocol.Models; namespace OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities { @@ -10,13 +9,11 @@ namespace OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities /// /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] public class TagSupportCapabilityOptions { /// /// The tags supported by the client. /// - [Obsolete(Constants.Proposal)] public Container ValueSet { get; set; } = null!; } } diff --git a/src/Protocol/Client/Capabilities/TextDocumentClientCapabilities.cs b/src/Protocol/Client/Capabilities/TextDocumentClientCapabilities.cs index bf468b98b..303362a50 100644 --- a/src/Protocol/Client/Capabilities/TextDocumentClientCapabilities.cs +++ b/src/Protocol/Client/Capabilities/TextDocumentClientCapabilities.cs @@ -1,8 +1,9 @@ -using System; +using System.Collections.Generic; +using Newtonsoft.Json.Linq; namespace OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities { - public class TextDocumentClientCapabilities : CapabilitiesBase + public class TextDocumentClientCapabilities : CapabilitiesBase, ITextDocumentClientCapabilities { public Supports Synchronization { get; set; } @@ -121,7 +122,6 @@ public class TextDocumentClientCapabilities : CapabilitiesBase /// /// Since 3.16.0 /// - [Obsolete(Constants.Proposal)] public Supports LinkedEditingRange { get; set; } /// @@ -134,7 +134,6 @@ public class TextDocumentClientCapabilities : CapabilitiesBase /// /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] public Supports CallHierarchy { get; set; } /// @@ -142,7 +141,6 @@ public class TextDocumentClientCapabilities : CapabilitiesBase /// /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] public Supports SemanticTokens { get; set; } /// @@ -150,7 +148,6 @@ public class TextDocumentClientCapabilities : CapabilitiesBase /// /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] public Supports Moniker { get; set; } } } diff --git a/src/Protocol/Client/Capabilities/WindowClientCapabilities.cs b/src/Protocol/Client/Capabilities/WindowClientCapabilities.cs index 9515b6eef..c088e2e18 100644 --- a/src/Protocol/Client/Capabilities/WindowClientCapabilities.cs +++ b/src/Protocol/Client/Capabilities/WindowClientCapabilities.cs @@ -1,11 +1,12 @@ -using System; +using System.Collections.Generic; +using Newtonsoft.Json.Linq; namespace OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities { /// /// Window specific client capabilities. /// - public class WindowClientCapabilities : CapabilitiesBase + public class WindowClientCapabilities : CapabilitiesBase, IWindowClientCapabilities { /// /// Whether client supports handling progress notifications. @@ -15,17 +16,15 @@ public class WindowClientCapabilities : CapabilitiesBase /// /// Capabilities specific to the showMessage request /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] public Supports ShowMessage { get; set; } /// /// Client capabilities for the show document request. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] public Supports ShowDocument { get; set; } } } diff --git a/src/Protocol/Client/Capabilities/WorkspaceClientCapabilities.cs b/src/Protocol/Client/Capabilities/WorkspaceClientCapabilities.cs index 0510c1bc8..94dd06b5c 100644 --- a/src/Protocol/Client/Capabilities/WorkspaceClientCapabilities.cs +++ b/src/Protocol/Client/Capabilities/WorkspaceClientCapabilities.cs @@ -1,6 +1,3 @@ -using System; -using OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities; - namespace OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities { public class WorkspaceClientCapabilities : CapabilitiesBase @@ -37,27 +34,24 @@ public class WorkspaceClientCapabilities : CapabilitiesBase /// Capabilities specific to the semantic token requests scoped to the /// workspace. /// - /// @since 3.16.0 - proposed state. + /// @since 3.16.0. /// - [Obsolete(Constants.Proposal)] public Supports SemanticTokens { get; set; } /// /// Capabilities specific to the code lens requests scoped to the /// workspace. /// - /// @since 3.16.0 - proposed state. + /// @since 3.16.0. /// - [Obsolete(Constants.Proposal)] public Supports CodeLens { get; set; } /// /// Capabilities specific to the code lens requests scoped to the /// workspace. /// - /// @since 3.16.0 - proposed state. + /// @since 3.16.0. /// - [Obsolete(Constants.Proposal)] public Supports FileOperations { get; set; } /// diff --git a/src/Protocol/Client/Capabilities/WorkspaceEditCapability.cs b/src/Protocol/Client/Capabilities/WorkspaceEditCapability.cs index 72372517c..a6e4ccc85 100644 --- a/src/Protocol/Client/Capabilities/WorkspaceEditCapability.cs +++ b/src/Protocol/Client/Capabilities/WorkspaceEditCapability.cs @@ -33,7 +33,7 @@ public class WorkspaceEditCapability : ICapability /// in a workspace edit containg to the client specific new line /// character. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// [Optional] public bool NormalizesLineEndings { get; set; } @@ -42,26 +42,9 @@ public class WorkspaceEditCapability : ICapability /// Whether the client in general supports change annotations on text edits, /// create file, rename file and delete file changes. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// [Optional] public WorkspaceEditSupportCapabilitiesChangeAnnotationSupport? ChangeAnnotationSupport { get; set; } } - - /// - /// Whether the client in general supports change annotations on text edits, - /// create file, rename file and delete file changes. - /// - /// @since 3.16.0 - proposed state - /// - public class WorkspaceEditSupportCapabilitiesChangeAnnotationSupport - { - /// - /// Whether the client groups edits with equal labels into tree nodes, - /// for instance all edits labelled with "Changes in Strings" would - /// be a tree node. - /// - [Optional] - public bool GroupsOnLabel { get; set; } - } } diff --git a/src/Protocol/Client/Capabilities/WorkspaceEditSupportCapabilitiesChangeAnnotationSupport.cs b/src/Protocol/Client/Capabilities/WorkspaceEditSupportCapabilitiesChangeAnnotationSupport.cs new file mode 100644 index 000000000..99ec71c47 --- /dev/null +++ b/src/Protocol/Client/Capabilities/WorkspaceEditSupportCapabilitiesChangeAnnotationSupport.cs @@ -0,0 +1,21 @@ +using OmniSharp.Extensions.LanguageServer.Protocol.Serialization; + +namespace OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities +{ + /// + /// Whether the client in general supports change annotations on text edits, + /// create file, rename file and delete file changes. + /// + /// @since 3.16.0 + /// + public class WorkspaceEditSupportCapabilitiesChangeAnnotationSupport + { + /// + /// Whether the client groups edits with equal labels into tree nodes, + /// for instance all edits labelled with "Changes in Strings" would + /// be a tree node. + /// + [Optional] + public bool GroupsOnLabel { get; set; } + } +} \ No newline at end of file diff --git a/src/Client/LanguageClientOptions.cs b/src/Protocol/Client/LanguageClientOptions.cs similarity index 97% rename from src/Client/LanguageClientOptions.cs rename to src/Protocol/Client/LanguageClientOptions.cs index 69483f8f2..862b2b498 100644 --- a/src/Client/LanguageClientOptions.cs +++ b/src/Protocol/Client/LanguageClientOptions.cs @@ -8,19 +8,15 @@ using OmniSharp.Extensions.LanguageServer.Protocol.Client; using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; using OmniSharp.Extensions.LanguageServer.Protocol.Models; -using OmniSharp.Extensions.LanguageServer.Shared; +// ReSharper disable once CheckNamespace namespace OmniSharp.Extensions.LanguageServer.Client { public class LanguageClientOptions : LanguageProtocolRpcOptionsBase, ILanguageClientRegistry { - public LanguageClientOptions() - { - WithAssemblies(typeof(LanguageClientOptions).Assembly, typeof(LspRequestRouter).Assembly); - } - public ClientCapabilities ClientCapabilities { get; set; } = new ClientCapabilities { Experimental = new Dictionary(), + General = new GeneralClientCapabilities(), Window = new WindowClientCapabilities(), Workspace = new WorkspaceClientCapabilities(), TextDocument = new TextDocumentClientCapabilities() diff --git a/src/Protocol/Features/Document/Proposals/CallHierarchyFeature.cs b/src/Protocol/Features/Document/CallHierarchyFeature.cs similarity index 98% rename from src/Protocol/Features/Document/Proposals/CallHierarchyFeature.cs rename to src/Protocol/Features/Document/CallHierarchyFeature.cs index 79e9ee120..b0d9b5aef 100644 --- a/src/Protocol/Features/Document/Proposals/CallHierarchyFeature.cs +++ b/src/Protocol/Features/Document/CallHierarchyFeature.cs @@ -11,10 +11,8 @@ using OmniSharp.Extensions.JsonRpc.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Client; using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; -using OmniSharp.Extensions.LanguageServer.Protocol.Document.Proposals; using OmniSharp.Extensions.LanguageServer.Protocol.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Models; -using OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals; using OmniSharp.Extensions.LanguageServer.Protocol.Progress; using OmniSharp.Extensions.LanguageServer.Protocol.Serialization; using OmniSharp.Extensions.LanguageServer.Protocol.Server; @@ -23,18 +21,17 @@ // ReSharper disable once CheckNamespace namespace OmniSharp.Extensions.LanguageServer.Protocol { - namespace Models.Proposals + namespace Models { /// /// The parameter of a `textDocument/prepareCallHierarchy` request. /// /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] [Parallel] [Method(TextDocumentNames.PrepareCallHierarchy, Direction.ClientToServer)] [ - GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Document.Proposals"), + GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Document"), GenerateHandlerMethods, GenerateRequestMethods(typeof(ITextDocumentLanguageClient), typeof(ILanguageClient)) ] @@ -50,7 +47,6 @@ public partial record CallHierarchyPrepareParams : TextDocumentPositionParams, I /// /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] [DebuggerDisplay("{" + nameof(DebuggerDisplay) + ",nq}")] [GenerateTypedData] public partial record CallHierarchyItem : ICanBeResolved @@ -109,8 +105,6 @@ public partial record CallHierarchyItem : ICanBeResolved /// public override string ToString() => DebuggerDisplay; } - - [Obsolete(Constants.Proposal)] public abstract record CallHierarchyBaseCallParams : ICanBeResolved { public CallHierarchyItem Item { get; init; } @@ -121,8 +115,6 @@ public abstract record CallHierarchyBaseCallParams : ICanBeResolved init => Item.SetRawData(value); } } - - [Obsolete(Constants.Proposal)] public abstract record CallHierarchyBaseCallParams : ICanBeResolved where T : class?, IHandlerIdentity? { @@ -141,10 +133,9 @@ public abstract record CallHierarchyBaseCallParams : ICanBeResolved /// @since 3.16.0 /// [Parallel] - [Obsolete(Constants.Proposal)] [Method(TextDocumentNames.CallHierarchyIncoming, Direction.ClientToServer)] [ - GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Document.Proposals", Name = "CallHierarchyIncoming"), + GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Document", Name = "CallHierarchyIncoming"), GenerateHandlerMethods, GenerateRequestMethods(typeof(ITextDocumentLanguageClient), typeof(ILanguageClient)) ] @@ -159,7 +150,6 @@ public partial record CallHierarchyIncomingCallsParams : CallHierarchyBaseCallPa /// /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] [Method(TextDocumentNames.CallHierarchyIncoming, Direction.ClientToServer)] public partial record CallHierarchyIncomingCallsParams : CallHierarchyBaseCallParams, IWorkDoneProgressParams, IPartialItemsRequest?, CallHierarchyIncomingCall>, IDoesNotParticipateInRegistration @@ -172,7 +162,6 @@ public partial record CallHierarchyIncomingCallsParams : CallHierarchyBaseCa /// /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] public partial record CallHierarchyIncomingCall { /// @@ -192,11 +181,10 @@ public partial record CallHierarchyIncomingCall /// /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] [Parallel] [Method(TextDocumentNames.CallHierarchyOutgoing, Direction.ClientToServer)] [ - GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Document.Proposals", Name = "CallHierarchyOutgoing"), + GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Document", Name = "CallHierarchyOutgoing"), GenerateHandlerMethods, GenerateRequestMethods(typeof(ITextDocumentLanguageClient), typeof(ILanguageClient)) ] @@ -221,7 +209,6 @@ public static CallHierarchyOutgoingCallsParams Create(CallHierarchyOutgoin /// /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] [Method(TextDocumentNames.CallHierarchyOutgoing, Direction.ClientToServer)] public partial record CallHierarchyOutgoingCallsParams : CallHierarchyBaseCallParams, IWorkDoneProgressParams, IPartialItemsRequest?, CallHierarchyOutgoingCall>, IDoesNotParticipateInRegistration @@ -245,7 +232,6 @@ public static CallHierarchyOutgoingCallsParams Create(CallHierarchyOutgoingCalls /// /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] public partial record CallHierarchyOutgoingCall { /// @@ -266,7 +252,6 @@ public partial record CallHierarchyOutgoingCall /// /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] [GenerateRegistrationOptions(nameof(ServerCapabilities.CallHierarchyProvider))] [RegistrationName(TextDocumentNames.PrepareCallHierarchy)] public partial class CallHierarchyRegistrationOptions : ITextDocumentRegistrationOptions, IWorkDoneProgressOptions, IStaticRegistrationOptions @@ -281,16 +266,14 @@ namespace Client.Capabilities /// /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] [CapabilityKey(nameof(ClientCapabilities.TextDocument), nameof(TextDocumentClientCapabilities.CallHierarchy))] public partial class CallHierarchyCapability : DynamicCapability { } } - namespace Document.Proposals + namespace Document { - [Obsolete(Constants.Proposal)] public abstract class CallHierarchyHandlerBase : AbstractHandlers.Base, ICallHierarchyPrepareHandler, ICallHierarchyIncomingHandler, ICallHierarchyOutgoingHandler @@ -311,8 +294,6 @@ protected CallHierarchyHandlerBase() : this(Guid.NewGuid()) public abstract Task?> Handle(CallHierarchyIncomingCallsParams request, CancellationToken cancellationToken); public abstract Task?> Handle(CallHierarchyOutgoingCallsParams request, CancellationToken cancellationToken); } - - [Obsolete(Constants.Proposal)] public abstract class PartialCallHierarchyHandlerBase : AbstractHandlers.PartialResults?, CallHierarchyItem, CallHierarchyRegistrationOptions, CallHierarchyCapability>, ICallHierarchyPrepareHandler, ICallHierarchyIncomingHandler, ICallHierarchyOutgoingHandler @@ -400,8 +381,6 @@ protected internal override CallHierarchyRegistrationOptions CreateRegistrationO ( (IRegistration) _self ).GetRegistrationOptions(capability, clientCapabilities); } } - - [Obsolete(Constants.Proposal)] public abstract class CallHierarchyHandlerBase : CallHierarchyHandlerBase where T : class?, IHandlerIdentity? { protected CallHierarchyHandlerBase(Guid id) : base(id) @@ -446,8 +425,6 @@ protected CallHierarchyHandlerBase() : this(Guid.NewGuid()) protected abstract Task?> HandleIncomingCalls(CallHierarchyIncomingCallsParams request, CancellationToken cancellationToken); protected abstract Task?> HandleOutgoingCalls(CallHierarchyOutgoingCallsParams request, CancellationToken cancellationToken); } - - [Obsolete(Constants.Proposal)] public abstract class PartialCallHierarchyHandlerBase : PartialCallHierarchyHandlerBase where T : class?, IHandlerIdentity? { protected PartialCallHierarchyHandlerBase(IProgressManager progressManager) : base(progressManager) @@ -498,8 +475,6 @@ protected abstract void Handle( CallHierarchyOutgoingCallsParams request, IObserver> results, CancellationToken cancellationToken ); } - - [Obsolete(Constants.Proposal)] public static partial class CallHierarchyExtensions { public static ILanguageServerRegistry OnCallHierarchy( diff --git a/src/Protocol/Features/Document/CodeActionFeature.cs b/src/Protocol/Features/Document/CodeActionFeature.cs index b1f190ecd..c89ea2556 100644 --- a/src/Protocol/Features/Document/CodeActionFeature.cs +++ b/src/Protocol/Features/Document/CodeActionFeature.cs @@ -410,7 +410,7 @@ public partial class CodeActionCapability : DynamicCapability /// /// Whether code action supports the `disabled` property. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// [Optional] public bool DisabledSupport { get; set; } @@ -419,7 +419,7 @@ public partial class CodeActionCapability : DynamicCapability /// Whether code action supports the `data` property which is /// preserved between a `textDocument/codeAction` and a `codeAction/resolve` request. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// [Optional] public bool DataSupport { get; set; } @@ -428,7 +428,7 @@ public partial class CodeActionCapability : DynamicCapability /// Whether the client supports resolving additional code action /// properties via a separate `codeAction/resolve` request. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// [Optional] public CodeActionCapabilityResolveSupportOptions? ResolveSupport { get; set; } @@ -440,7 +440,7 @@ public partial class CodeActionCapability : DynamicCapability /// the workspace edit in the user interface and asking /// for confirmation. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// [Optional] public bool HonorsChangeAnnotations { get; set; } @@ -470,7 +470,7 @@ public class CodeActionKindCapabilityOptions /// Whether the client supports resolving additional code action /// properties via a separate `codeAction/resolve` request. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// public class CodeActionCapabilityResolveSupportOptions { diff --git a/src/Protocol/Features/Document/CodeLensFeature.cs b/src/Protocol/Features/Document/CodeLensFeature.cs index 5a504c9e1..dee397f4d 100644 --- a/src/Protocol/Features/Document/CodeLensFeature.cs +++ b/src/Protocol/Features/Document/CodeLensFeature.cs @@ -1,4 +1,3 @@ -using System; using System.Diagnostics; using System.Linq; using MediatR; @@ -109,12 +108,11 @@ public override StaticOptions Convert(CodeLensRegistrationOptions source) } } - namespace Models.Proposals + namespace Models { - [Obsolete(Constants.Proposal)] [Parallel] [Method(WorkspaceNames.CodeLensRefresh, Direction.ServerToClient)] - [GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Workspace.Proposals"), GenerateHandlerMethods, + [GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Workspace"), GenerateHandlerMethods, GenerateRequestMethods(typeof(IWorkspaceLanguageServer), typeof(ILanguageServer))] [Capability(typeof(CodeLensWorkspaceClientCapabilities))] public partial record CodeLensRefreshParams : IRequest @@ -133,9 +131,8 @@ public partial class CodeLensCapability : DynamicCapability /// Capabilities specific to the code lens requests scoped to the /// workspace. /// - /// @since 3.16.0 - proposed state. + /// @since 3.16.0. /// - [Obsolete(Constants.Proposal)] [CapabilityKey(nameof(ClientCapabilities.Workspace), nameof(WorkspaceClientCapabilities.CodeLens))] public class CodeLensWorkspaceClientCapabilities : ICapability { diff --git a/src/Protocol/Features/Document/ColorFeature.cs b/src/Protocol/Features/Document/ColorFeature.cs index c705786a7..852868d44 100644 --- a/src/Protocol/Features/Document/ColorFeature.cs +++ b/src/Protocol/Features/Document/ColorFeature.cs @@ -4,7 +4,6 @@ using OmniSharp.Extensions.JsonRpc.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Client; using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; -using OmniSharp.Extensions.LanguageServer.Protocol.Document; using OmniSharp.Extensions.LanguageServer.Protocol.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Serialization; using OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities; diff --git a/src/Protocol/Features/Document/CompletionFeature.cs b/src/Protocol/Features/Document/CompletionFeature.cs index 537311657..0f13e8824 100644 --- a/src/Protocol/Features/Document/CompletionFeature.cs +++ b/src/Protocol/Features/Document/CompletionFeature.cs @@ -136,7 +136,7 @@ public partial record CompletionItem : ICanBeResolved, IRequest, /// How whitespace and indentation is handled during completion /// item insertion. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// [Optional] public InsertTextMode InsertTextMode { get; init; } @@ -163,7 +163,7 @@ public partial record CompletionItem : ICanBeResolved, IRequest, /// must be a prefix of the edit's replace range, that means it must be /// contained and starting at the same position. /// - /// @since 3.16.0 additional type `InsertReplaceEdit` - proposed state + /// @since 3.16.0 additional type `InsertReplaceEdit` /// [Optional] public TextEditOrInsertReplaceEdit? TextEdit { get; init; } @@ -499,7 +499,7 @@ public class CompletionItemCapabilityOptions /// Client support insert replace edit to control different behavior if a /// completion item is inserted in the text or should replace text. /// - /// @since 3.16.0 - Proposed state + /// @since 3.16.0 /// [Optional] public bool InsertReplaceSupport { get; set; } @@ -508,7 +508,7 @@ public class CompletionItemCapabilityOptions /// Client supports to resolve `additionalTextEdits` in the `completionItem/resolve` /// request. So servers can postpone computing them. /// - /// @since 3.16.0 - Proposed state + /// @since 3.16.0 /// [Optional] public bool ResolveAdditionalTextEditsSupport { get; set; } @@ -518,7 +518,7 @@ public class CompletionItemCapabilityOptions /// item. Before version 3.16.0 only the predefined properties `documentation` /// and `details` could be resolved lazily. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// [Optional] public CompletionItemCapabilityResolveSupportOptions? ResolveSupport { get; set; } @@ -528,7 +528,7 @@ public class CompletionItemCapabilityOptions /// a completion item to override the whitespace handling mode /// as defined by the client (see `insertTextMode`). /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// [Optional] public CompletionItemInsertTextModeSupportCapabilityOptions? InsertTextModeSupport { get; set; } @@ -544,7 +544,7 @@ public class CompletionItemInsertTextModeSupportCapabilityOptions /// item. Before version 3.16.0 only the predefined properties `documentation` /// and `details` could be resolved lazily. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// public class CompletionItemCapabilityResolveSupportOptions { diff --git a/src/Protocol/Features/Document/DeclarationFeature.cs b/src/Protocol/Features/Document/DeclarationFeature.cs index 6ea0e99f4..179d73a6e 100644 --- a/src/Protocol/Features/Document/DeclarationFeature.cs +++ b/src/Protocol/Features/Document/DeclarationFeature.cs @@ -2,7 +2,6 @@ using OmniSharp.Extensions.JsonRpc.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Client; using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; -using OmniSharp.Extensions.LanguageServer.Protocol.Document; using OmniSharp.Extensions.LanguageServer.Protocol.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities; diff --git a/src/Protocol/Features/Document/DefinitionFeature.cs b/src/Protocol/Features/Document/DefinitionFeature.cs index a80a48938..53bf9f6b2 100644 --- a/src/Protocol/Features/Document/DefinitionFeature.cs +++ b/src/Protocol/Features/Document/DefinitionFeature.cs @@ -2,7 +2,6 @@ using OmniSharp.Extensions.JsonRpc.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Client; using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; -using OmniSharp.Extensions.LanguageServer.Protocol.Document; using OmniSharp.Extensions.LanguageServer.Protocol.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities; diff --git a/src/Protocol/Features/Document/DocumentFormattingFeature.cs b/src/Protocol/Features/Document/DocumentFormattingFeature.cs index 256f79438..672150ca8 100644 --- a/src/Protocol/Features/Document/DocumentFormattingFeature.cs +++ b/src/Protocol/Features/Document/DocumentFormattingFeature.cs @@ -3,7 +3,6 @@ using OmniSharp.Extensions.JsonRpc.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Client; using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; -using OmniSharp.Extensions.LanguageServer.Protocol.Document; using OmniSharp.Extensions.LanguageServer.Protocol.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities; diff --git a/src/Protocol/Features/Document/DocumentHighlightFeature.cs b/src/Protocol/Features/Document/DocumentHighlightFeature.cs index 84d6488fb..924186884 100644 --- a/src/Protocol/Features/Document/DocumentHighlightFeature.cs +++ b/src/Protocol/Features/Document/DocumentHighlightFeature.cs @@ -3,7 +3,6 @@ using OmniSharp.Extensions.JsonRpc.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Client; using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; -using OmniSharp.Extensions.LanguageServer.Protocol.Document; using OmniSharp.Extensions.LanguageServer.Protocol.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters; using OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities; diff --git a/src/Protocol/Features/Document/DocumentOnTypeFormattingFeature.cs b/src/Protocol/Features/Document/DocumentOnTypeFormattingFeature.cs index 5d5a835e6..44d6b9229 100644 --- a/src/Protocol/Features/Document/DocumentOnTypeFormattingFeature.cs +++ b/src/Protocol/Features/Document/DocumentOnTypeFormattingFeature.cs @@ -4,7 +4,6 @@ using OmniSharp.Extensions.JsonRpc.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Client; using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; -using OmniSharp.Extensions.LanguageServer.Protocol.Document; using OmniSharp.Extensions.LanguageServer.Protocol.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Serialization; using OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities; diff --git a/src/Protocol/Features/Document/DocumentRangeFormattingFeature.cs b/src/Protocol/Features/Document/DocumentRangeFormattingFeature.cs index 13285c1ec..faca31fcd 100644 --- a/src/Protocol/Features/Document/DocumentRangeFormattingFeature.cs +++ b/src/Protocol/Features/Document/DocumentRangeFormattingFeature.cs @@ -3,7 +3,6 @@ using OmniSharp.Extensions.JsonRpc.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Client; using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; -using OmniSharp.Extensions.LanguageServer.Protocol.Document; using OmniSharp.Extensions.LanguageServer.Protocol.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities; diff --git a/src/Protocol/Features/Document/DocumentSymbolFeature.cs b/src/Protocol/Features/Document/DocumentSymbolFeature.cs index c58420722..c1974af9a 100644 --- a/src/Protocol/Features/Document/DocumentSymbolFeature.cs +++ b/src/Protocol/Features/Document/DocumentSymbolFeature.cs @@ -1,11 +1,9 @@ -using System; using System.Diagnostics; using Newtonsoft.Json; using OmniSharp.Extensions.JsonRpc; using OmniSharp.Extensions.JsonRpc.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Client; using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; -using OmniSharp.Extensions.LanguageServer.Protocol.Document; using OmniSharp.Extensions.LanguageServer.Protocol.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Serialization; using OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters; @@ -99,9 +97,8 @@ public record DocumentSymbol /// /// Tags for this document symbol. /// - /// @since 3.16.0 - Proposed state + /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] [Optional] public Container? Tags { get; init; } @@ -144,7 +141,7 @@ public partial class DocumentSymbolRegistrationOptions : ITextDocumentRegistrati /// A human-readable string that is shown when multiple outlines trees /// are shown for the same document. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// [Optional] public string? Label { get; set; } @@ -175,7 +172,6 @@ public partial class DocumentSymbolCapability : DynamicCapability /// /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] [Optional] public TagSupportCapabilityOptions? TagSupport { get; set; } diff --git a/src/Protocol/Features/Document/FoldingRangeFeature.cs b/src/Protocol/Features/Document/FoldingRangeFeature.cs index 6f2056665..e4fdb7652 100644 --- a/src/Protocol/Features/Document/FoldingRangeFeature.cs +++ b/src/Protocol/Features/Document/FoldingRangeFeature.cs @@ -6,7 +6,6 @@ using OmniSharp.Extensions.JsonRpc.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Client; using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; -using OmniSharp.Extensions.LanguageServer.Protocol.Document; using OmniSharp.Extensions.LanguageServer.Protocol.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Serialization; using OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities; diff --git a/src/Protocol/Features/Document/HoverFeature.cs b/src/Protocol/Features/Document/HoverFeature.cs index 6e9b4943c..5c04e61c1 100644 --- a/src/Protocol/Features/Document/HoverFeature.cs +++ b/src/Protocol/Features/Document/HoverFeature.cs @@ -4,7 +4,6 @@ using OmniSharp.Extensions.JsonRpc.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Client; using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; -using OmniSharp.Extensions.LanguageServer.Protocol.Document; using OmniSharp.Extensions.LanguageServer.Protocol.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Models; using OmniSharp.Extensions.LanguageServer.Protocol.Serialization; diff --git a/src/Protocol/Features/Document/ImplementationFeature.cs b/src/Protocol/Features/Document/ImplementationFeature.cs index b8426161c..668af7fa1 100644 --- a/src/Protocol/Features/Document/ImplementationFeature.cs +++ b/src/Protocol/Features/Document/ImplementationFeature.cs @@ -2,7 +2,6 @@ using OmniSharp.Extensions.JsonRpc.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Client; using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; -using OmniSharp.Extensions.LanguageServer.Protocol.Document; using OmniSharp.Extensions.LanguageServer.Protocol.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities; diff --git a/src/Protocol/Features/Document/LinkedEditingRangeFeature.cs b/src/Protocol/Features/Document/LinkedEditingRangeFeature.cs index ba264aa50..56648f81a 100644 --- a/src/Protocol/Features/Document/LinkedEditingRangeFeature.cs +++ b/src/Protocol/Features/Document/LinkedEditingRangeFeature.cs @@ -1,10 +1,8 @@ -using System; using MediatR; using OmniSharp.Extensions.JsonRpc; using OmniSharp.Extensions.JsonRpc.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Client; using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; -using OmniSharp.Extensions.LanguageServer.Protocol.Document; using OmniSharp.Extensions.LanguageServer.Protocol.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Serialization; using OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities; @@ -15,7 +13,6 @@ namespace OmniSharp.Extensions.LanguageServer.Protocol namespace Models { [Parallel] - [Obsolete(Constants.Proposal)] [Method(TextDocumentNames.LinkedEditingRange, Direction.ClientToServer)] [ GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Document"), @@ -26,8 +23,6 @@ namespace Models public partial record LinkedEditingRangeParams : TextDocumentPositionParams, IWorkDoneProgressParams, IRequest { } - - [Obsolete(Constants.Proposal)] public partial record LinkedEditingRanges { /// @@ -44,8 +39,6 @@ public partial record LinkedEditingRanges [Optional] public string? WordPattern { get; init; } } - - [Obsolete(Constants.Proposal)] [GenerateRegistrationOptions(nameof(ServerCapabilities.LinkedEditingRangeProvider))] [RegistrationName(TextDocumentNames.LinkedEditingRange)] public partial class LinkedEditingRangeRegistrationOptions : ITextDocumentRegistrationOptions, IWorkDoneProgressOptions { } @@ -54,7 +47,6 @@ public partial class LinkedEditingRangeRegistrationOptions : ITextDocumentRegist namespace Client.Capabilities { - [Obsolete(Constants.Proposal)] [CapabilityKey(nameof(ClientCapabilities.TextDocument), nameof(TextDocumentClientCapabilities.LinkedEditingRange))] public partial class LinkedEditingRangeClientCapabilities : DynamicCapability { } } diff --git a/src/Protocol/Features/Document/Proposals/MonikerFeature.cs b/src/Protocol/Features/Document/MonikerFeature.cs similarity index 95% rename from src/Protocol/Features/Document/Proposals/MonikerFeature.cs rename to src/Protocol/Features/Document/MonikerFeature.cs index 2c6f7b508..c01b235bf 100644 --- a/src/Protocol/Features/Document/Proposals/MonikerFeature.cs +++ b/src/Protocol/Features/Document/MonikerFeature.cs @@ -1,4 +1,3 @@ -using System; using OmniSharp.Extensions.JsonRpc; using OmniSharp.Extensions.JsonRpc.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Client; @@ -10,7 +9,7 @@ // ReSharper disable once CheckNamespace namespace OmniSharp.Extensions.LanguageServer.Protocol { - namespace Models.Proposals + namespace Models { /// /// Language Server Index Format (LSIF) introduced the concept of symbol monikers to help associate symbols across different indexes. @@ -22,11 +21,10 @@ namespace Models.Proposals /// position. An array of Moniker types is returned as response to indicate possible monikers at the given location. If no monikers /// can be calculated, an empty array or `null` should be returned. /// - [Obsolete(Constants.Proposal)] [Parallel] [Method(TextDocumentNames.Moniker, Direction.ClientToServer)] [ - GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Document.Proposals"), + GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Document"), GenerateHandlerMethods, GenerateRequestMethods(typeof(ITextDocumentLanguageClient), typeof(ILanguageClient)) ] @@ -38,7 +36,6 @@ public partial record MonikerParams : TextDocumentPositionParams, IWorkDoneProgr /// /// Moniker definition to match LSIF 0.5 moniker definition. /// - [Obsolete(Constants.Proposal)] public partial record Moniker { /// @@ -119,8 +116,6 @@ public readonly partial struct UniquenessLevel /// public static readonly UniquenessLevel Global = new UniquenessLevel("global"); } - - [Obsolete(Constants.Proposal)] [GenerateRegistrationOptions(nameof(ServerCapabilities.MonikerProvider))] [RegistrationName(TextDocumentNames.Moniker)] public partial class MonikerRegistrationOptions : ITextDocumentRegistrationOptions, IWorkDoneProgressOptions @@ -130,14 +125,13 @@ public partial class MonikerRegistrationOptions : ITextDocumentRegistrationOptio namespace Client.Capabilities { - [Obsolete(Constants.Proposal)] [CapabilityKey(nameof(ClientCapabilities.TextDocument), nameof(TextDocumentClientCapabilities.Moniker))] public partial class MonikerCapability : DynamicCapability { } } - namespace Document.Proposals + namespace Document { } } diff --git a/src/Protocol/Features/Document/PublishDiagnosticsFeature.cs b/src/Protocol/Features/Document/PublishDiagnosticsFeature.cs index 9cff5680b..2bce7efd0 100644 --- a/src/Protocol/Features/Document/PublishDiagnosticsFeature.cs +++ b/src/Protocol/Features/Document/PublishDiagnosticsFeature.cs @@ -84,7 +84,7 @@ public class PublishDiagnosticsCapability : ICapability /// /// Client supports a codeDescription property /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// [Optional] public bool CodeDescriptionSupport { get; set; } @@ -94,7 +94,7 @@ public class PublishDiagnosticsCapability : ICapability /// preserved between a `textDocument/publishDiagnostics` and /// `textDocument/codeAction` request. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// [Optional] public bool DataSupport { get; set; } diff --git a/src/Protocol/Features/Document/ReferencesFeature.cs b/src/Protocol/Features/Document/ReferencesFeature.cs index 7a947ada5..28f19715b 100644 --- a/src/Protocol/Features/Document/ReferencesFeature.cs +++ b/src/Protocol/Features/Document/ReferencesFeature.cs @@ -2,7 +2,6 @@ using OmniSharp.Extensions.JsonRpc.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Client; using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; -using OmniSharp.Extensions.LanguageServer.Protocol.Document; using OmniSharp.Extensions.LanguageServer.Protocol.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities; diff --git a/src/Protocol/Features/Document/RenameFeature.cs b/src/Protocol/Features/Document/RenameFeature.cs index c0f2622f8..5915060e2 100644 --- a/src/Protocol/Features/Document/RenameFeature.cs +++ b/src/Protocol/Features/Document/RenameFeature.cs @@ -4,7 +4,6 @@ using OmniSharp.Extensions.JsonRpc.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Client; using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; -using OmniSharp.Extensions.LanguageServer.Protocol.Document; using OmniSharp.Extensions.LanguageServer.Protocol.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Serialization; using OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters; @@ -178,7 +177,7 @@ public class RenameCapability : DynamicCapability /// the workspace edit in the user interface and asking /// for confirmation. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// [Optional] public bool HonorsChangeAnnotations { get; set; } diff --git a/src/Protocol/Features/Document/SelectionRangeFeature.cs b/src/Protocol/Features/Document/SelectionRangeFeature.cs index 48b8f2521..3f5db9a38 100644 --- a/src/Protocol/Features/Document/SelectionRangeFeature.cs +++ b/src/Protocol/Features/Document/SelectionRangeFeature.cs @@ -3,7 +3,6 @@ using OmniSharp.Extensions.JsonRpc.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Client; using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; -using OmniSharp.Extensions.LanguageServer.Protocol.Document; using OmniSharp.Extensions.LanguageServer.Protocol.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Serialization; using OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities; diff --git a/src/Protocol/Features/Document/Proposals/SemanticTokensBuilder.cs b/src/Protocol/Features/Document/SemanticTokensBuilder.cs similarity index 97% rename from src/Protocol/Features/Document/Proposals/SemanticTokensBuilder.cs rename to src/Protocol/Features/Document/SemanticTokensBuilder.cs index 259853367..87c26a98b 100644 --- a/src/Protocol/Features/Document/Proposals/SemanticTokensBuilder.cs +++ b/src/Protocol/Features/Document/SemanticTokensBuilder.cs @@ -1,13 +1,12 @@ using System; using System.Collections.Generic; using System.Collections.Immutable; -using OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals; +using OmniSharp.Extensions.LanguageServer.Protocol.Models; using Range = OmniSharp.Extensions.LanguageServer.Protocol.Models.Range; // ReSharper disable once CheckNamespace -namespace OmniSharp.Extensions.LanguageServer.Protocol.Document.Proposals +namespace OmniSharp.Extensions.LanguageServer.Protocol.Document { - [Obsolete(Constants.Proposal)] public class SemanticTokensBuilder { /// diff --git a/src/Protocol/Features/Document/Proposals/SemanticTokensDocument.cs b/src/Protocol/Features/Document/SemanticTokensDocument.cs similarity index 97% rename from src/Protocol/Features/Document/Proposals/SemanticTokensDocument.cs rename to src/Protocol/Features/Document/SemanticTokensDocument.cs index f143c5e64..a9d7e1155 100644 --- a/src/Protocol/Features/Document/Proposals/SemanticTokensDocument.cs +++ b/src/Protocol/Features/Document/SemanticTokensDocument.cs @@ -1,12 +1,11 @@ using System; using System.Collections.Immutable; -using OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals; +using OmniSharp.Extensions.LanguageServer.Protocol.Models; using Range = OmniSharp.Extensions.LanguageServer.Protocol.Models.Range; // ReSharper disable once CheckNamespace -namespace OmniSharp.Extensions.LanguageServer.Protocol.Document.Proposals +namespace OmniSharp.Extensions.LanguageServer.Protocol.Document { - [Obsolete(Constants.Proposal)] public class SemanticTokensDocument { private readonly SemanticTokensLegend _legend; diff --git a/src/Protocol/Features/Document/Proposals/SemanticTokensFeature.cs b/src/Protocol/Features/Document/SemanticTokensFeature.cs similarity index 96% rename from src/Protocol/Features/Document/Proposals/SemanticTokensFeature.cs rename to src/Protocol/Features/Document/SemanticTokensFeature.cs index dee53d9b0..346aab518 100644 --- a/src/Protocol/Features/Document/Proposals/SemanticTokensFeature.cs +++ b/src/Protocol/Features/Document/SemanticTokensFeature.cs @@ -11,30 +11,27 @@ using OmniSharp.Extensions.JsonRpc.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Client; using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; -using OmniSharp.Extensions.LanguageServer.Protocol.Document.Proposals; +using OmniSharp.Extensions.LanguageServer.Protocol.Document; using OmniSharp.Extensions.LanguageServer.Protocol.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Models; -using OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals; using OmniSharp.Extensions.LanguageServer.Protocol.Progress; using OmniSharp.Extensions.LanguageServer.Protocol.Serialization; using OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters; using OmniSharp.Extensions.LanguageServer.Protocol.Server; using OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities; -using OmniSharp.Extensions.LanguageServer.Protocol.Workspace.Proposals; // ReSharper disable once CheckNamespace namespace OmniSharp.Extensions.LanguageServer.Protocol { - namespace Models.Proposals + namespace Models { /// /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] [Parallel] [Method(TextDocumentNames.SemanticTokensFull, Direction.ClientToServer)] [ - GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Document.Proposals", Name = "SemanticTokensFull"), + GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Document", Name = "SemanticTokensFull"), GenerateHandlerMethods, GenerateRequestMethods(typeof(ITextDocumentLanguageClient), typeof(ILanguageClient)) ] @@ -51,11 +48,10 @@ public partial record SemanticTokensParams : IWorkDoneProgressParams, ITextDocum /// /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] [Parallel] [Method(TextDocumentNames.SemanticTokensFullDelta, Direction.ClientToServer)] [ - GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Document.Proposals"), + GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Document"), GenerateHandlerMethods, GenerateRequestMethods(typeof(ITextDocumentLanguageClient), typeof(ILanguageClient)) ] @@ -77,11 +73,10 @@ public partial record SemanticTokensDeltaParams : IWorkDoneProgressParams, IText /// /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] [Parallel] [Method(TextDocumentNames.SemanticTokensRange, Direction.ClientToServer)] [ - GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Document.Proposals"), + GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Document"), GenerateHandlerMethods, GenerateRequestMethods(typeof(ITextDocumentLanguageClient), typeof(ILanguageClient)) ] @@ -99,18 +94,14 @@ public partial record SemanticTokensRangeParams : IWorkDoneProgressParams, IText /// public Range Range { get; init; } } - - [Obsolete(Constants.Proposal)] [Parallel] [Method(WorkspaceNames.SemanticTokensRefresh, Direction.ServerToClient)] - [GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Workspace.Proposals"), GenerateHandlerMethods, + [GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Workspace"), GenerateHandlerMethods, GenerateRequestMethods(typeof(IWorkspaceLanguageServer), typeof(ILanguageServer))] [Capability(typeof(SemanticTokensWorkspaceCapability))] public partial record SemanticTokensRefreshParams : IRequest { } - - [Obsolete(Constants.Proposal)] public interface ISemanticTokenResult { /// @@ -126,7 +117,6 @@ public interface ISemanticTokenResult /// /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] public partial record SemanticTokens : ISemanticTokenResult { public SemanticTokens() @@ -167,7 +157,6 @@ public SemanticTokens(SemanticTokensPartialResult partialResult) /// /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] public partial record SemanticTokensPartialResult { /// @@ -182,7 +171,6 @@ public partial record SemanticTokensPartialResult /// /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] public record SemanticTokensDelta : ISemanticTokenResult { public SemanticTokensDelta() @@ -213,7 +201,6 @@ public SemanticTokensDelta(SemanticTokensDeltaPartialResult partialResult) /// /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] public record SemanticTokensDeltaPartialResult { /// @@ -227,7 +214,6 @@ public record SemanticTokensDeltaPartialResult /// /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] public record SemanticTokensEdit { /// @@ -257,8 +243,6 @@ public record SemanticTokensEdit [Optional] public ImmutableArray? Data { get; init; } = ImmutableArray.Empty; } - - [Obsolete(Constants.Proposal)] [JsonConverter(typeof(SemanticTokensFullOrDeltaConverter))] public record SemanticTokensFullOrDelta { @@ -335,8 +319,6 @@ public SemanticTokensFullOrDelta(SemanticTokensFullOrDeltaPartialResult partialR _ => null }; } - - [Obsolete(Constants.Proposal)] [JsonConverter(typeof(SemanticTokensFullOrDeltaPartialResultConverter))] public record SemanticTokensFullOrDeltaPartialResult { @@ -375,7 +357,6 @@ public static implicit operator SemanticTokensFullOrDelta(SemanticTokensFullOrDe /// /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] public record SemanticTokensLegend { private ImmutableDictionary? _tokenModifiersData; @@ -491,7 +472,6 @@ private void EnsureTokenModifiers() => /// /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] [StringEnum] public readonly partial struct SemanticTokenFormat { @@ -505,7 +485,6 @@ public readonly partial struct SemanticTokenFormat /// /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] [StringEnum] public readonly partial struct SemanticTokenModifier { @@ -529,7 +508,6 @@ public readonly partial struct SemanticTokenModifier /// /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] [StringEnum] public readonly partial struct SemanticTokenType { @@ -557,8 +535,6 @@ public readonly partial struct SemanticTokenType public static SemanticTokenType Event { get; } = new SemanticTokenType("event"); public static SemanticTokenType EnumMember { get; } = new SemanticTokenType("enumMember"); } - - [Obsolete(Constants.Proposal)] [RegistrationName(TextDocumentNames.SemanticTokensRegistration)] [GenerateRegistrationOptions(nameof(ServerCapabilities.SemanticTokensProvider))] [RegistrationOptionsConverter(typeof(SemanticTokensRegistrationOptionsConverter))] @@ -625,7 +601,6 @@ namespace Client.Capabilities /// /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] [CapabilityKey(nameof(ClientCapabilities.TextDocument), nameof(TextDocumentClientCapabilities.SemanticTokens))] public partial class SemanticTokensCapability : DynamicCapability { @@ -705,9 +680,8 @@ public partial class SemanticTokensCapabilityRequestFull /// Capabilities specific to the semantic token requests scoped to the /// workspace. /// - /// @since 3.16.0 - proposed state. + /// @since 3.16.0. /// - [Obsolete(Constants.Proposal)] [CapabilityKey(nameof(ClientCapabilities.TextDocument), nameof(WorkspaceClientCapabilities.SemanticTokens))] public class SemanticTokensWorkspaceCapability : ICapability { @@ -722,9 +696,8 @@ public class SemanticTokensWorkspaceCapability : ICapability } } - namespace Document.Proposals + namespace Document { - [Obsolete(Constants.Proposal)] public abstract class SemanticTokensHandlerBase : AbstractHandlers.Base, ISemanticTokensFullHandler, @@ -758,8 +731,6 @@ public abstract class SemanticTokensHandlerBase : protected abstract Task Tokenize(SemanticTokensBuilder builder, ITextDocumentIdentifierParams identifier, CancellationToken cancellationToken); protected abstract Task GetSemanticTokensDocument(ITextDocumentIdentifierParams @params, CancellationToken cancellationToken); } - - [Obsolete(Constants.Proposal)] public static partial class SemanticTokensExtensions { private static SemanticTokensRegistrationOptions RegistrationOptionsFactory(SemanticTokensCapability capability, ClientCapabilities clientCapabilities) diff --git a/src/Protocol/Features/Document/SignatureHelpFeature.cs b/src/Protocol/Features/Document/SignatureHelpFeature.cs index 0dca32fe9..c96fd7352 100644 --- a/src/Protocol/Features/Document/SignatureHelpFeature.cs +++ b/src/Protocol/Features/Document/SignatureHelpFeature.cs @@ -5,7 +5,6 @@ using OmniSharp.Extensions.JsonRpc.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Client; using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; -using OmniSharp.Extensions.LanguageServer.Protocol.Document; using OmniSharp.Extensions.LanguageServer.Protocol.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Models; using OmniSharp.Extensions.LanguageServer.Protocol.Serialization; @@ -155,7 +154,7 @@ public record SignatureInformation /// /// If provided, this is used in place of `SignatureHelp.activeParameter`. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// [Optional] public int? ActiveParameter { get; init; } @@ -276,7 +275,7 @@ public class SignatureInformationCapabilityOptions /// The client support the `activeParameter` property on `SignatureInformation` /// literal. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// [Optional] public bool ActiveParameterSupport { get; set; } diff --git a/src/Protocol/Features/Document/TypeDefinitionFeature.cs b/src/Protocol/Features/Document/TypeDefinitionFeature.cs index b7385f216..aee115849 100644 --- a/src/Protocol/Features/Document/TypeDefinitionFeature.cs +++ b/src/Protocol/Features/Document/TypeDefinitionFeature.cs @@ -2,7 +2,6 @@ using OmniSharp.Extensions.JsonRpc.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Client; using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; -using OmniSharp.Extensions.LanguageServer.Protocol.Document; using OmniSharp.Extensions.LanguageServer.Protocol.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities; diff --git a/src/Protocol/Features/FileOperationsFeature.cs b/src/Protocol/Features/FileOperationsFeature.cs index 9a3af0b09..ac255deb4 100644 --- a/src/Protocol/Features/FileOperationsFeature.cs +++ b/src/Protocol/Features/FileOperationsFeature.cs @@ -18,7 +18,7 @@ namespace Models /// The parameters sent in notifications/requests for user-initiated creation /// of files. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// public abstract record FileOperationParams where T : FileOperationItem @@ -42,7 +42,6 @@ public abstract record FileOperationItem /// [Parallel] - [Obsolete(Constants.Proposal)] [Method(WorkspaceNames.DidCreateFiles, Direction.ClientToServer)] [ GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Workspace"), @@ -57,7 +56,6 @@ public partial record DidCreateFileParams : FileOperationParams, IRe /// [Parallel] - [Obsolete(Constants.Proposal)] [Method(WorkspaceNames.WillCreateFiles, Direction.ClientToServer)] [ GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Workspace"), @@ -76,7 +74,6 @@ public partial record FileCreate : FileOperationItem } /// [Parallel] - [Obsolete(Constants.Proposal)] [Method(WorkspaceNames.DidRenameFiles, Direction.ClientToServer)] [ GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Workspace"), @@ -91,7 +88,6 @@ public partial record DidRenameFileParams : FileOperationParams, IRe /// [Parallel] - [Obsolete(Constants.Proposal)] [Method(WorkspaceNames.WillRenameFiles, Direction.ClientToServer)] [ GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Workspace"), @@ -111,7 +107,6 @@ public partial record FileRename : FileOperationItem /// [Parallel] - [Obsolete(Constants.Proposal)] [Method(WorkspaceNames.DidDeleteFiles, Direction.ClientToServer)] [ GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Workspace"), @@ -126,7 +121,6 @@ public partial record DidDeleteFileParams : FileOperationParams, IRe /// [Parallel] - [Obsolete(Constants.Proposal)] [Method(WorkspaceNames.WillDeleteFiles, Direction.ClientToServer)] [ GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Workspace"), @@ -145,7 +139,6 @@ public partial record FileDelete : FileOperationItem } /// - [Obsolete(Constants.Proposal)] [GenerateRegistrationOptions( nameof(ServerCapabilities.Workspace), nameof(WorkspaceServerCapabilities.FileOperations), nameof(FileOperationsWorkspaceServerCapabilities.WillCreate) )] @@ -159,7 +152,6 @@ public partial class WillCreateFileRegistrationOptions : IFileOperationRegistrat } /// - [Obsolete(Constants.Proposal)] [GenerateRegistrationOptions( nameof(ServerCapabilities.Workspace), nameof(WorkspaceServerCapabilities.FileOperations), nameof(FileOperationsWorkspaceServerCapabilities.DidCreate) )] @@ -173,7 +165,6 @@ public partial class DidCreateFileRegistrationOptions : IFileOperationRegistrati } /// - [Obsolete(Constants.Proposal)] [GenerateRegistrationOptions( nameof(ServerCapabilities.Workspace), nameof(WorkspaceServerCapabilities.FileOperations), nameof(FileOperationsWorkspaceServerCapabilities.WillRename) )] @@ -187,7 +178,6 @@ public partial class WillRenameFileRegistrationOptions : IFileOperationRegistrat } /// - [Obsolete(Constants.Proposal)] [GenerateRegistrationOptions( nameof(ServerCapabilities.Workspace), nameof(WorkspaceServerCapabilities.FileOperations), nameof(FileOperationsWorkspaceServerCapabilities.DidRename) )] @@ -201,7 +191,6 @@ public partial class DidRenameFileRegistrationOptions : IFileOperationRegistrati } /// - [Obsolete(Constants.Proposal)] [GenerateRegistrationOptions( nameof(ServerCapabilities.Workspace), nameof(WorkspaceServerCapabilities.FileOperations), nameof(FileOperationsWorkspaceServerCapabilities.WillDelete) )] @@ -215,7 +204,6 @@ public partial class WillDeleteFileRegistrationOptions : IFileOperationRegistrat } /// - [Obsolete(Constants.Proposal)] [GenerateRegistrationOptions( nameof(ServerCapabilities.Workspace), nameof(WorkspaceServerCapabilities.FileOperations), nameof(FileOperationsWorkspaceServerCapabilities.DidDelete) )] @@ -231,7 +219,7 @@ public partial class DidDeleteFileRegistrationOptions : IFileOperationRegistrati /// /// The options to register for file operations. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// public interface IFileOperationRegistrationOptions { @@ -245,7 +233,7 @@ public interface IFileOperationRegistrationOptions /// A pattern kind describing if a glob pattern matches a file a folder or /// both. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// [StringEnum] public readonly partial struct FileOperationPatternKind @@ -270,7 +258,7 @@ public record FileOperationPatternOptions /// A pattern to describe in which file operation requests or notifications /// the server is interested in. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// public record FileOperationPattern { @@ -328,7 +316,6 @@ public record FileOperationFilter namespace Server.Capabilities { - [Obsolete(Constants.Proposal)] public class FileOperationsWorkspaceServerCapabilities : DynamicCapability { /// @@ -371,7 +358,6 @@ public class FileOperationsWorkspaceServerCapabilities : DynamicCapability namespace Client.Capabilities { - [Obsolete(Constants.Proposal)] [CapabilityKey(nameof(ClientCapabilities.Workspace), nameof(WorkspaceClientCapabilities.FileOperations))] public class FileOperationsWorkspaceClientCapabilities : DynamicCapability { diff --git a/src/Protocol/Features/General/InitializeFeature.cs b/src/Protocol/Features/General/InitializeFeature.cs index 99b960d6b..0b337fa11 100644 --- a/src/Protocol/Features/General/InitializeFeature.cs +++ b/src/Protocol/Features/General/InitializeFeature.cs @@ -168,7 +168,7 @@ public string? RootPath /// Uses IETF language tags as the value's syntax /// (See https://en.wikipedia.org/wiki/IETF_language_tag) /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// [Optional] public string? Locale { get; init; } diff --git a/src/Protocol/Features/Window/ShowDocumentRequestFeature.cs b/src/Protocol/Features/Window/ShowDocumentRequestFeature.cs index 596901f1d..5872696d3 100644 --- a/src/Protocol/Features/Window/ShowDocumentRequestFeature.cs +++ b/src/Protocol/Features/Window/ShowDocumentRequestFeature.cs @@ -1,4 +1,3 @@ -using System; using MediatR; using OmniSharp.Extensions.JsonRpc; using OmniSharp.Extensions.JsonRpc.Generation; @@ -16,9 +15,8 @@ namespace Models /// /// Params to show a document. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] [Parallel] [Method(WindowNames.ShowDocument, Direction.ServerToClient)] [GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Window"), GenerateHandlerMethods, GenerateRequestMethods(typeof(IWindowLanguageServer), typeof(ILanguageServer))] @@ -60,9 +58,8 @@ public record ShowDocumentParams : IRequest /// /// The result of an show document request. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] public record ShowDocumentResult { /// @@ -77,9 +74,8 @@ namespace Client.Capabilities /// /// Capabilities specific to the showDocument request /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] [CapabilityKey(nameof(ClientCapabilities.Window), nameof(WindowClientCapabilities.ShowDocument))] public class ShowDocumentClientCapabilities: ICapability { diff --git a/src/Protocol/Features/Window/ShowMessageRequestFeature.cs b/src/Protocol/Features/Window/ShowMessageRequestFeature.cs index bd37dd69f..d3ca50f7e 100644 --- a/src/Protocol/Features/Window/ShowMessageRequestFeature.cs +++ b/src/Protocol/Features/Window/ShowMessageRequestFeature.cs @@ -1,4 +1,3 @@ -using System; using System.Collections.Generic; using System.Diagnostics; using MediatR; @@ -69,9 +68,8 @@ namespace Client.Capabilities /// /// Capabilities specific to the showMessage request /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] [CapabilityKey(nameof(ClientCapabilities.Window), nameof(WindowClientCapabilities.ShowMessage))] public class ShowMessageRequestClientCapabilities { @@ -81,8 +79,6 @@ public class ShowMessageRequestClientCapabilities [Optional] public ShowMessageRequestMessageActionItemClientCapabilities? MessageActionItem { get; set; } } - - [Obsolete(Constants.Proposal)] public class ShowMessageRequestMessageActionItemClientCapabilities { /// diff --git a/src/Protocol/Features/Window/TelemetryEventFeature.cs b/src/Protocol/Features/Window/TelemetryEventFeature.cs index 479b004a0..632b04b11 100644 --- a/src/Protocol/Features/Window/TelemetryEventFeature.cs +++ b/src/Protocol/Features/Window/TelemetryEventFeature.cs @@ -1,7 +1,6 @@ using System.Collections.Generic; using MediatR; using Newtonsoft.Json; -using Newtonsoft.Json.Linq; using OmniSharp.Extensions.JsonRpc; using OmniSharp.Extensions.JsonRpc.Generation; using OmniSharp.Extensions.LanguageServer.Protocol.Server; diff --git a/src/Protocol/Features/Workspace/ExecuteCommandFeature.cs b/src/Protocol/Features/Workspace/ExecuteCommandFeature.cs index 00d4920e7..cadf26083 100644 --- a/src/Protocol/Features/Workspace/ExecuteCommandFeature.cs +++ b/src/Protocol/Features/Workspace/ExecuteCommandFeature.cs @@ -15,7 +15,6 @@ using OmniSharp.Extensions.LanguageServer.Protocol.Server; using OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities; using OmniSharp.Extensions.LanguageServer.Protocol.Shared; -using OmniSharp.Extensions.LanguageServer.Protocol.Workspace; using ISerializer = OmniSharp.Extensions.JsonRpc.ISerializer; // ReSharper disable once CheckNamespace diff --git a/src/Protocol/Features/Workspace/WorkspaceSymbolsFeature.cs b/src/Protocol/Features/Workspace/WorkspaceSymbolsFeature.cs index d621f3871..1c34a435d 100644 --- a/src/Protocol/Features/Workspace/WorkspaceSymbolsFeature.cs +++ b/src/Protocol/Features/Workspace/WorkspaceSymbolsFeature.cs @@ -1,4 +1,3 @@ -using System; using System.Diagnostics; using OmniSharp.Extensions.JsonRpc; using OmniSharp.Extensions.JsonRpc.Generation; @@ -44,9 +43,8 @@ public partial record SymbolInformation /// /// Tags for this completion item. /// - /// @since 3.16.0 - Proposed state + /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] [Optional] public Container? Tags { get; init; } @@ -95,7 +93,6 @@ public partial class WorkspaceSymbolCapability : DynamicCapability// /// /// @since 3.16.0 /// - [Obsolete(Constants.Proposal)] [Optional] public Supports TagSupport { get; set; } } diff --git a/src/Protocol/ICapabilitiesBase.cs b/src/Protocol/ICapabilitiesBase.cs new file mode 100644 index 000000000..c17edd9b2 --- /dev/null +++ b/src/Protocol/ICapabilitiesBase.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace OmniSharp.Extensions.LanguageServer.Protocol +{ + public interface ICapabilitiesBase + { + [JsonExtensionData] IDictionary ExtensionData { get; set; } + } +} diff --git a/src/Protocol/IRegistrationOptionsConverter.cs b/src/Protocol/IRegistrationOptionsConverter.cs index 48bf7f89d..1065f5c9d 100644 --- a/src/Protocol/IRegistrationOptionsConverter.cs +++ b/src/Protocol/IRegistrationOptionsConverter.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using System.Reflection; namespace OmniSharp.Extensions.LanguageServer.Protocol diff --git a/src/Protocol/LanguageProtocolRpcOptionsBase.cs b/src/Protocol/LanguageProtocolRpcOptionsBase.cs index 0b01e274f..9ad85e0d9 100644 --- a/src/Protocol/LanguageProtocolRpcOptionsBase.cs +++ b/src/Protocol/LanguageProtocolRpcOptionsBase.cs @@ -33,7 +33,7 @@ public T AddTextDocumentIdentifier() where TI : ITextDocumentIdentifier return (T)(object)this; } - public ISerializer Serializer { get; set; } = new LspSerializer(ClientVersion.Lsp3); + public LspSerializer Serializer { get; set; } = new LspSerializer(ClientVersion.Lsp3); public ConfigurationBuilder ConfigurationBuilder { get; set; } = new ConfigurationBuilder(); internal bool AddDefaultLoggingProvider { get; set; } internal Action? LoggingBuilderAction { get; set; } = _ => { }; diff --git a/src/Protocol/Models/CreateFile.cs b/src/Protocol/Models/CreateFile.cs index c37aae13c..8f4340478 100644 --- a/src/Protocol/Models/CreateFile.cs +++ b/src/Protocol/Models/CreateFile.cs @@ -26,7 +26,7 @@ public record CreateFile : IFile /// /// An optional annotation describing the operation. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// [Optional] public ChangeAnnotationIdentifier? AnnotationId { get; init; } diff --git a/src/Protocol/Models/DeleteFile.cs b/src/Protocol/Models/DeleteFile.cs index 5e768b10d..0ced6d278 100644 --- a/src/Protocol/Models/DeleteFile.cs +++ b/src/Protocol/Models/DeleteFile.cs @@ -26,7 +26,7 @@ public record DeleteFile : IFile /// /// An optional annotation describing the operation. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// [Optional] public ChangeAnnotationIdentifier? AnnotationId { get; init; } diff --git a/src/Protocol/Models/Diagnostic.cs b/src/Protocol/Models/Diagnostic.cs index 46a314ad6..1c546008d 100644 --- a/src/Protocol/Models/Diagnostic.cs +++ b/src/Protocol/Models/Diagnostic.cs @@ -34,7 +34,7 @@ public partial record Diagnostic : ICanHaveData /// /// An optional property to describe the error code. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// [Optional] public CodeDescription? CodeDescription { get; init; } @@ -161,7 +161,7 @@ public enum DiagnosticTag /// /// Structure to capture a description for an error code. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// public record CodeDescription { diff --git a/src/Protocol/Models/IFile.cs b/src/Protocol/Models/IFile.cs index 85aacc8b4..3e63593ab 100644 --- a/src/Protocol/Models/IFile.cs +++ b/src/Protocol/Models/IFile.cs @@ -9,7 +9,7 @@ public interface IFile /// /// An optional annotation describing the operation. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// [Optional] ChangeAnnotationIdentifier? AnnotationId { get; init; } diff --git a/src/Protocol/Models/InsertTextMode.cs b/src/Protocol/Models/InsertTextMode.cs index e7f08183e..3c7ae0b8e 100644 --- a/src/Protocol/Models/InsertTextMode.cs +++ b/src/Protocol/Models/InsertTextMode.cs @@ -4,7 +4,7 @@ namespace OmniSharp.Extensions.LanguageServer.Protocol.Models /// How whitespace and indentation is handled during completion /// item insertion. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// public enum InsertTextMode { @@ -28,4 +28,4 @@ public enum InsertTextMode /// AdjustIndentation = 2 } -} \ No newline at end of file +} diff --git a/src/Protocol/Models/RenameFile.cs b/src/Protocol/Models/RenameFile.cs index 62c616204..3503b0377 100644 --- a/src/Protocol/Models/RenameFile.cs +++ b/src/Protocol/Models/RenameFile.cs @@ -31,7 +31,7 @@ public record RenameFile : IFile /// /// An optional annotation describing the operation. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// [Optional] public ChangeAnnotationIdentifier? AnnotationId { get; init; } diff --git a/src/Protocol/Models/SymbolTag.cs b/src/Protocol/Models/SymbolTag.cs index a7d0267e3..d522143ee 100644 --- a/src/Protocol/Models/SymbolTag.cs +++ b/src/Protocol/Models/SymbolTag.cs @@ -1,5 +1,4 @@ -using System; -using Newtonsoft.Json; +using Newtonsoft.Json; using OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters; namespace OmniSharp.Extensions.LanguageServer.Protocol.Models @@ -8,7 +7,6 @@ namespace OmniSharp.Extensions.LanguageServer.Protocol.Models /// Symbol tags are extra annotations that tweak the rendering of a symbol. /// @since 3.16 /// - [Obsolete(Constants.Proposal)] [JsonConverter(typeof(NumberEnumConverter))] public enum SymbolTag { diff --git a/src/Protocol/Models/TextEdit.cs b/src/Protocol/Models/TextEdit.cs index 420617a27..8ce7dbbca 100644 --- a/src/Protocol/Models/TextEdit.cs +++ b/src/Protocol/Models/TextEdit.cs @@ -32,7 +32,7 @@ public record TextEdit /// /// A special text edit to provide an insert and a replace operation. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// [DebuggerDisplay("{" + nameof(DebuggerDisplay) + ",nq}")] public record InsertReplaceEdit @@ -125,7 +125,7 @@ public object? RawValue /// /// Additional information that describes document changes. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// public record ChangeAnnotation { @@ -155,7 +155,7 @@ public record ChangeAnnotationIdentifier /// /// An optional annotation identifer describing the operation. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// public string Identifier { get; init; } @@ -167,7 +167,7 @@ public record ChangeAnnotationIdentifier /// /// A special text edit with an additional change annotation. /// - /// @since 3.16.0 - proposed state. + /// @since 3.16.0. /// [DebuggerDisplay("{" + nameof(DebuggerDisplay) + ",nq}")] [JsonConverter(typeof(TextEditConverter))] diff --git a/src/Protocol/Models/WorkspaceEdit.cs b/src/Protocol/Models/WorkspaceEdit.cs index b587fb26a..182f524ef 100644 --- a/src/Protocol/Models/WorkspaceEdit.cs +++ b/src/Protocol/Models/WorkspaceEdit.cs @@ -34,7 +34,7 @@ public record WorkspaceEdit /// Whether clients honor this property depends on the client capability /// `workspace.changeAnnotationSupport`. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// [Optional] public IDictionary? ChangeAnnotations { get; init; } diff --git a/src/Protocol/Progress/PartialItemsRequestProgressObservable.cs b/src/Protocol/Progress/PartialItemsRequestProgressObservable.cs index 64929b898..be654e680 100644 --- a/src/Protocol/Progress/PartialItemsRequestProgressObservable.cs +++ b/src/Protocol/Progress/PartialItemsRequestProgressObservable.cs @@ -8,7 +8,6 @@ using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; -using ImTools; using Newtonsoft.Json.Linq; using OmniSharp.Extensions.JsonRpc; using OmniSharp.Extensions.LanguageServer.Protocol.Models; diff --git a/src/Protocol/Protocol.csproj b/src/Protocol/Protocol.csproj index a148dde53..90fd9171f 100644 --- a/src/Protocol/Protocol.csproj +++ b/src/Protocol/Protocol.csproj @@ -8,13 +8,30 @@ - - - + + + - - + + + + + + <_Parameter1>OmniSharp.Extensions.LanguageProtocol.Testing, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f + + + <_Parameter1>OmniSharp.Extensions.LanguageServer, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f + + + <_Parameter1>OmniSharp.Extensions.LanguageProtocol.Proposals, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f + + + <_Parameter1>OmniSharp.Extensions.LanguageServer.Shared, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f + + + <_Parameter1>OmniSharp.Extensions.LanguageClient, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f + diff --git a/src/Protocol/RegistrationOptionsKeyAttribute.cs b/src/Protocol/RegistrationOptionsKeyAttribute.cs index 520c794aa..293e20f38 100644 --- a/src/Protocol/RegistrationOptionsKeyAttribute.cs +++ b/src/Protocol/RegistrationOptionsKeyAttribute.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using System.Linq; namespace OmniSharp.Extensions.LanguageServer.Protocol diff --git a/src/Protocol/Serialization/Converters/SemanticTokensFullOrDeltaConverter.cs b/src/Protocol/Serialization/Converters/SemanticTokensFullOrDeltaConverter.cs index 33f334569..ac1aaf56f 100644 --- a/src/Protocol/Serialization/Converters/SemanticTokensFullOrDeltaConverter.cs +++ b/src/Protocol/Serialization/Converters/SemanticTokensFullOrDeltaConverter.cs @@ -1,11 +1,10 @@ using System; using Newtonsoft.Json; using Newtonsoft.Json.Linq; -using OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals; +using OmniSharp.Extensions.LanguageServer.Protocol.Models; namespace OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters { - [Obsolete(Constants.Proposal)] public class SemanticTokensFullOrDeltaConverter : JsonConverter { public override void WriteJson(JsonWriter writer, SemanticTokensFullOrDelta value, JsonSerializer serializer) diff --git a/src/Protocol/Serialization/Converters/SemanticTokensFullOrDeltaPartialResultConverter.cs b/src/Protocol/Serialization/Converters/SemanticTokensFullOrDeltaPartialResultConverter.cs index 4619a6863..5da50c4e7 100644 --- a/src/Protocol/Serialization/Converters/SemanticTokensFullOrDeltaPartialResultConverter.cs +++ b/src/Protocol/Serialization/Converters/SemanticTokensFullOrDeltaPartialResultConverter.cs @@ -1,11 +1,10 @@ using System; using Newtonsoft.Json; using Newtonsoft.Json.Linq; -using OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals; +using OmniSharp.Extensions.LanguageServer.Protocol.Models; namespace OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters { - [Obsolete(Constants.Proposal)] public class SemanticTokensFullOrDeltaPartialResultConverter : JsonConverter { public override void WriteJson(JsonWriter writer, SemanticTokensFullOrDeltaPartialResult value, JsonSerializer serializer) diff --git a/src/Protocol/Serialization/LspContractResolver.cs b/src/Protocol/Serialization/LspContractResolver.cs index f2a09637b..3f80d7ff4 100644 --- a/src/Protocol/Serialization/LspContractResolver.cs +++ b/src/Protocol/Serialization/LspContractResolver.cs @@ -7,7 +7,6 @@ using Newtonsoft.Json.Serialization; using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; using OmniSharp.Extensions.LanguageServer.Protocol.Models; -using OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals; #pragma warning disable 618 diff --git a/src/Protocol/Serialization/Serializer.cs b/src/Protocol/Serialization/Serializer.cs index 95d1fe485..96c55b41a 100644 --- a/src/Protocol/Serialization/Serializer.cs +++ b/src/Protocol/Serialization/Serializer.cs @@ -7,7 +7,6 @@ using OmniSharp.Extensions.JsonRpc.Serialization.Converters; using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; using OmniSharp.Extensions.LanguageServer.Protocol.Models; -using OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals; using OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters; using OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities; #pragma warning disable 618 diff --git a/src/Protocol/Server/Capabilities/IServerCapabilities.cs b/src/Protocol/Server/Capabilities/IServerCapabilities.cs new file mode 100644 index 000000000..a94a44e6c --- /dev/null +++ b/src/Protocol/Server/Capabilities/IServerCapabilities.cs @@ -0,0 +1,172 @@ +using System.Collections.Generic; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using OmniSharp.Extensions.LanguageServer.Protocol.Models; + +namespace OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities +{ + /// + /// + /// + /// + /// Is not a record on purpose... + /// get; set; for the moment, to allow for replacement of values. + /// + public interface IServerCapabilities : ICapabilitiesBase + { + /// + /// Defines how text documents are synced. Is either a detailed structure defining each notification or + /// for backwards compatibility the TextDocumentSyncKind number. + /// + TextDocumentSync? TextDocumentSync { get; set; } + + /// + /// The server provides hover support. + /// + BooleanOr? HoverProvider { get; set; } + + /// + /// The server provides completion support. + /// + CompletionRegistrationOptions.StaticOptions? CompletionProvider { get; set; } + + /// + /// The server provides signature help support. + /// + SignatureHelpRegistrationOptions.StaticOptions? SignatureHelpProvider { get; set; } + + /// + /// The server provides goto definition support. + /// + BooleanOr? DefinitionProvider { get; set; } + + /// + /// The server provides find references support. + /// + BooleanOr? ReferencesProvider { get; set; } + + /// + /// The server provides document highlight support. + /// + BooleanOr? DocumentHighlightProvider { get; set; } + + /// + /// The server provides document symbol support. + /// + BooleanOr? DocumentSymbolProvider { get; set; } + + /// + /// The server provides workspace symbol support. + /// + BooleanOr? WorkspaceSymbolProvider { get; set; } + + /// + /// The server provides code actions. + /// + BooleanOr? CodeActionProvider { get; set; } + + /// + /// The server provides code lens. + /// + CodeLensRegistrationOptions.StaticOptions? CodeLensProvider { get; set; } + + /// + /// The server provides document formatting. + /// + BooleanOr? DocumentFormattingProvider { get; set; } + + /// + /// The server provides document range formatting. + /// + BooleanOr? DocumentRangeFormattingProvider { get; set; } + + /// + /// The server provides document formatting on typing. + /// + DocumentOnTypeFormattingRegistrationOptions.StaticOptions? DocumentOnTypeFormattingProvider { get; set; } + + /// + /// The server provides rename support. + /// + BooleanOr? RenameProvider { get; set; } + + /// + /// The server provides document link support. + /// + DocumentLinkRegistrationOptions.StaticOptions? DocumentLinkProvider { get; set; } + + /// + /// The server provides execute command support. + /// + ExecuteCommandRegistrationOptions.StaticOptions? ExecuteCommandProvider { get; set; } + + /// + /// Experimental server capabilities. + /// + IDictionary Experimental { get; set; } + + /// + /// The server provides Goto Type Definition support. + /// + /// Since 3.6.0 + /// + BooleanOr? TypeDefinitionProvider { get; set; } + + /// + /// The server provides Goto Implementation support. + /// + /// Since 3.6.0 + /// + BooleanOr? ImplementationProvider { get; set; } + + /// + /// The server provides color provider support. + /// + /// Since 3.6.0 + /// + BooleanOr? ColorProvider { get; set; } + + /// + /// The server provides Call Hierarchy support. + /// + BooleanOr? CallHierarchyProvider { get; set; } + + /// + /// The server provides Call Hierarchy support. + /// + SemanticTokensRegistrationOptions.StaticOptions? SemanticTokensProvider { get; set; } + + /// + /// The server provides Call Hierarchy support. + /// + MonikerRegistrationOptions.StaticOptions? MonikerProvider { get; set; } + + /// + /// The server provides folding provider support. + /// + /// Since 3.10.0 + /// + BooleanOr? FoldingRangeProvider { get; set; } + + /// + /// The server provides selection range support. + /// + /// Since 3.15.0 + /// + BooleanOr? SelectionRangeProvider { get; set; } + + /// + /// The server provides on type rename support. + /// + /// Since 3.16.0 + /// + BooleanOr? LinkedEditingRangeProvider { get; set; } + + /// + /// The server provides folding provider support. + /// + /// Since 3.14.0 + /// + BooleanOr? DeclarationProvider { get; set; } + } +} diff --git a/src/Protocol/Server/Capabilities/IWorkspaceServerCapabilities.cs b/src/Protocol/Server/Capabilities/IWorkspaceServerCapabilities.cs new file mode 100644 index 000000000..cdf221094 --- /dev/null +++ b/src/Protocol/Server/Capabilities/IWorkspaceServerCapabilities.cs @@ -0,0 +1,23 @@ +using System.Collections.Generic; +using Newtonsoft.Json.Linq; +using OmniSharp.Extensions.LanguageServer.Protocol.Models; + +namespace OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities +{ + public interface IWorkspaceServerCapabilities : ICapabilitiesBase + { + /// + /// The server supports workspace folder. + /// + /// Since 3.6.0 + /// + DidChangeWorkspaceFolderRegistrationOptions.StaticOptions? WorkspaceFolders { get; set; } + + /// + /// The server is interested in file notifications/requests. + /// + /// @since 3.16.0 + /// + FileOperationsWorkspaceServerCapabilities? FileOperations { get; set; } + } +} diff --git a/src/Protocol/Server/Capabilities/ServerCapabilities.cs b/src/Protocol/Server/Capabilities/ServerCapabilities.cs index e40214b9c..578440393 100644 --- a/src/Protocol/Server/Capabilities/ServerCapabilities.cs +++ b/src/Protocol/Server/Capabilities/ServerCapabilities.cs @@ -1,8 +1,6 @@ -using System; using System.Collections.Generic; using Newtonsoft.Json.Linq; using OmniSharp.Extensions.LanguageServer.Protocol.Models; -using OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals; using OmniSharp.Extensions.LanguageServer.Protocol.Serialization; namespace OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities @@ -14,7 +12,7 @@ namespace OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities /// Is not a record on purpose... /// get; set; for the moment, to allow for replacement of values. /// - public class ServerCapabilities : CapabilitiesBase + public class ServerCapabilities : CapabilitiesBase, IServerCapabilities { /// /// Defines how text documents are synced. Is either a detailed structure defining each notification or @@ -153,21 +151,18 @@ public class ServerCapabilities : CapabilitiesBase /// The server provides Call Hierarchy support. /// [Optional] - [Obsolete(Constants.Proposal)] public BooleanOr? CallHierarchyProvider { get; set; } /// /// The server provides Call Hierarchy support. /// [Optional] - [Obsolete(Constants.Proposal)] public SemanticTokensRegistrationOptions.StaticOptions? SemanticTokensProvider { get; set; } /// /// The server provides Call Hierarchy support. /// [Optional] - [Obsolete(Constants.Proposal)] public MonikerRegistrationOptions.StaticOptions? MonikerProvider { get; set; } /// @@ -190,7 +185,6 @@ public class ServerCapabilities : CapabilitiesBase /// Since 3.16.0 /// [Optional] - [Obsolete(Constants.Proposal)] public BooleanOr? LinkedEditingRangeProvider { get; set; } /// diff --git a/src/Protocol/Server/Capabilities/WorkspaceServerCapabilities.cs b/src/Protocol/Server/Capabilities/WorkspaceServerCapabilities.cs index 07c364705..2e62af17c 100644 --- a/src/Protocol/Server/Capabilities/WorkspaceServerCapabilities.cs +++ b/src/Protocol/Server/Capabilities/WorkspaceServerCapabilities.cs @@ -1,11 +1,9 @@ -using System; -using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; using OmniSharp.Extensions.LanguageServer.Protocol.Models; using OmniSharp.Extensions.LanguageServer.Protocol.Serialization; namespace OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities { - public class WorkspaceServerCapabilities : CapabilitiesBase + public class WorkspaceServerCapabilities : CapabilitiesBase, IWorkspaceServerCapabilities { /// /// The server supports workspace folder. @@ -18,10 +16,9 @@ public class WorkspaceServerCapabilities : CapabilitiesBase /// /// The server is interested in file notifications/requests. /// - /// @since 3.16.0 - proposed state + /// @since 3.16.0 /// [Optional] - [Obsolete(Constants.Proposal)] public FileOperationsWorkspaceServerCapabilities? FileOperations { get; set; } } } diff --git a/src/Server/LanguageServerOptions.cs b/src/Protocol/Server/LanguageServerOptions.cs similarity index 97% rename from src/Server/LanguageServerOptions.cs rename to src/Protocol/Server/LanguageServerOptions.cs index 4f332b634..ee7d9fab4 100644 --- a/src/Server/LanguageServerOptions.cs +++ b/src/Protocol/Server/LanguageServerOptions.cs @@ -6,17 +6,12 @@ using OmniSharp.Extensions.LanguageServer.Protocol; using OmniSharp.Extensions.LanguageServer.Protocol.Models; using OmniSharp.Extensions.LanguageServer.Protocol.Server; -using OmniSharp.Extensions.LanguageServer.Shared; +// ReSharper disable once CheckNamespace namespace OmniSharp.Extensions.LanguageServer.Server { public class LanguageServerOptions : LanguageProtocolRpcOptionsBase, ILanguageServerRegistry { - public LanguageServerOptions() - { - WithAssemblies(typeof(LanguageServerOptions).Assembly, typeof(LspRequestRouter).Assembly); - } - public ServerInfo? ServerInfo { get; set; } ILanguageServerRegistry IJsonRpcHandlerRegistry.AddHandler(string method, IJsonRpcHandler handler, JsonRpcHandlerOptions? options) => diff --git a/src/Protocol/TextDocumentNames.cs b/src/Protocol/TextDocumentNames.cs index bc55214a3..a447bf7e3 100644 --- a/src/Protocol/TextDocumentNames.cs +++ b/src/Protocol/TextDocumentNames.cs @@ -1,5 +1,3 @@ -using System; - namespace OmniSharp.Extensions.LanguageServer.Protocol { public static class TextDocumentNames @@ -37,14 +35,14 @@ public static class TextDocumentNames public const string WillSaveWaitUntil = "textDocument/willSaveWaitUntil"; public const string PublishDiagnostics = "textDocument/publishDiagnostics"; public const string FoldingRange = "textDocument/foldingRange"; - [Obsolete(Constants.Proposal)] public const string PrepareCallHierarchy = "textDocument/prepareCallHierarchy"; - [Obsolete(Constants.Proposal)] public const string CallHierarchyIncoming = "callHierarchy/incomingCalls"; - [Obsolete(Constants.Proposal)] public const string CallHierarchyOutgoing = "callHierarchy/outgoingCalls"; - [Obsolete(Constants.Proposal)] public const string SemanticTokensRegistration = "textDocument/semanticTokens"; - [Obsolete(Constants.Proposal)] public const string SemanticTokensFull = "textDocument/semanticTokens/full"; - [Obsolete(Constants.Proposal)] public const string SemanticTokensFullDelta = "textDocument/semanticTokens/full/delta"; - [Obsolete(Constants.Proposal)] public const string SemanticTokensRange = "textDocument/semanticTokens/range"; - [Obsolete(Constants.Proposal)] public const string Moniker = "textDocument/moniker"; - [Obsolete(Constants.Proposal)] public const string LinkedEditingRange = "textDocument/linkedEditingRange"; + public const string PrepareCallHierarchy = "textDocument/prepareCallHierarchy"; + public const string CallHierarchyIncoming = "callHierarchy/incomingCalls"; + public const string CallHierarchyOutgoing = "callHierarchy/outgoingCalls"; + public const string SemanticTokensRegistration = "textDocument/semanticTokens"; + public const string SemanticTokensFull = "textDocument/semanticTokens/full"; + public const string SemanticTokensFullDelta = "textDocument/semanticTokens/full/delta"; + public const string SemanticTokensRange = "textDocument/semanticTokens/range"; + public const string Moniker = "textDocument/moniker"; + public const string LinkedEditingRange = "textDocument/linkedEditingRange"; } } diff --git a/src/Protocol/WindowNames.cs b/src/Protocol/WindowNames.cs index d5146e8dd..b6a78160f 100644 --- a/src/Protocol/WindowNames.cs +++ b/src/Protocol/WindowNames.cs @@ -1,5 +1,3 @@ -using System; - namespace OmniSharp.Extensions.LanguageServer.Protocol { public static class WindowNames @@ -7,7 +5,6 @@ public static class WindowNames public const string LogMessage = "window/logMessage"; public const string TelemetryEvent = "telemetry/event"; public const string ShowMessage = "window/showMessage"; - [Obsolete(Constants.Proposal)] public const string ShowDocument = "window/showDocument"; public const string ShowMessageRequest = "window/showMessageRequest"; public const string WorkDoneProgressCreate = "window/workDoneProgress/create"; diff --git a/src/Protocol/WorkspaceNames.cs b/src/Protocol/WorkspaceNames.cs index 0df77e5c6..90f5f6b31 100644 --- a/src/Protocol/WorkspaceNames.cs +++ b/src/Protocol/WorkspaceNames.cs @@ -1,5 +1,3 @@ -using System; - namespace OmniSharp.Extensions.LanguageServer.Protocol { public static class WorkspaceNames @@ -12,21 +10,13 @@ public static class WorkspaceNames public const string ExecuteCommand = "workspace/executeCommand"; public const string WorkspaceSymbol = "workspace/symbol"; public const string WorkspaceFolders = "workspace/workspaceFolders"; - [Obsolete(Constants.Proposal)] public const string SemanticTokensRefresh = "workspace/semanticTokens/refresh"; - [Obsolete(Constants.Proposal)] public const string CodeLensRefresh = "workspace/codeLens/refresh"; - [Obsolete(Constants.Proposal)] public const string WillCreateFiles = "workspace/willCreateFiles"; - [Obsolete(Constants.Proposal)] public const string DidCreateFiles = "workspace/didCreateFiles"; - [Obsolete(Constants.Proposal)] public const string WillRenameFiles = "workspace/willRenameFiles"; - [Obsolete(Constants.Proposal)] public const string DidRenameFiles = "workspace/didRenameFiles"; - [Obsolete(Constants.Proposal)] public const string WillDeleteFiles = "workspace/willDeleteFiles"; - [Obsolete(Constants.Proposal)] public const string DidDeleteFiles = "workspace/didDeleteFiles"; } diff --git a/src/Server/LanguageServer.cs b/src/Server/LanguageServer.cs index df910c960..123958bdf 100644 --- a/src/Server/LanguageServer.cs +++ b/src/Server/LanguageServer.cs @@ -273,7 +273,7 @@ async Task IRequestHandler(_serializer.JsonSerializer); @@ -387,9 +388,10 @@ out WindowClientCapabilities windowCapabilities _supportedCapabilities.Add(supportedCapabilities); ClientSettings = new InitializeParams(request, clientCapabilities) { Capabilities = clientCapabilities }; - textDocumentCapabilities = ClientSettings.Capabilities.TextDocument ??= new TextDocumentClientCapabilities(); - workspaceCapabilities = ClientSettings.Capabilities.Workspace ??= new WorkspaceClientCapabilities(); - windowCapabilities = ClientSettings.Capabilities.Window ??= new WindowClientCapabilities(); + textDocumentCapabilities = ClientSettings.Capabilities.TextDocument ??= _serializer.DeserializeObject("{}"); + workspaceCapabilities = ClientSettings.Capabilities.Workspace ??= _serializer.DeserializeObject("{}"); + windowCapabilities = ClientSettings.Capabilities.Window ??= _serializer.DeserializeObject("{}"); + generalCapabilities = ClientSettings.Capabilities.General ??= _serializer.DeserializeObject("{}"); WorkDoneManager.Initialized(windowCapabilities); _collection.Initialize(); } @@ -398,7 +400,8 @@ private InitializeResult ReadServerCapabilities( ClientCapabilities clientCapabilities, WindowClientCapabilities windowCapabilities, TextDocumentClientCapabilities textDocumentCapabilities ) { - var serverCapabilities = new ServerCapabilities(); + // little hack to ensure that we get the proposed capabilities if proposals are turned on + var serverCapabilities = _serializer.DeserializeObject("{}"); var serverCapabilitiesObject = new JObject(); foreach (var converter in _registrationOptionsConverters) diff --git a/src/Server/LanguageServerOptionsExtensions.cs b/src/Server/LanguageServerOptionsExtensions.cs index aef766c6c..6715949e6 100644 --- a/src/Server/LanguageServerOptionsExtensions.cs +++ b/src/Server/LanguageServerOptionsExtensions.cs @@ -4,6 +4,7 @@ using Microsoft.Extensions.Logging; using OmniSharp.Extensions.JsonRpc; using OmniSharp.Extensions.LanguageServer.Protocol.Models; +using OmniSharp.Extensions.LanguageServer.Protocol.Serialization; using OmniSharp.Extensions.LanguageServer.Protocol.Server; namespace OmniSharp.Extensions.LanguageServer.Server @@ -16,16 +17,13 @@ public static LanguageServerOptions WithRequestProcessIdentifier(this LanguageSe return options; } - public static LanguageServerOptions WithSerializer(this LanguageServerOptions options, ISerializer serializer) + public static LanguageServerOptions WithSerializer(this LanguageServerOptions options, LspSerializer serializer) { options.Serializer = serializer; return options; } - public static LanguageServerOptions WithReceiver( - this LanguageServerOptions options, - IReceiver serverReceiver - ) + public static LanguageServerOptions WithReceiver(this LanguageServerOptions options, IReceiver serverReceiver) { options.Services.AddSingleton(serverReceiver); return options; diff --git a/src/Server/LanguageServerServiceCollectionExtensions.cs b/src/Server/LanguageServerServiceCollectionExtensions.cs index 52f299fc0..1f15b71bf 100644 --- a/src/Server/LanguageServerServiceCollectionExtensions.cs +++ b/src/Server/LanguageServerServiceCollectionExtensions.cs @@ -24,6 +24,7 @@ public static class LanguageServerServiceCollectionExtensions { internal static IContainer AddLanguageServerInternals(this IContainer container, LanguageServerOptions options, IServiceProvider? outerServiceProvider) { + options.WithAssemblies(typeof(LanguageServerServiceCollectionExtensions).Assembly, typeof(LspRequestRouter).Assembly); container = container.AddLanguageProtocolInternals(options); container.RegisterMany( reuse: Reuse.Singleton, diff --git a/src/Server/Pipelines/SemanticTokensDeltaPipeline.cs b/src/Server/Pipelines/SemanticTokensDeltaPipeline.cs index 04bd3291b..13240bf60 100644 --- a/src/Server/Pipelines/SemanticTokensDeltaPipeline.cs +++ b/src/Server/Pipelines/SemanticTokensDeltaPipeline.cs @@ -4,11 +4,10 @@ using System.Threading.Tasks; using MediatR; using OmniSharp.Extensions.LanguageServer.Protocol; -using OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals; +using OmniSharp.Extensions.LanguageServer.Protocol.Models; namespace OmniSharp.Extensions.LanguageServer.Server.Pipelines { - [Obsolete(Constants.Proposal)] class SemanticTokensDeltaPipeline : IPipelineBehavior where TRequest : notnull { diff --git a/src/Server/Server.csproj b/src/Server/Server.csproj index f7c843a24..572abd66d 100644 --- a/src/Server/Server.csproj +++ b/src/Server/Server.csproj @@ -8,9 +8,14 @@ - - - - + + + + + + + + <_Parameter1>OmniSharp.Extensions.LanguageProtocol.Testing, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f + diff --git a/src/Shared/Shared.csproj b/src/Shared/Shared.csproj index 5b358ae79..b253a26d1 100644 --- a/src/Shared/Shared.csproj +++ b/src/Shared/Shared.csproj @@ -7,7 +7,12 @@ Shared classes for language server protocol - + + + + + <_Parameter1>OmniSharp.Extensions.LanguageProtocol.Testing, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f + <_Parameter1>OmniSharp.Extensions.LanguageServer, PublicKey=0024000004800000940000000602000000240000525341310004000001000100391db875e68eb4bfef49ce14313b9e13f2cd3cc89eb273bbe6c11a55044c7d4f566cf092e1c77ef9e7c75b1496ae7f95d925938f5a01793dd8d9f99ae0a7595779b71b971287d7d7b5960d052078d14f5ce1a85ea5c9fb2f59ac735ff7bc215cab469b7c3486006860bad6f4c3b5204ea2f28dd4e1d05e2cca462cfd593b9f9f diff --git a/src/Testing/Testing.csproj b/src/Testing/Testing.csproj index 9d4212633..279eb835f 100644 --- a/src/Testing/Testing.csproj +++ b/src/Testing/Testing.csproj @@ -9,9 +9,9 @@ - - - - + + + + diff --git a/test/Dap.Tests/Dap.Tests.csproj b/test/Dap.Tests/Dap.Tests.csproj index 03f340b2c..91db07c80 100644 --- a/test/Dap.Tests/Dap.Tests.csproj +++ b/test/Dap.Tests/Dap.Tests.csproj @@ -10,6 +10,7 @@ + diff --git a/test/Lsp.Tests/ClientCapabilityProviderTests.cs b/test/Lsp.Tests/ClientCapabilityProviderTests.cs index 0220c915d..4d0000117 100644 --- a/test/Lsp.Tests/ClientCapabilityProviderTests.cs +++ b/test/Lsp.Tests/ClientCapabilityProviderTests.cs @@ -10,7 +10,7 @@ using OmniSharp.Extensions.LanguageServer.Protocol; using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; using OmniSharp.Extensions.LanguageServer.Protocol.Document; -using OmniSharp.Extensions.LanguageServer.Protocol.Document.Proposals; +using OmniSharp.Extensions.LanguageServer.Protocol.Document; using OmniSharp.Extensions.LanguageServer.Protocol.Models; using OmniSharp.Extensions.LanguageServer.Protocol.Shared; using OmniSharp.Extensions.LanguageServer.Protocol.Workspace; diff --git a/test/Lsp.Tests/FoundationTests.cs b/test/Lsp.Tests/FoundationTests.cs index 08659c1d2..22a1bcfab 100644 --- a/test/Lsp.Tests/FoundationTests.cs +++ b/test/Lsp.Tests/FoundationTests.cs @@ -18,7 +18,7 @@ using OmniSharp.Extensions.LanguageServer.Protocol; using OmniSharp.Extensions.LanguageServer.Protocol.Client; using OmniSharp.Extensions.LanguageServer.Protocol.Document; -using OmniSharp.Extensions.LanguageServer.Protocol.Document.Proposals; +using OmniSharp.Extensions.LanguageServer.Protocol.Document; using OmniSharp.Extensions.LanguageServer.Protocol.Models; using OmniSharp.Extensions.LanguageServer.Protocol.Progress; using OmniSharp.Extensions.LanguageServer.Protocol.Server; diff --git a/test/Lsp.Tests/Integration/DynamicRegistrationTests.cs b/test/Lsp.Tests/Integration/DynamicRegistrationTests.cs index 2091a739b..60df90996 100644 --- a/test/Lsp.Tests/Integration/DynamicRegistrationTests.cs +++ b/test/Lsp.Tests/Integration/DynamicRegistrationTests.cs @@ -13,9 +13,9 @@ using OmniSharp.Extensions.LanguageServer.Protocol; using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; using OmniSharp.Extensions.LanguageServer.Protocol.Document; -using OmniSharp.Extensions.LanguageServer.Protocol.Document.Proposals; +using OmniSharp.Extensions.LanguageServer.Protocol.Document; +using OmniSharp.Extensions.LanguageServer.Protocol.Models; using OmniSharp.Extensions.LanguageServer.Protocol.Models; -using OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals; using OmniSharp.Extensions.LanguageServer.Server; using TestingUtils; using Xunit; diff --git a/test/Lsp.Tests/Integration/Fixtures/IConfigureLanguageClientOptions.cs b/test/Lsp.Tests/Integration/Fixtures/IConfigureLanguageClientOptions.cs index 9a3975c4c..59b2e8b35 100644 --- a/test/Lsp.Tests/Integration/Fixtures/IConfigureLanguageClientOptions.cs +++ b/test/Lsp.Tests/Integration/Fixtures/IConfigureLanguageClientOptions.cs @@ -6,4 +6,4 @@ public interface IConfigureLanguageClientOptions { void Configure(LanguageClientOptions options); } -} \ No newline at end of file +} diff --git a/test/Lsp.Tests/Integration/MonikerTests.cs b/test/Lsp.Tests/Integration/MonikerTests.cs index 5a455115c..fa34b3444 100644 --- a/test/Lsp.Tests/Integration/MonikerTests.cs +++ b/test/Lsp.Tests/Integration/MonikerTests.cs @@ -7,9 +7,9 @@ using OmniSharp.Extensions.JsonRpc.Testing; using OmniSharp.Extensions.LanguageProtocol.Testing; using OmniSharp.Extensions.LanguageServer.Client; -using OmniSharp.Extensions.LanguageServer.Protocol.Document.Proposals; +using OmniSharp.Extensions.LanguageServer.Protocol.Document; +using OmniSharp.Extensions.LanguageServer.Protocol.Models; using OmniSharp.Extensions.LanguageServer.Protocol.Models; -using OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals; using OmniSharp.Extensions.LanguageServer.Server; using Serilog.Events; using TestingUtils; diff --git a/test/Lsp.Tests/Integration/PartialItemTests.cs b/test/Lsp.Tests/Integration/PartialItemTests.cs index ce4965c82..e7d8ea958 100644 --- a/test/Lsp.Tests/Integration/PartialItemTests.cs +++ b/test/Lsp.Tests/Integration/PartialItemTests.cs @@ -6,9 +6,9 @@ using System.Threading.Tasks; using FluentAssertions; using Lsp.Tests.Integration.Fixtures; -using OmniSharp.Extensions.LanguageServer.Protocol.Document.Proposals; +using OmniSharp.Extensions.LanguageServer.Protocol.Document; +using OmniSharp.Extensions.LanguageServer.Protocol.Models; using OmniSharp.Extensions.LanguageServer.Protocol.Models; -using OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals; using OmniSharp.Extensions.LanguageServer.Server; using TestingUtils; using Xunit; diff --git a/test/Lsp.Tests/Integration/ProposalTests.cs b/test/Lsp.Tests/Integration/ProposalTests.cs new file mode 100644 index 000000000..c0f593d7c --- /dev/null +++ b/test/Lsp.Tests/Integration/ProposalTests.cs @@ -0,0 +1,70 @@ +using System; +using System.Reactive; +using System.Reactive.Disposables; +using System.Reactive.Linq; +using System.Reactive.Threading.Tasks; +using System.Threading.Tasks; +using FluentAssertions; +using Lsp.Tests.Integration.Fixtures; +using Microsoft.Extensions.DependencyInjection; +using NSubstitute; +using OmniSharp.Extensions.JsonRpc.Testing; +using OmniSharp.Extensions.LanguageProtocol.Testing; +using OmniSharp.Extensions.LanguageServer.Protocol; +using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; +using OmniSharp.Extensions.LanguageServer.Protocol.Models; +using OmniSharp.Extensions.LanguageServer.Protocol.Serialization; +using OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities; +using TestingUtils; +using Xunit; +using Xunit.Abstractions; + +namespace Lsp.Tests.Integration +{ + public class ProposalTests : LanguageProtocolTestBase + { + public ProposalTests(ITestOutputHelper testOutputHelper) : base(new JsonRpcTestOptions().ConfigureForXUnit(testOutputHelper)) + { + } + + [RetryFact] + public async Task Server_Should_Deserialize_Capabilities_As_Proposal_Types() + { + var (_, server) = await Initialize( + options => { + options.EnableProposals().EnableAllCapabilities(); + }, options => { + options.EnableProposals(); + } + ); + + server.ServerSettings.Capabilities.Should().BeOfType(); + server.ServerSettings.Capabilities.Workspace.Should().BeOfType(); + server.ClientSettings.Capabilities.Should().BeOfType(); + server.ClientSettings.Capabilities!.General.Should().BeOfType(); + server.ClientSettings.Capabilities!.TextDocument.Should().BeOfType(); + server.ClientSettings.Capabilities!.Window.Should().BeOfType(); + server.ClientSettings.Capabilities!.Workspace.Should().BeOfType(); + } + + [RetryFact] + public async Task Client_Should_Deserialize_Capabilities_As_Proposal_Types() + { + var (client, _) = await Initialize( + options => { + options.EnableProposals().EnableAllCapabilities(); + }, options => { + options.EnableProposals(); + } + ); + + client.ServerSettings.Capabilities.Should().BeOfType(); + client.ServerSettings.Capabilities.Workspace.Should().BeOfType(); + client.ClientSettings.Capabilities.Should().BeOfType(); + client.ClientSettings.Capabilities!.General.Should().BeOfType(); + client.ClientSettings.Capabilities!.TextDocument.Should().BeOfType(); + client.ClientSettings.Capabilities!.Window.Should().BeOfType(); + client.ClientSettings.Capabilities!.Workspace.Should().BeOfType(); + } + } +} diff --git a/test/Lsp.Tests/Integration/TypedCallHierarchyTests.cs b/test/Lsp.Tests/Integration/TypedCallHierarchyTests.cs index 2ae0b2ace..d98e35252 100644 --- a/test/Lsp.Tests/Integration/TypedCallHierarchyTests.cs +++ b/test/Lsp.Tests/Integration/TypedCallHierarchyTests.cs @@ -14,9 +14,9 @@ using OmniSharp.Extensions.LanguageProtocol.Testing; using OmniSharp.Extensions.LanguageServer.Protocol; using OmniSharp.Extensions.LanguageServer.Protocol.Document; -using OmniSharp.Extensions.LanguageServer.Protocol.Document.Proposals; +using OmniSharp.Extensions.LanguageServer.Protocol.Document; +using OmniSharp.Extensions.LanguageServer.Protocol.Models; using OmniSharp.Extensions.LanguageServer.Protocol.Models; -using OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals; using Serilog.Events; using TestingUtils; using Xunit; diff --git a/test/Lsp.Tests/Lsp.Tests.csproj b/test/Lsp.Tests/Lsp.Tests.csproj index c0b29fcfb..46970d637 100644 --- a/test/Lsp.Tests/Lsp.Tests.csproj +++ b/test/Lsp.Tests/Lsp.Tests.csproj @@ -11,6 +11,8 @@ + + @@ -19,12 +21,4 @@ - - - - - - MSBuild:GenerateCodeFromAttributes - - diff --git a/test/Lsp.Tests/SemanticTokensDocumentTests.cs b/test/Lsp.Tests/SemanticTokensDocumentTests.cs index 04a343cb6..0e780a36f 100644 --- a/test/Lsp.Tests/SemanticTokensDocumentTests.cs +++ b/test/Lsp.Tests/SemanticTokensDocumentTests.cs @@ -8,9 +8,9 @@ using FluentAssertions; using Microsoft.Extensions.Logging; using NSubstitute; -using OmniSharp.Extensions.LanguageServer.Protocol.Document.Proposals; +using OmniSharp.Extensions.LanguageServer.Protocol.Document; +using OmniSharp.Extensions.LanguageServer.Protocol.Models; using OmniSharp.Extensions.LanguageServer.Protocol.Models; -using OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals; using Xunit; using Xunit.Abstractions; using Range = OmniSharp.Extensions.LanguageServer.Protocol.Models.Range; diff --git a/test/Lsp.Tests/SemanticTokensLegendTests.cs b/test/Lsp.Tests/SemanticTokensLegendTests.cs index 50c242d1b..48f962c46 100644 --- a/test/Lsp.Tests/SemanticTokensLegendTests.cs +++ b/test/Lsp.Tests/SemanticTokensLegendTests.cs @@ -2,7 +2,7 @@ using FluentAssertions; using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; using OmniSharp.Extensions.LanguageServer.Protocol.Models; -using OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals; +using OmniSharp.Extensions.LanguageServer.Protocol.Models; using OmniSharp.Extensions.LanguageServer.Protocol.Serialization; using OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities; using Xunit;