Skip to content

Commit cfc55d3

Browse files
Updated latest version of the 0.16 spec
1 parent 9407981 commit cfc55d3

File tree

65 files changed

+723
-537
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

65 files changed

+723
-537
lines changed

Directory.Build.targets

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
<PackageReference Update="xunit" Version="2.4.1"/>
2727
<PackageReference Update="FluentAssertions" Version="5.10.2"/>
2828
<PackageReference Update="NSubstitute" Version="4.2.1"/>
29-
<PackageReference Update="Autofac" Version="4.8.1"/>
30-
<PackageReference Update="Autofac.Extensions.DependencyInjection" Version="4.3.1"/>
29+
<PackageReference Update="DryIoc.dll" Version="4.2.5" />
30+
<PackageReference Update="DryIoc.Microsoft.DependencyInjection " Version="4.0.0" />
3131
<PackageReference Update="Serilog.Extensions.Logging" Version="2.0.2"/>
3232
<PackageReference Update="Serilog.Sinks.XUnit" Version="1.0.21"/>
3333
<PackageReference Update="XunitXml.TestLogger" Version="2.1.26"/>

sample/SampleServer/Program.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@ static async Task MainAsync(string[] args)
3737

3838
var server = await LanguageServer.From(options =>
3939
options
40-
.WithInput(Console.OpenStandardInput())
41-
.WithOutput(Console.OpenStandardOutput())
4240
.ConfigureLogging(x => x
4341
.AddSerilog()
4442
.AddLanguageProtocolLogging()
@@ -48,7 +46,7 @@ static async Task MainAsync(string[] args)
4846
.WithHandler<FoldingRangeHandler>()
4947
.WithHandler<MyWorkspaceSymbolsHandler>()
5048
.WithHandler<MyDocumentSymbolHandler>()
51-
.WithHandler<SemanticTokens>()
49+
.WithHandler<SemanticTokensHandler>()
5250
.WithServices(x => x.AddLogging(b => b.SetMinimumLevel(LogLevel.Trace)))
5351
.WithServices(services => {
5452
services.AddSingleton(provider => {

sample/SampleServer/SemanticTokens.cs renamed to sample/SampleServer/SemanticTokensHandler.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,45 +7,45 @@
77
using Microsoft.Extensions.Logging;
88
using Newtonsoft.Json;
99
using OmniSharp.Extensions.LanguageServer.Protocol;
10+
using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities;
1011
using OmniSharp.Extensions.LanguageServer.Protocol.Document.Proposals;
1112
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
1213
using OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals;
1314

1415
namespace SampleServer
1516
{
1617
#pragma warning disable 618
17-
public class SemanticTokens : SemanticTokensHandler
18+
public class SemanticTokensHandler : SemanticTokensHandlerBase
1819
{
1920
private readonly ILogger _logger;
2021

21-
public SemanticTokens(ILogger<SemanticTokens> logger) : base(new SemanticTokensRegistrationOptions() {
22+
public SemanticTokensHandler(ILogger<SemanticTokensHandler> logger) : base(new SemanticTokensRegistrationOptions() {
2223
DocumentSelector = DocumentSelector.ForLanguage("csharp"),
2324
Legend = new SemanticTokensLegend(),
24-
DocumentProvider = new Supports<SemanticTokensDocumentProviderOptions>(true,
25-
new SemanticTokensDocumentProviderOptions() {
26-
Edits = true
27-
}),
28-
RangeProvider = true
25+
Full = new SemanticTokensCapabilityRequestFull() {
26+
Delta = true
27+
},
28+
Range = true
2929
})
3030
{
3131
_logger = logger;
3232
}
3333

34-
public override async Task<OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokens> Handle(
34+
public override async Task<SemanticTokens> Handle(
3535
SemanticTokensParams request, CancellationToken cancellationToken)
3636
{
3737
var result = await base.Handle(request, cancellationToken);
3838
return result;
3939
}
4040

41-
public override async Task<OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokens> Handle(
41+
public override async Task<SemanticTokens> Handle(
4242
SemanticTokensRangeParams request, CancellationToken cancellationToken)
4343
{
4444
var result = await base.Handle(request, cancellationToken);
4545
return result;
4646
}
4747

48-
public override async Task<SemanticTokensOrSemanticTokensEdits> Handle(SemanticTokensEditsParams request,
48+
public override async Task<SemanticTokensFullOrDelta> Handle(SemanticTokensDeltaParams request,
4949
CancellationToken cancellationToken)
5050
{
5151
var result = await base.Handle(request, cancellationToken);

src/Client/LanguageClient.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public class LanguageClient : JsonRpcServerBase, ILanguageClient
4848
private readonly object _initializationOptions;
4949
private readonly IWorkspaceFoldersManager _workspaceFoldersManager;
5050
private readonly DocumentUri _rootUri;
51-
private readonly InitializeTrace _trace;
51+
private readonly TraceValue _traceValue;
5252
private readonly IRegistrationManager _registrationManager;
5353
private readonly ClientCapabilities _clientCapabilities;
5454
private readonly IProgressManager _progressManager;
@@ -121,7 +121,7 @@ internal LanguageClient(LanguageClientOptions options) : base(options)
121121
// _initializedDelegates = initializedDelegates;
122122
_startedDelegates = options.StartedDelegates;
123123
_rootUri = options.RootUri;
124-
_trace = options.Trace;
124+
_traceValue = options.TraceValue;
125125
_initializationOptions = options.InitializationOptions;
126126

127127
services.AddSingleton<IOutputHandler>(_ =>
@@ -220,7 +220,7 @@ internal LanguageClient(LanguageClientOptions options) : base(options)
220220
public async Task Initialize(CancellationToken token)
221221
{
222222
var @params = new InitializeParams {
223-
Trace = _trace,
223+
TraceValue = _traceValue,
224224
Capabilities = _clientCapabilities,
225225
ClientInfo = _clientInfo,
226226
RootUri = _rootUri,

src/Client/LanguageClientOptions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public string RootPath
4444
set => RootUri = DocumentUri.FromFileSystemPath(value);
4545
}
4646

47-
public InitializeTrace Trace { get; set; }
47+
public TraceValue TraceValue { get; set; }
4848

4949
public object InitializationOptions { get; set; }
5050

src/Client/LanguageClientOptionsExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,9 @@ public static LanguageClientOptions WithRootPath(this LanguageClientOptions opti
5656
return options;
5757
}
5858

59-
public static LanguageClientOptions WithTrace(this LanguageClientOptions options, InitializeTrace trace)
59+
public static LanguageClientOptions WithTrace(this LanguageClientOptions options, TraceValue traceValue)
6060
{
61-
options.Trace = trace;
61+
options.TraceValue = traceValue;
6262
return options;
6363
}
6464

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
using System;
2+
using OmniSharp.Extensions.LanguageServer.Protocol.Document.Proposals;
3+
4+
namespace OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities
5+
{
6+
/// <summary>
7+
/// Capabilities specific to the `textDocument/callHierarchy`.
8+
///
9+
/// @since 3.16.0
10+
/// </summary>
11+
[Obsolete(Constants.Proposal)]
12+
public class CallHierarchyCapability : DynamicCapability, ConnectedCapability<ICallHierarchyHandler>,
13+
ConnectedCapability<ICallHierarchyIncomingHandler>, ConnectedCapability<ICallHierarchyOutgoingHandler>
14+
{
15+
}
16+
}

src/Protocol/Client/Capabilities/CompletionItemCapability.cs

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,14 @@ public class CompletionItemCapability
3030
public Container<MarkupKind> DocumentationFormat { get; set; }
3131

3232
/// <summary>
33-
/// Client supports the deprecated property on a completion item.
34-
/// </summary>
33+
/// Client supports the deprecated property on a completion item.
34+
/// </summary>
3535
[Optional]
3636
public bool DeprecatedSupport { get; set; }
3737

3838
/// <summary>
39-
/// Client supports the preselect property on a completion item.
40-
/// </summary>
39+
/// Client supports the preselect property on a completion item.
40+
/// </summary>
4141
[Optional]
4242
public bool PreselectSupport { get; set; }
4343

@@ -51,5 +51,23 @@ public class CompletionItemCapability
5151
/// </summary>
5252
[Optional]
5353
public Supports<CompletionItemTagSupportCapability> TagSupport { get; set; }
54+
55+
/// <summary>
56+
/// Client support insert replace edit to control different behavior if a
57+
/// completion item is inserted in the text or should replace text.
58+
///
59+
/// @since 3.16.0 - Proposed state
60+
/// </summary>
61+
[Optional]
62+
public bool InsertReplaceSupport { get; set; }
63+
64+
/// <summary>
65+
/// Client supports to resolve `additionalTextEdits` in the `completionItem/resolve`
66+
/// request. So servers can postpone computing them.
67+
///
68+
/// @since 3.16.0 - Proposed state
69+
/// </summary>
70+
[Optional]
71+
public bool ResolveAdditionalTextEditsSupport { get; set; }
5472
}
5573
}
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,24 @@
1-
using System;
1+
using System;
22
using OmniSharp.Extensions.LanguageServer.Protocol.Document.Proposals;
33
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
44
using OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals;
55

66
namespace OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities
77
{
8-
/// <summary>
9-
/// Capabilities specific to the `textDocument/callHierarchy`.
10-
///
11-
/// @since 3.16.0
12-
/// </summary>
13-
[Obsolete(Constants.Proposal)]
14-
public class CallHierarchyCapability : DynamicCapability, ConnectedCapability<ICallHierarchyHandler>,
15-
ConnectedCapability<ICallHierarchyIncomingHandler>, ConnectedCapability<ICallHierarchyOutgoingHandler>
16-
{
17-
}
18-
198
/// <summary>
209
/// Capabilities specific to the `textDocument/semanticTokens`
2110
///
2211
/// @since 3.16.0
2312
/// </summary>
2413
[Obsolete(Constants.Proposal)]
2514
public class SemanticTokensCapability : DynamicCapability, ConnectedCapability<ISemanticTokensHandler>,
26-
ConnectedCapability<ISemanticTokensEditsHandler>, ConnectedCapability<ISemanticTokensRangeHandler>
15+
ConnectedCapability<ISemanticTokensDeltaHandler>, ConnectedCapability<ISemanticTokensRangeHandler>
2716
{
17+
/// <summary>
18+
/// Which requests the client supports and might send to the server.
19+
/// </summary>
20+
public SemanticTokensCapabilityRequests Requests { get; set; }
21+
2822
/// <summary>
2923
/// The token types that the client supports.
3024
/// </summary>
@@ -34,5 +28,10 @@ public class SemanticTokensCapability : DynamicCapability, ConnectedCapability<I
3428
/// The token modifiers that the client supports.
3529
/// </summary>
3630
public Container<SemanticTokenModifier> TokenModifiers { get; set; }
31+
32+
/// <summary>
33+
/// The formats the clients supports.
34+
/// </summary>
35+
public Container<SemanticTokenFormat> Formats { get; set; }
3736
}
3837
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using OmniSharp.Extensions.LanguageServer.Protocol.Serialization;
2+
3+
namespace OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities
4+
{
5+
/// <summary>
6+
/// The client will send the `textDocument/semanticTokens/full` request if
7+
/// the server provides a corresponding handler.
8+
/// </summary>
9+
public class SemanticTokensCapabilityRequestFull
10+
{
11+
/// <summary>
12+
/// The client will send the `textDocument/semanticTokens/full/delta` request if
13+
/// the server provides a corresponding handler.
14+
/// </summary>
15+
[Optional]
16+
public bool Delta { get; set; }
17+
}
18+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
namespace OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities
2+
{
3+
/// <summary>
4+
/// The client will send the `textDocument/semanticTokens/range` request if
5+
/// the server provides a corresponding handler.
6+
/// </summary>
7+
public class SemanticTokensCapabilityRequestRange
8+
{
9+
}
10+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
2+
using OmniSharp.Extensions.LanguageServer.Protocol.Serialization;
3+
4+
namespace OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities
5+
{
6+
public class SemanticTokensCapabilityRequests
7+
{
8+
/// <summary>
9+
/// The client will send the `textDocument/semanticTokens/range` request if
10+
/// the server provides a corresponding handler.
11+
/// </summary>
12+
[Optional]
13+
public Supports<SemanticTokensCapabilityRequestRange> Range { get; set; }
14+
15+
/// <summary>
16+
/// The client will send the `textDocument/semanticTokens/full` request if
17+
/// the server provides a corresponding handler.
18+
/// </summary>
19+
[Optional]
20+
public Supports<SemanticTokensCapabilityRequestFull> Full { get; set; }
21+
}
22+
}

src/Protocol/Client/Capabilities/SignatureInformationCapability.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,15 @@ public class SignatureInformationCapability
1111
[Optional]
1212
public Container<MarkupKind> DocumentationFormat { get; set; }
1313

14+
[Optional] public SignatureParameterInformationCapability ParameterInformation { get; set; }
15+
16+
/// <summary>
17+
/// The client support the `activeParameter` property on `SignatureInformation`
18+
/// literal.
19+
///
20+
/// @since 3.16.0 - proposed state
21+
/// </summary>
1422
[Optional]
15-
public SignatureParameterInformationCapability ParameterInformation { get; set; }
23+
public bool ActiveParameterSupport { get; set; }
1624
}
1725
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using System.Threading;
2+
using System.Threading.Tasks;
3+
using MediatR;
4+
using OmniSharp.Extensions.JsonRpc;
5+
using OmniSharp.Extensions.JsonRpc.Generation;
6+
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
7+
using OmniSharp.Extensions.LanguageServer.Protocol.Server;
8+
9+
namespace OmniSharp.Extensions.LanguageServer.Protocol.Client
10+
{
11+
[Parallel, Method(GeneralNames.LogTrace, Direction.ServerToClient)]
12+
[GenerateHandlerMethods, GenerateRequestMethods(typeof(IClientLanguageServer), typeof(ILanguageServer))]
13+
public interface ILogTraceHandler : IJsonRpcNotificationHandler<LogTraceParams> { }
14+
15+
public abstract class LogTraceHandler : ILogTraceHandler
16+
{
17+
public abstract Task<Unit> Handle(LogTraceParams request, CancellationToken cancellationToken);
18+
}
19+
}

0 commit comments

Comments
 (0)