Skip to content

Commit 3c64096

Browse files
authored
Merge pull request #1025 from OmniSharp/fix-options-capabilities
Fix RegistrationOptions and Capabilities
2 parents 381075f + 0cba5ef commit 3c64096

31 files changed

+112
-67
lines changed

src/Protocol/Client/Capabilities/ITextDocumentClientCapabilities.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -159,20 +159,20 @@ public interface ITextDocumentClientCapabilities : ICapabilitiesBase
159159
///
160160
/// @since 3.17.0
161161
/// </summary>
162-
Supports<InlineValueWorkspaceClientCapabilities?> InlineValue { get; set; }
162+
Supports<InlineValueClientCapabilities?> InlineValue { get; set; }
163163

164164
/// <summary>
165165
/// Capability specific to the `textDocument/inlayHint` request.
166166
///
167167
/// @since 3.17.0
168168
/// </summary>
169-
Supports<InlayHintWorkspaceClientCapabilities?> InlayHint { get; set; }
169+
Supports<InlayHintClientCapabilities?> InlayHint { get; set; }
170170

171171
/// <summary>
172172
/// Capability specific to the diagnostic pull model.
173173
///
174174
/// @since 3.17.0
175175
/// </summary>
176-
Supports<DiagnosticWorkspaceClientCapabilities?> Diagnostic { get; set; }
176+
Supports<DiagnosticClientCapabilities?> Diagnostic { get; set; }
177177
}
178178
}

src/Protocol/Client/Capabilities/TextDocumentClientCapabilities.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -159,20 +159,20 @@ public class TextDocumentClientCapabilities : CapabilitiesBase, ITextDocumentCli
159159
///
160160
/// @since 3.17.0
161161
/// </summary>
162-
public Supports<InlineValueWorkspaceClientCapabilities?> InlineValue { get; set; }
162+
public Supports<InlineValueClientCapabilities?> InlineValue { get; set; }
163163

164164
/// <summary>
165165
/// Capability specific to the `textDocument/inlayHint` request.
166166
///
167167
/// @since 3.17.0
168168
/// </summary>
169-
public Supports<InlayHintWorkspaceClientCapabilities?> InlayHint { get; set; }
169+
public Supports<InlayHintClientCapabilities?> InlayHint { get; set; }
170170

171171
/// <summary>
172172
/// Capability specific to the diagnostic pull model.
173173
///
174174
/// @since 3.17.0
175175
/// </summary>
176-
public Supports<DiagnosticWorkspaceClientCapabilities?> Diagnostic { get; set; }
176+
public Supports<DiagnosticClientCapabilities?> Diagnostic { get; set; }
177177
}
178178
}

