Exemplo n.º 1
0
 public static ILanguageServerRegistry OnCallHierarchy(
     this ILanguageServerRegistry registry,
     Func <CallHierarchyPrepareParams, CallHierarchyCapability, CancellationToken, Task <Container <CallHierarchyItem> > > handler,
     Func <CallHierarchyIncomingCallsParams, CallHierarchyCapability, CancellationToken, Task <Container <CallHierarchyIncomingCall> > > incomingHandler,
     Func <CallHierarchyOutgoingCallsParams, CallHierarchyCapability, CancellationToken, Task <Container <CallHierarchyOutgoingCall> > > outgoingHandler,
     CallHierarchyRegistrationOptions registrationOptions)
 {
     registrationOptions ??= new CallHierarchyRegistrationOptions();
     return(registry.AddHandler(TextDocumentNames.PrepareCallHierarchy,
                                new LanguageProtocolDelegatingHandlers.Request <CallHierarchyPrepareParams,
                                                                                Container <CallHierarchyItem>,
                                                                                CallHierarchyCapability,
                                                                                CallHierarchyRegistrationOptions>(handler, registrationOptions))
            .AddHandler(TextDocumentNames.CallHierarchyIncoming,
                        new LanguageProtocolDelegatingHandlers.Request <CallHierarchyIncomingCallsParams,
                                                                        Container <CallHierarchyIncomingCall>,
                                                                        CallHierarchyCapability,
                                                                        CallHierarchyRegistrationOptions>(incomingHandler, registrationOptions))
            .AddHandler(TextDocumentNames.CallHierarchyOutgoing,
                        new LanguageProtocolDelegatingHandlers.Request <CallHierarchyOutgoingCallsParams,
                                                                        Container <CallHierarchyOutgoingCall>,
                                                                        CallHierarchyCapability,
                                                                        CallHierarchyRegistrationOptions>(outgoingHandler, registrationOptions))
            );
 }
Exemplo n.º 2
0
        public static ILanguageServerRegistry OnCompletion(
            this ILanguageServerRegistry registry,
            Func <CompletionParams, CompletionCapability, CancellationToken, Task <CompletionList> > handler,
            Func <CompletionItem, bool> canResolve,
            Func <CompletionItem, CompletionCapability, CancellationToken, Task <CompletionItem> > resolveHandler,
            CompletionRegistrationOptions registrationOptions)
        {
            registrationOptions ??= new CompletionRegistrationOptions();
            registrationOptions.ResolveProvider = canResolve != null && resolveHandler != null;
            canResolve ??= item => registrationOptions.ResolveProvider;
            resolveHandler ??= (link, cap, token) => Task.FromException <CompletionItem>(new NotImplementedException());

            return(registry
                   .AddHandler(TextDocumentNames.Completion,
                               new LanguageProtocolDelegatingHandlers.Request <CompletionParams, CompletionList, CompletionCapability,
                                                                               CompletionRegistrationOptions>(
                                   handler,
                                   registrationOptions)
                               )
                   .AddHandler(TextDocumentNames.CompletionResolve,
                               new LanguageProtocolDelegatingHandlers.CanBeResolved <CompletionItem, CompletionCapability, CompletionRegistrationOptions>(
                                   resolveHandler,
                                   canResolve,
                                   registrationOptions)));
        }
Exemplo n.º 3
0
        public static ILanguageServerRegistry OnCodeLens(this ILanguageServerRegistry registry,
                                                         Action <CodeLensParams, IObserver <IEnumerable <CodeLens> >, CodeLensCapability, CancellationToken> handler,
                                                         Func <CodeLens, bool> canResolve,
                                                         Func <CodeLens, CodeLensCapability, CancellationToken, Task <CodeLens> > resolveHandler,
                                                         CodeLensRegistrationOptions registrationOptions)
        {
            registrationOptions ??= new CodeLensRegistrationOptions();
            registrationOptions.ResolveProvider = canResolve != null && resolveHandler != null;
            canResolve ??= item => registrationOptions.ResolveProvider;
            resolveHandler ??= (link, cap, token) => Task.FromException <CodeLens>(new NotImplementedException());

            return
                (registry.AddHandler(TextDocumentNames.CodeLens,
                                     _ => new LanguageProtocolDelegatingHandlers.PartialResults <CodeLensParams, CodeLensContainer, CodeLens, CodeLensCapability,
                                                                                                 CodeLensRegistrationOptions>(
                                         handler,
                                         registrationOptions,
                                         _.GetRequiredService <IProgressManager>(),
                                         x => new CodeLensContainer(x)))
                 .AddHandler(TextDocumentNames.CodeLensResolve,
                             new LanguageProtocolDelegatingHandlers.CanBeResolved <CodeLens, CodeLensCapability, CodeLensRegistrationOptions>(
                                 resolveHandler,
                                 canResolve,
                                 registrationOptions))
                );
        }
