1212using OmniSharp . Extensions . LanguageServer . Protocol . Models ;
1313using OmniSharp . Extensions . LanguageServer . Protocol . Serialization ;
1414using OmniSharp . Extensions . LanguageServer . Protocol . Serialization . Converters ;
15+ using OmniSharp . Extensions . LanguageServer . Protocol . Server ;
1516using 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
0 commit comments