src/Protocol/Client/Capabilities/WorkspaceEditCapability.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
namespace OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities
55
{
6-
[CapabilityKey(nameof(ClientCapabilities.TextDocument), nameof(WorkspaceClientCapabilities.WorkspaceEdit))]
6+
[CapabilityKey(nameof(ClientCapabilities.Workspace), nameof(WorkspaceClientCapabilities.WorkspaceEdit))]
77
public class WorkspaceEditCapability : ICapability
88
{
99
/// <summary>

src/Protocol/Features/Document/CompletionFeature.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,7 @@ public override void WriteJson(JsonWriter writer, CompletionList? value, JsonSer
509509
var items = result["items"].ToObject<IEnumerable<CompletionItem>>(serializer);
510510
return new CompletionList(items, result["isIncomplete"]?.Value<bool>() ?? false)
511511
{
512-
ItemDefaults = result["itemDefaults"]?.ToObject<CompletionListItemDefaults>()
512+
ItemDefaults = result["itemDefaults"]?.ToObject<CompletionListItemDefaults>(serializer)
513513
};
514514
}
515515

src/Protocol/Features/Document/DiagnosticsFeature.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,7 @@ internal WorkspaceDiagnosticReportPartialResult(WorkspaceDiagnosticReport partia
467467

468468
[GenerateRegistrationOptions(nameof(ServerCapabilities.DiagnosticProvider))]
469469
[RegistrationName(TextDocumentNames.Diagnostics)]
470-
public partial class DiagnosticsRegistrationOptions : ITextDocumentRegistrationOptions, IWorkDoneProgressOptions
470+
public partial class DiagnosticsRegistrationOptions : ITextDocumentRegistrationOptions, IWorkDoneProgressOptions, IStaticRegistrationOptions
471471
{
472472
/// <summary>
473473
/// An optional identifier under which the diagnostics are

src/Protocol/Features/Document/InlayHintFeature.cs

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
1313
using OmniSharp.Extensions.LanguageServer.Protocol.Serialization;
1414
using OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters;
15+
using OmniSharp.Extensions.LanguageServer.Protocol.Server;
1516
using OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities;
1617

1718
// ReSharper disable once CheckNamespace
@@ -26,7 +27,7 @@ namespace Models
2627
GenerateHandlerMethods,
2728
GenerateRequestMethods(typeof(ITextDocumentLanguageClient), typeof(ILanguageClient))
2829
]
29-
[RegistrationOptions(typeof(InlayHintRegistrationOptions)), Capability(typeof(InlayHintWorkspaceClientCapabilities))]
30+
[RegistrationOptions(typeof(InlayHintRegistrationOptions)), Capability(typeof(InlayHintClientCapabilities))]
3031
[Resolver(typeof(InlayHint))]
3132
public partial record InlayHintParams : ITextDocumentIdentifierParams, IWorkDoneProgressParams,
3233
IRequest<InlayHintContainer?>
@@ -55,7 +56,7 @@ public partial record InlayHintParams : ITextDocumentIdentifierParams, IWorkDone
5556
[GenerateRequestMethods(typeof(ITextDocumentLanguageClient), typeof(ILanguageClient))]
5657
[GenerateTypedData]
5758
[GenerateContainer]
58-
[Capability(typeof(InlayHintWorkspaceClientCapabilities))]
59+
[Capability(typeof(InlayHintClientCapabilities))]
5960
public partial record InlayHint : ICanBeResolved, IRequest<InlayHint>, IDoesNotParticipateInRegistration
6061
{
6162
/// <summary>
@@ -231,7 +232,7 @@ public override StringOrInlayHintLabelParts ReadJson(
231232
if (reader.TokenType == JsonToken.StartArray)
232233
{
233234
var result = JArray.Load(reader);
234-
return new StringOrInlayHintLabelParts(result.ToObject<Container<InlayHintLabelPart>>());
235+
return new StringOrInlayHintLabelParts(result.ToObject<Container<InlayHintLabelPart>>(serializer));
235236
}
236237

237238
if (reader.TokenType == JsonToken.String)
@@ -265,10 +266,18 @@ public enum InlayHintKind
265266
Parameter = 2
266267
}
267268

269+
[Parallel]
270+
[Method(WorkspaceNames.InlayHintRefresh, Direction.ServerToClient)]
271+
[GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Workspace")]
272+
[GenerateHandlerMethods]
273+
[GenerateRequestMethods(typeof(IWorkspaceLanguageServer), typeof(ILanguageServer))]
274+
[Capability(typeof(InlayHintWorkspaceClientCapabilities))]
275+
public partial record InlayHintRefreshParams : IRequest;
276+
268277
[GenerateRegistrationOptions(nameof(ServerCapabilities.InlayHintProvider))]
269278
[RegistrationOptionsConverter(typeof(InlayHintRegistrationOptionsConverter))]
270279
[RegistrationName(TextDocumentNames.InlayHint)]
271-
public partial class InlayHintRegistrationOptions : ITextDocumentRegistrationOptions, IWorkDoneProgressOptions
280+
public partial class InlayHintRegistrationOptions : ITextDocumentRegistrationOptions, IWorkDoneProgressOptions, IStaticRegistrationOptions
272281
{
273282
/// <summary>
274283
/// The server provides support to resolve additional
@@ -301,7 +310,7 @@ public override StaticOptions Convert(InlayHintRegistrationOptions source)
301310
namespace Client.Capabilities
302311
{
303312
[CapabilityKey(nameof(ClientCapabilities.TextDocument), nameof(TextDocumentClientCapabilities.InlayHint))]
304-
public partial class InlayHintWorkspaceClientCapabilities : DynamicCapability
313+
public partial class InlayHintClientCapabilities : DynamicCapability
305314
{
306315
/// <summary>
307316
/// Indicates which properties a client can resolve lazily on a inlay
@@ -322,6 +331,27 @@ public class InlayHintCapabilityResolveSupport
322331
/// </summary>
323332
public Container<string> Properties { get; set; }
324333
}
334+
335+
/// <summary>
336+
/// Client workspace capabilities specific to inlay hints.
337+
///
338+
/// @since 3.17.0.
339+
/// </summary>
340+
[CapabilityKey(nameof(ClientCapabilities.Workspace), nameof(WorkspaceClientCapabilities.SemanticTokens))]
341+
public class InlayHintWorkspaceClientCapabilities : ICapability
342+
{
343+
/// <summary>
344+
/// Whether the client implementation supports a refresh request sent from
345+
/// the server to the client.
346+
///
347+
/// Note that this event is global and will force the client to refresh all
348+
/// inlay hints currently shown. It should be used with absolute care and
349+
/// is useful for situation where a server for example detects a project wide
350+
/// change that requires such a calculation.
351+
/// </summary>
352+
[Optional]
353+
public bool RefreshSupport { get; set; }
354+
}
325355
}
326356

327357
namespace Document

src/Protocol/Features/Document/InlineValueFeature.cs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ namespace Models
2525
GenerateHandlerMethods,
2626
GenerateRequestMethods(typeof(ITextDocumentLanguageClient), typeof(ILanguageClient))
2727
]
28-
[RegistrationOptions(typeof(InlineValueRegistrationOptions)), Capability(typeof(InlineValueWorkspaceClientCapabilities))]
28+
[RegistrationOptions(typeof(InlineValueRegistrationOptions)), Capability(typeof(InlineValueClientCapabilities))]
2929
public partial record InlineValueParams : ITextDocumentIdentifierParams, IWorkDoneProgressParams,
3030
IRequest<Container<InlineValueBase>?>
3131
{
@@ -69,7 +69,7 @@ public partial record InlineValueContext
6969
[GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Workspace")]
7070
[GenerateHandlerMethods]
7171
[GenerateRequestMethods(typeof(IWorkspaceLanguageServer), typeof(ILanguageServer))]
72-
[Capability(typeof(CodeLensWorkspaceClientCapabilities))]
72+
[Capability(typeof(InlineValueWorkspaceClientCapabilities))]
7373
public partial record InlineValueRefreshParams : IRequest;
7474

7575
[JsonConverter(typeof(Converter))]
@@ -98,7 +98,7 @@ public override InlineValueBase ReadJson(
9898
{
9999
return new InlineValueText()
100100
{
101-
Range = result["range"]!.ToObject<Range?>()!,
101+
Range = result["range"]!.ToObject<Range?>(serializer)!,
102102
Text = result["text"]!.Value<string>()!
103103
};
104104
}
@@ -107,15 +107,15 @@ public override InlineValueBase ReadJson(
107107
{
108108
return new InlineValueVariableLookup()
109109
{
110-
Range = result["range"].ToObject<Range>()!,
110+
Range = result["range"].ToObject<Range>(serializer)!,
111111
VariableName = result["variableName"]!.Value<string>()!,
112112
CaseSensitiveLookup = result["caseSensitiveLookup"]?.Value<bool?>() ?? false,
113113
};
114114
}
115115

116116
return new InlineValueEvaluatableExpression()
117117
{
118-
Range = result["range"].ToObject<Range>()!,
118+
Range = result["range"].ToObject<Range>(serializer)!,
119119
Expression = result["expression"]?.Value<string>()
120120
};
121121
}
@@ -179,7 +179,7 @@ public partial record InlineValueEvaluatableExpression : InlineValueBase
179179

180180
[GenerateRegistrationOptions(nameof(ServerCapabilities.InlineValueProvider))]
181181
[RegistrationName(TextDocumentNames.InlineValue)]
182-
public partial class InlineValueRegistrationOptions : ITextDocumentRegistrationOptions, IWorkDoneProgressOptions
182+
public partial class InlineValueRegistrationOptions : ITextDocumentRegistrationOptions, IWorkDoneProgressOptions, IStaticRegistrationOptions
183183
{
184184
}
185185
}
@@ -190,12 +190,17 @@ namespace Server.Capabilities
190190

191191
namespace Client.Capabilities
192192
{
193+
[CapabilityKey(nameof(ClientCapabilities.TextDocument), nameof(TextDocumentClientCapabilities.InlineValue))]
194+
public partial class InlineValueClientCapabilities : DynamicCapability
195+
{
196+
}
197+
193198
/// <summary>
194199
/// Client workspace capabilities specific to inline values.
195200
///
196201
/// @since 3.17.0
197202
/// </summary>
198-
[CapabilityKey(nameof(ClientCapabilities.TextDocument), nameof(TextDocumentClientCapabilities.InlineValue))]
203+
[CapabilityKey(nameof(ClientCapabilities.Workspace), nameof(WorkspaceClientCapabilities.InlineValue))]
199204
public partial class InlineValueWorkspaceClientCapabilities : ICapability
200205
{
201206
/// <summary>

src/Protocol/Features/Document/SemanticTokensFeature.cs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -790,14 +790,17 @@ public partial class SemanticTokensCapabilityRequestFull
790790
///
791791
/// @since 3.16.0.
792792
/// </summary>
793-
[CapabilityKey(nameof(ClientCapabilities.TextDocument), nameof(WorkspaceClientCapabilities.SemanticTokens))]
793+
[CapabilityKey(nameof(ClientCapabilities.Workspace), nameof(WorkspaceClientCapabilities.SemanticTokens))]
794794
public class SemanticTokensWorkspaceCapability : ICapability
795795
{
796796
/// <summary>
797-
/// Whether the client implementation supports a refresh request send from
798-
/// the server to the client. This is useful if a server detects a project
799-
/// wide configuration change which requires a re-calculation of all semantic
800-
/// tokens provided by the server issuing the request.
797+
/// Whether the client implementation supports a refresh request sent from
798+
/// the server to the client.
799+
///
800+
/// Note that this event is global and will force the client to refresh all
801+
/// semantic tokens currently shown. It should be used with absolute care
802+
/// and is useful for situation where a server for example detect a project
803+
/// wide change that requires such a calculation.
801804
/// </summary>
802805
[Optional]
803806
public bool RefreshSupport { get; set; }

src/Protocol/Features/Workspace/DidChangeConfigurationFeature.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public partial record DidChangeConfigurationParams : IRequest
2626

2727
namespace Client.Capabilities
2828
{
29-
[CapabilityKey(nameof(ClientCapabilities.TextDocument), nameof(WorkspaceClientCapabilities.Configuration))]
29+
[CapabilityKey(nameof(ClientCapabilities.Workspace), nameof(WorkspaceClientCapabilities.Configuration))]
3030
public partial class DidChangeConfigurationCapability : DynamicCapability
3131
{
3232
}

src/Protocol/Features/Workspace/DidChangeWatchedFilesFeature.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public partial class DidChangeWatchedFilesRegistrationOptions
3636

3737
namespace Client.Capabilities
3838
{
39-
[CapabilityKey(nameof(ClientCapabilities.TextDocument), nameof(WorkspaceClientCapabilities.DidChangeWatchedFiles))]
39+
[CapabilityKey(nameof(ClientCapabilities.Workspace), nameof(WorkspaceClientCapabilities.DidChangeWatchedFiles))]
4040
public partial class DidChangeWatchedFilesCapability : DynamicCapability
4141
{
4242
/// <summary>

0 commit comments

Comments
 (0)