Exemplo n.º 4
0
 public static IDisposable OnWorkspaceSymbols(
     this ILanguageServerRegistry registry,
     Func <WorkspaceSymbolParams, CancellationToken, Task <SymbolInformationContainer> > handler,
     Action <WorkspaceSymbolCapability> setCapability = null)
 {
     return(registry.AddHandlers(new DelegatingHandler(handler, setCapability)));
 }
        public static ILanguageServerRegistry OnCompletion(
            this ILanguageServerRegistry registry,
            Func <CompletionParams, CompletionCapability, CancellationToken, Task <CompletionList> > handler,
            Func <CompletionItem, CompletionCapability, CancellationToken, Task <CompletionItem> >?resolveHandler,
            CompletionRegistrationOptions?registrationOptions
            )
        {
            registrationOptions ??= new CompletionRegistrationOptions();
            registrationOptions.ResolveProvider = true;
            resolveHandler ??= (link, cap, token) => Task.FromResult(link);
            var id = Guid.NewGuid();

            return(registry.AddHandler(
                       TextDocumentNames.Completion,
                       new LanguageProtocolDelegatingHandlers.Request <CompletionParams, CompletionList, CompletionCapability,
                                                                       CompletionRegistrationOptions>(
                           id,
                           handler,
                           registrationOptions
                           )
                       )
                   .AddHandler(
                       TextDocumentNames.CompletionResolve,
                       new LanguageProtocolDelegatingHandlers.CanBeResolved <CompletionItem, CompletionCapability, CompletionRegistrationOptions>(
                           id,
                           resolveHandler,
                           registrationOptions
                           )
                       )
                   );
        }
        public static ILanguageServerRegistry OnDocumentLink(
            this ILanguageServerRegistry registry,
            Func <DocumentLinkParams, DocumentLinkCapability, CancellationToken, Task <DocumentLinkContainer> > handler,
            Func <DocumentLink, DocumentLinkCapability, CancellationToken, Task <DocumentLink> >?resolveHandler,
            DocumentLinkRegistrationOptions?registrationOptions
            )
        {
            registrationOptions ??= new DocumentLinkRegistrationOptions();
            registrationOptions.ResolveProvider = true;
            resolveHandler ??= (link, cap, token) => Task.FromResult(link);
            var id = Guid.NewGuid();

            return(registry.AddHandler(
                       TextDocumentNames.DocumentLink,
                       new LanguageProtocolDelegatingHandlers.Request <DocumentLinkParams, DocumentLinkContainer, DocumentLinkCapability,
                                                                       DocumentLinkRegistrationOptions>(
                           id,
                           handler,
                           registrationOptions
                           )
                       )
                   .AddHandler(
                       TextDocumentNames.DocumentLinkResolve,
                       new LanguageProtocolDelegatingHandlers.CanBeResolved <DocumentLink, DocumentLinkCapability, DocumentLinkRegistrationOptions>(
                           id,
                           resolveHandler,
                           registrationOptions
                           )
                       )
                   );
        }
