Exemple #1
0
            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)));
        }
Exemple #3
0
 public DelegatingHandlerBase(
     Func <SemanticTokensBuilder, ITextDocumentIdentifierParams, SemanticTokensCapability, CancellationToken, Task> tokenize,
     Func <ITextDocumentIdentifierParams, SemanticTokensCapability, CancellationToken, Task <SemanticTokensDocument> > getSemanticTokensDocument,
     SemanticTokensRegistrationOptions registrationOptions
     ) : base(registrationOptions)
 {
     _tokenize = tokenize;
     _getSemanticTokensDocument = getSemanticTokensDocument;
 }
Exemple #4
0
 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
         )
 {
 }
Exemple #5
0
        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;
 }
Exemple #7
0
 public SemanticTokensDocument(SemanticTokensRegistrationOptions options) : this(options.Legend)
 {
 }
Exemple #8
0
 public SemanticTokensHandlerBase(SemanticTokensRegistrationOptions registrationOptions) => _options = registrationOptions;