public async Task Should_Gather_Static_Registrations() { var(client, server) = await Initialize( new ConfigureClient().Configure, options => { new ConfigureServer().Configure(options); var semanticRegistrationOptions = new SemanticTokensRegistrationOptions { Id = Guid.NewGuid().ToString(), Legend = new SemanticTokensLegend(), Full = new SemanticTokensCapabilityRequestFull { Delta = true }, Range = new SemanticTokensCapabilityRequestRange(), DocumentSelector = DocumentSelector.ForLanguage("csharp") }; // Our server only statically registers when it detects a server that does not support dynamic capabilities // This forces it to do that. options.OnInitialized( (server, request, response, token) => { response.Capabilities.SemanticTokensProvider = SemanticTokensOptions.Of( semanticRegistrationOptions, Enumerable.Empty <ILspHandlerDescriptor>() ); response.Capabilities.SemanticTokensProvider.Id = semanticRegistrationOptions.Id; return(Task.CompletedTask); } ); } ); client.RegistrationManager.CurrentRegistrations.Should().Contain(x => x.Method == TextDocumentNames.SemanticTokensFull); }
public static IDisposable OnSemanticTokensEdits( this ILanguageServerRegistry registry, Func <SemanticTokensBuilder, ITextDocumentIdentifierParams, CancellationToken, Task> tokenize, Func <ITextDocumentIdentifierParams, CancellationToken, Task <SemanticTokensDocument> > getSemanticTokensDocument, SemanticTokensRegistrationOptions registrationOptions = null, Action <SemanticTokensCapability> setCapability = null) { registrationOptions ??= new SemanticTokensRegistrationOptions() { DocumentProvider = new Supports <SemanticTokensDocumentProviderOptions>(true, new SemanticTokensDocumentProviderOptions() { }) }; registrationOptions.RangeProvider = true; if (registrationOptions.DocumentProvider != null) { registrationOptions.DocumentProvider.Edits = true; } return(registry.AddHandlers( new DelegatingHandler(tokenize, getSemanticTokensDocument, setCapability, registrationOptions))); }
public DelegatingHandlerBase( Func <SemanticTokensBuilder, ITextDocumentIdentifierParams, SemanticTokensCapability, CancellationToken, Task> tokenize, Func <ITextDocumentIdentifierParams, SemanticTokensCapability, CancellationToken, Task <SemanticTokensDocument> > getSemanticTokensDocument, SemanticTokensRegistrationOptions registrationOptions ) : base(registrationOptions) { _tokenize = tokenize; _getSemanticTokensDocument = getSemanticTokensDocument; }
public DelegatingHandlerBase( Func <SemanticTokensBuilder, ITextDocumentIdentifierParams, SemanticTokensCapability, Task> tokenize, Func <ITextDocumentIdentifierParams, SemanticTokensCapability, Task <SemanticTokensDocument> > getSemanticTokensDocument, SemanticTokensRegistrationOptions registrationOptions ) : this( (s, t, c, ct) => tokenize(s, t, c), (t, c, ct) => getSemanticTokensDocument(t, c), registrationOptions ) { }
public static ILanguageServerRegistry OnSemanticTokens(this ILanguageServerRegistry registry, Func <SemanticTokensBuilder, ITextDocumentIdentifierParams, SemanticTokensCapability, CancellationToken, Task> tokenize, Func <ITextDocumentIdentifierParams, SemanticTokensCapability, CancellationToken, Task <SemanticTokensDocument> > getSemanticTokensDocument, SemanticTokensRegistrationOptions registrationOptions) { registrationOptions ??= new SemanticTokensRegistrationOptions() { Full = new SemanticTokensCapabilityRequestFull() }; registrationOptions.Range ??= new SemanticTokensCapabilityRequestRange(); if (registrationOptions?.Full?.IsValue == true) { registrationOptions.Full.Value.Delta = true; } return(registry.AddHandlers( new DelegatingHandlerBase(tokenize, getSemanticTokensDocument, registrationOptions))); }
public SemanticTokensHandler(SemanticTokensRegistrationOptions registrationOptions) { _options = registrationOptions; }
public SemanticTokensDocument(SemanticTokensRegistrationOptions options) : this(options.Legend) { }
public SemanticTokensHandlerBase(SemanticTokensRegistrationOptions registrationOptions) => _options = registrationOptions;