Exemplo n.º 7
0
 public static ILanguageServerRegistry OnCallHierarchy(this ILanguageServerRegistry registry,
                                                       Func <CallHierarchyPrepareParams, CallHierarchyCapability, Task <Container <CallHierarchyItem> > > handler,
                                                       Action <CallHierarchyIncomingCallsParams, IObserver <IEnumerable <CallHierarchyIncomingCall> >, CallHierarchyCapability> incomingHandler,
                                                       Action <CallHierarchyOutgoingCallsParams, IObserver <IEnumerable <CallHierarchyOutgoingCall> >, CallHierarchyCapability> outgoingHandler,
                                                       CallHierarchyRegistrationOptions registrationOptions)
 {
     registrationOptions ??= new CallHierarchyRegistrationOptions();
     return
         (registry.AddHandler(TextDocumentNames.PrepareCallHierarchy,
                              new LanguageProtocolDelegatingHandlers.Request <CallHierarchyPrepareParams,
                                                                              Container <CallHierarchyItem>,
                                                                              CallHierarchyCapability,
                                                                              CallHierarchyRegistrationOptions>(handler, registrationOptions))
          .AddHandler(TextDocumentNames.CallHierarchyIncoming,
                      _ => new LanguageProtocolDelegatingHandlers.PartialResults <CallHierarchyIncomingCallsParams,
                                                                                  Container <CallHierarchyIncomingCall>, CallHierarchyIncomingCall,
                                                                                  CallHierarchyCapability,
                                                                                  CallHierarchyRegistrationOptions>(incomingHandler, registrationOptions,
                                                                                                                    _.GetRequiredService <IProgressManager>(), x => new Container <CallHierarchyIncomingCall>(x)))
          .AddHandler(TextDocumentNames.CallHierarchyOutgoing,
                      _ => new LanguageProtocolDelegatingHandlers.PartialResults <CallHierarchyOutgoingCallsParams,
                                                                                  Container <CallHierarchyOutgoingCall>, CallHierarchyOutgoingCall,
                                                                                  CallHierarchyCapability,
                                                                                  CallHierarchyRegistrationOptions>(outgoingHandler, registrationOptions,
                                                                                                                    _.GetRequiredService <IProgressManager>(), x => new Container <CallHierarchyOutgoingCall>(x)))
         );
 }
 public static IDisposable OnDidChangeWorkspaceFolders(
     this ILanguageServerRegistry registry,
     Func <DidChangeWorkspaceFoldersParams, CancellationToken, Task <Unit> > handler,
     Action <DidChangeWorkspaceFolderCapability> setCapability = null)
 {
     return(registry.AddHandlers(new DelegatingHandler(handler, setCapability)));
 }
Exemplo n.º 9
0
        public static ILanguageServerRegistry OnDocumentLink(this ILanguageServerRegistry registry,
                                                             Action <DocumentLinkParams, IObserver <IEnumerable <DocumentLink> > > handler,
                                                             Func <DocumentLink, bool> canResolve,
                                                             Func <DocumentLink, Task <DocumentLink> > resolveHandler,
                                                             DocumentLinkRegistrationOptions registrationOptions)
        {
            registrationOptions ??= new DocumentLinkRegistrationOptions();
            registrationOptions.ResolveProvider = canResolve != null && resolveHandler != null;
            canResolve ??= item => registrationOptions.ResolveProvider;
            resolveHandler ??= (link) => Task.FromException <DocumentLink>(new NotImplementedException());

            return(registry.AddHandler(TextDocumentNames.DocumentLink,
                                       _ => new LanguageProtocolDelegatingHandlers.PartialResults <DocumentLinkParams, DocumentLinkContainer, DocumentLink,
                                                                                                   DocumentLinkRegistrationOptions>(
                                           handler,
                                           registrationOptions,
                                           _.GetRequiredService <IProgressManager>(),
                                           x => new DocumentLinkContainer(x)))
                   .AddHandler(TextDocumentNames.DocumentLinkResolve,
                               new LanguageProtocolDelegatingHandlers.CanBeResolved <DocumentLink, DocumentLinkRegistrationOptions>(
                                   resolveHandler,
                                   canResolve,
                                   registrationOptions))
                   );
        }
 public static ILanguageServerRegistry OnCallHierarchy <T>(
     this ILanguageServerRegistry registry,
     Func <CallHierarchyPrepareParams, CallHierarchyCapability, CancellationToken, Task <Container <CallHierarchyItem <T> >?> > handler,
     Func <CallHierarchyIncomingCallsParams <T>, CallHierarchyCapability, CancellationToken, Task <Container <CallHierarchyIncomingCall>?> > incomingHandler,
     Func <CallHierarchyOutgoingCallsParams <T>, CallHierarchyCapability, CancellationToken, Task <Container <CallHierarchyOutgoingCall>?> > outgoingHandler,
     CallHierarchyRegistrationOptions?registrationOptions
     ) where T : HandlerIdentity?, new()
        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)));
        }
Exemplo n.º 12
0
 public static ILanguageServerRegistry OnExecuteCommand <T>(this ILanguageServerRegistry registry, string command, Func <T, Task> handler) =>
 registry.AddHandler(
     _ => new Handler <T>(
         command,
         (arg1, capability, token) => handler(arg1),
         _.GetRequiredService <ISerializer>()
         )
     );
 public static IDisposable OnDocumentColor(
     this ILanguageServerRegistry registry,
     Func <DocumentColorParams, CancellationToken, Task <Container <ColorInformation> > > handler,
     DocumentColorRegistrationOptions registrationOptions = null,
     Action <ColorProviderCapability> setCapability       = null)
 {
     registrationOptions = registrationOptions ?? new DocumentColorRegistrationOptions();
     return(registry.AddHandlers(new DelegatingHandler(handler, setCapability, registrationOptions)));
 }
Exemplo n.º 14
0
 public static IDisposable OnTypeDefinition(
     this ILanguageServerRegistry registry,
     Func <TypeDefinitionParams, CancellationToken, Task <LocationOrLocationLinks> > handler,
     TextDocumentRegistrationOptions registrationOptions = null,
     Action <TypeDefinitionCapability> setCapability     = null)
 {
     registrationOptions = registrationOptions ?? new TextDocumentRegistrationOptions();
     return(registry.AddHandlers(new DelegatingHandler(handler, setCapability, registrationOptions)));
 }
 public static IDisposable OnExecuteCommand(
     this ILanguageServerRegistry registry,
     Func <ExecuteCommandParams, CancellationToken, Task <Unit> > handler,
     ExecuteCommandRegistrationOptions registrationOptions = null,
     Action <ExecuteCommandCapability> setCapability       = null)
 {
     registrationOptions = registrationOptions ?? new ExecuteCommandRegistrationOptions();
     return(registry.AddHandlers(new DelegatingHandler(handler, setCapability, registrationOptions)));
 }
 public static IDisposable OnRename(
     this ILanguageServerRegistry registry,
     Func <RenameParams, CancellationToken, Task <WorkspaceEdit> > handler,
     RenameRegistrationOptions registrationOptions = null,
     Action <RenameCapability> setCapability       = null)
 {
     registrationOptions = registrationOptions ?? new RenameRegistrationOptions();
     return(registry.AddHandlers(new DelegatingHandler(handler, setCapability, registrationOptions)));
 }
Exemplo n.º 17
0
 public static IDisposable OnDeclaration(
     this ILanguageServerRegistry registry,
     Func <DeclarationParams, CancellationToken, Task <LocationOrLocationLinks> > handler,
     DeclarationRegistrationOptions registrationOptions = null,
     Action <DeclarationCapability> setCapability       = null)
 {
     registrationOptions ??= new DeclarationRegistrationOptions();
     return(registry.AddHandlers(new DelegatingHandler(handler, registry.ProgressManager, setCapability, registrationOptions)));
 }
Exemplo n.º 18
0
 public static IDisposable OnReferences(
     this ILanguageServerRegistry registry,
     Func <ReferenceParams, CancellationToken, Task <LocationContainer> > handler,
     ReferenceRegistrationOptions registrationOptions = null,
     Action <ReferenceCapability> setCapability       = null)
 {
     registrationOptions ??= new ReferenceRegistrationOptions();
     return(registry.AddHandlers(new DelegatingHandler(handler, registry.ProgressManager, setCapability, registrationOptions)));
 }
Exemplo n.º 19
0
 public static IDisposable OnDidChangeWatchedFiles(
     this ILanguageServerRegistry registry,
     Func <DidChangeWatchedFilesParams, CancellationToken, Task <Unit> > handler,
     Action <DidChangeWatchedFilesCapability> setCapability       = null,
     DidChangeWatchedFilesRegistrationOptions registrationOptions = null)
 {
     registrationOptions ??= new DidChangeWatchedFilesRegistrationOptions();
     return(registry.AddHandlers(new DelegatingHandler(handler, setCapability, registrationOptions)));
 }
 public static IDisposable OnDocumentOnTypeFormat(
     this ILanguageServerRegistry registry,
     Func <DocumentOnTypeFormattingParams, CancellationToken, Task <TextEditContainer> > handler,
     DocumentOnTypeFormattingRegistrationOptions registrationOptions = null,
     Action <DocumentOnTypeFormattingCapability> setCapability       = null)
 {
     registrationOptions = registrationOptions ?? new DocumentOnTypeFormattingRegistrationOptions();
     return(registry.AddHandlers(new DelegatingHandler(handler, setCapability, registrationOptions)));
 }
 public static IDisposable OnWorkspaceSymbols(
     this ILanguageServerRegistry registry,
     Func <WorkspaceSymbolParams, CancellationToken, Task <Container <SymbolInformation> > > handler,
     Action <WorkspaceSymbolCapability> setCapability       = null,
     WorkspaceSymbolRegistrationOptions registrationOptions = null)
 {
     registrationOptions ??= new WorkspaceSymbolRegistrationOptions();
     return(registry.AddHandlers(new DelegatingHandler(handler, registry.ProgressManager, setCapability, registrationOptions)));
 }
 public static IDisposable OnWillSaveWaitUntilTextDocument(
     this ILanguageServerRegistry registry,
     Func <WillSaveWaitUntilTextDocumentParams, CancellationToken, Task <TextEditContainer> > handler,
     TextDocumentRegistrationOptions registrationOptions = null,
     Action <SynchronizationCapability> setCapability    = null)
 {
     registrationOptions ??= new TextDocumentRegistrationOptions();
     return(registry.AddHandlers(new DelegatingHandler(handler, setCapability, registrationOptions)));
 }
 public static IDisposable OnCodeAction(
     this ILanguageServerRegistry registry,
     Func <CodeActionParams, CancellationToken, Task <CommandOrCodeActionContainer> > handler,
     CodeActionRegistrationOptions registrationOptions = null,
     Action <CodeActionCapability> setCapability       = null)
 {
     registrationOptions ??= new CodeActionRegistrationOptions();
     return(registry.AddHandlers(new DelegatingHandler(handler, registry.ProgressManager, setCapability, registrationOptions)));
 }
Exemplo n.º 24
0
 public static IDisposable OnFoldingRange(
     this ILanguageServerRegistry registry,
     Func <FoldingRangeRequestParam, CancellationToken, Task <Container <FoldingRange> > > handler,
     TextDocumentRegistrationOptions registrationOptions = null,
     Action <FoldingRangeCapability> setCapability       = null)
 {
     registrationOptions = registrationOptions ?? new TextDocumentRegistrationOptions();
     return(registry.AddHandlers(new DelegatingHandler(handler, setCapability, registrationOptions)));
 }
Exemplo n.º 25
0
 public static IDisposable OnPrepareRename(
     this ILanguageServerRegistry registry,
     Func<PrepareRenameParams, CancellationToken, Task<RangeOrPlaceholderRange>> handler,
     TextDocumentRegistrationOptions registrationOptions = null,
     Action<RenameCapability> setCapability = null)
 {
     registrationOptions = registrationOptions ?? new TextDocumentRegistrationOptions();
     return registry.AddHandlers(new DelegatingHandler(handler, setCapability, registrationOptions));
 }
 public static IDisposable OnSelectionRange(
     this ILanguageServerRegistry registry,
     Func <SelectionRangeParam, CancellationToken, Task <Container <SelectionRange> > > handler,
     SelectionRangeRegistrationOptions registrationOptions = null,
     Action <SelectionRangeCapability> setCapability       = null)
 {
     registrationOptions ??= new SelectionRangeRegistrationOptions();
     return(registry.AddHandlers(new DelegatingHandler(handler, registry.ProgressManager, setCapability, registrationOptions)));
 }
Exemplo n.º 27
0
 public static IDisposable OnDidSaveTextDocument(
     this ILanguageServerRegistry registry,
     Func <DidSaveTextDocumentParams, CancellationToken, Task <Unit> > handler,
     TextDocumentSaveRegistrationOptions registrationOptions = null,
     Action <SynchronizationCapability> setCapability        = null)
 {
     registrationOptions ??= new TextDocumentSaveRegistrationOptions();
     return(registry.AddHandlers(new DelegatingHandler(handler, setCapability, registrationOptions)));
 }
 public static IDisposable OnDocumentHighlight(
     this ILanguageServerRegistry registry,
     Func <DocumentHighlightParams, CancellationToken, Task <DocumentHighlightContainer> > handler,
     DocumentHighlightRegistrationOptions registrationOptions = null,
     Action <DocumentHighlightCapability> setCapability       = null)
 {
     registrationOptions ??= new DocumentHighlightRegistrationOptions();
     return(registry.AddHandlers(new DelegatingHandler(handler, registry.ProgressManager, setCapability, registrationOptions)));
 }
 public static IDisposable OnHover(
     this ILanguageServerRegistry registry,
     Func <HoverParams, CancellationToken, Task <Hover> > handler,
     TextDocumentRegistrationOptions registrationOptions = null,
     Action <HoverCapability> setCapability = null)
 {
     registrationOptions = registrationOptions ?? new TextDocumentRegistrationOptions();
     return(registry.AddHandlers(new DelegatingHandler(handler, setCapability, registrationOptions)));
 }
Exemplo n.º 30
0
 public static IDisposable OnSignatureHelp(
     this ILanguageServerRegistry registry,
     Func <SignatureHelpParams, CancellationToken, Task <SignatureHelp> > handler,
     SignatureHelpRegistrationOptions registrationOptions = null,
     Action <SignatureHelpCapability> setCapability       = null)
 {
     registrationOptions ??= new SignatureHelpRegistrationOptions();
     return(registry.AddHandlers(new DelegatingHandler(handler, setCapability, registrationOptions)));
 }