Exemple #1
0
 public FoldingRangeRegistrationOptions GetRegistrationOptions() =>
 new FoldingRangeRegistrationOptions
 {
     DocumentSelector = DocumentSelector.ForLanguage("csharp")
 };
 public OmniSharpSignatureHelpHandler(Mef.IRequestHandler <SignatureHelpRequest, SignatureHelpResponse> signatureHandler, DocumentSelector documentSelector)
 {
     _signatureHandler = signatureHandler;
     _documentSelector = documentSelector;
 }
Exemple #3
0
        public async Task Should_Aggregate_With_All_Related_Handlers()
        {
            var(client, _) = await Initialize(
                options => { }, options => {
                var identifier = Substitute.For <ITextDocumentIdentifier>();
                identifier.GetTextDocumentAttributes(Arg.Any <DocumentUri>()).Returns(
                    call => new TextDocumentAttributes(call.ArgAt <DocumentUri>(0), "file", "csharp")
                    );
                options.AddTextDocumentIdentifier(identifier);

                options.OnDocumentLink(
                    codeLensParams => {
                    return(Task.FromResult(
                               new DocumentLinkContainer <Data>(
                                   new DocumentLink <Data> {
                        Tooltip = "data-a",
                        Data = new Data {
                            Child = new Nested {
                                Date = DateTimeOffset.MinValue
                            },
                            Id = Guid.NewGuid(),
                            Name = "name"
                        }
                    }
                                   )
                               ));
                },
                    documentLink => {
                    documentLink.Tooltip = "resolved-a";
                    return(Task.FromResult(documentLink));
                },
                    new DocumentLinkRegistrationOptions {
                    DocumentSelector = DocumentSelector.ForPattern("**/*.cs")
                }
                    );

                options.OnDocumentLink(
                    codeLensParams => {
                    return(Task.FromResult(
                               new DocumentLinkContainer <Nested>(
                                   new DocumentLink <Nested> {
                        Tooltip = "nested-b",
                        Data = new Nested {
                            Date = DateTimeOffset.Now
                        }
                    }
                                   )
                               ));
                },
                    documentLink => {
                    documentLink.Tooltip = "resolved-b";
                    return(Task.FromResult(documentLink));
                },
                    new DocumentLinkRegistrationOptions {
                    DocumentSelector = DocumentSelector.ForPattern("**/*.cs")
                }
                    );

                options.OnDocumentLink(
                    codeLensParams => {
                    return(Task.FromResult(
                               new DocumentLinkContainer(
                                   new DocumentLink {
                        Tooltip = "no-data-c",
                    }
                                   )
                               ));
                },
                    documentLink => {
                    documentLink.Tooltip = "resolved-c";
                    return(Task.FromResult(documentLink));
                },
                    new DocumentLinkRegistrationOptions {
                    DocumentSelector = DocumentSelector.ForPattern("**/*.cs")
                }
                    );

                options.OnDocumentLink(
                    codeLensParams => {
                    return(Task.FromResult(
                               new DocumentLinkContainer(
                                   new DocumentLink {
                        Tooltip = "not-included",
                    }
                                   )
                               ));
                },
                    documentLink => {
                    documentLink.Tooltip = "resolved-d";
                    return(Task.FromResult(documentLink));
                },
                    new DocumentLinkRegistrationOptions {
                    DocumentSelector = DocumentSelector.ForLanguage("vb")
                }
                    );
            }
                );

            var items = await client.RequestDocumentLink(
                new DocumentLinkParams {
                TextDocument = new TextDocumentIdentifier("/some/path/file.cs"),
            }
                );

            var lens = items.ToArray();

            var responses = await Task.WhenAll(lens.Select(z => client.ResolveDocumentLink(z)));

            responses.Select(z => z.Tooltip).Should().Contain(new[] { "resolved-a", "resolved-b", "resolved-c" });
            responses.Select(z => z.Tooltip).Should().NotContain("resolved-d");
            lens.Length.Should().Be(3);
        }
Exemple #4
0
        public async Task Should_Aggregate_With_All_Related_Handlers()
        {
            var(client, _) = await Initialize(
                options => { }, options => {
                var identifier = Substitute.For <ITextDocumentIdentifier>();
                identifier.GetTextDocumentAttributes(Arg.Any <DocumentUri>()).Returns(
                    call => new TextDocumentAttributes(call.ArgAt <DocumentUri>(0), "file", "csharp")
                    );
                options.AddTextDocumentIdentifier(identifier);

                options.OnCodeLens(
                    codeLensParams => {
                    return(Task.FromResult(
                               new CodeLensContainer <Fixtures.Data>(
                                   new CodeLens <Fixtures.Data> {
                        Command = new Command {
                            Name = "data-a",
                            Arguments = JArray.FromObject(new object[] { 1, "2", false })
                        },
                        Data = new Fixtures.Data {
                            Child = new Nested {
                                Date = DateTimeOffset.MinValue
                            },
                            Id = Guid.NewGuid(),
                            Name = "name"
                        }
                    }
                                   )
                               ));
                },
                    l => { return(Task.FromResult(l with {
                        Command = l.Command with {
                            Name = "resolved-a"
                        }
                    })); },
                    (_, _) => new CodeLensRegistrationOptions {
                    DocumentSelector = DocumentSelector.ForPattern("**/*.cs")
                }
                    );

                options.OnCodeLens(
                    codeLensParams => {
                    return(Task.FromResult(
                               new CodeLensContainer <Nested>(
                                   new CodeLens <Nested> {
                        Command = new Command {
                            Name = "nested-b",
                            Arguments = JArray.FromObject(new object[] { 1, "2", false })
                        },
                        Data = new Nested {
                            Date = DateTimeOffset.Now
                        }
                    }
                                   )
                               ));
                },
                    l => { return(Task.FromResult(l with {
                        Command = l.Command with {
                            Name = "resolved-b"
                        }
                    })); },
 public OmniSharpDocumentOnTypeFormattingHandler(Mef.IRequestHandler <FormatAfterKeystrokeRequest, FormatRangeResponse> formatAfterKeystrokeHandler, DocumentSelector documentSelector) : base(new DocumentOnTypeFormattingRegistrationOptions()
 {
     DocumentSelector      = documentSelector,
     FirstTriggerCharacter = ";",
     // TODO: What should these be?
     MoreTriggerCharacter = new[] { "}", ")" }
 })
 {
     _formatAfterKeystrokeHandler = formatAfterKeystrokeHandler;
 }
Exemple #6
0
 public DocumentSymbolRegistrationOptions GetRegistrationOptions(DocumentSymbolCapability capability, ClientCapabilities clientCapabilities) => new DocumentSymbolRegistrationOptions
 {
     DocumentSelector = DocumentSelector.ForLanguage("csharp")
 };
 private static TextDocumentRegistrationOptions GetOptions <R>(IRegistration <R> handler, DocumentSelector documentSelector)
     where R : TextDocumentRegistrationOptions, new()
 {
     return(new R {
         DocumentSelector = documentSelector
     });
 }
 public OmniSharpDocumentFormattingHandler(Mef.IRequestHandler <CodeFormatRequest, CodeFormatResponse> codeFormatHandler, DocumentSelector documentSelector)
 {
     _codeFormatHandler = codeFormatHandler;
     _documentSelector  = documentSelector;
 }
 public OmniSharpImplementationHandler(Mef.IRequestHandler <FindImplementationsRequest, QuickFixResponse> findImplementationsHandler, DocumentSelector documentSelector)
 {
     _findImplementationsHandler = findImplementationsHandler;
     _documentSelector           = documentSelector;
 }
Exemple #10
0
        public static ITextDocumentSyncHandler With(this ITextDocumentSyncHandler handler, DocumentSelector documentSelector, string language)
        {
            ((IDidChangeTextDocumentHandler)handler).GetRegistrationOptions().Returns(new TextDocumentChangeRegistrationOptions()
            {
                DocumentSelector = documentSelector
            });
            ((IDidOpenTextDocumentHandler)handler).GetRegistrationOptions().Returns(new TextDocumentRegistrationOptions()
            {
                DocumentSelector = documentSelector
            });
            ((IDidCloseTextDocumentHandler)handler).GetRegistrationOptions().Returns(new TextDocumentRegistrationOptions()
            {
                DocumentSelector = documentSelector
            });
            ((IDidSaveTextDocumentHandler)handler).GetRegistrationOptions().Returns(new TextDocumentSaveRegistrationOptions()
            {
                DocumentSelector = documentSelector
            });
            ((ITextDocumentIdentifier)handler).GetTextDocumentAttributes(Arg.Any <DocumentUri>())
            .Returns((info) => new TextDocumentAttributes(info.Arg <DocumentUri>(), language));

            handler
            .GetTextDocumentAttributes(Arg.Is <DocumentUri>(x => documentSelector.IsMatch(new TextDocumentAttributes(x, language))))
            .Returns(c => new TextDocumentAttributes(c.Arg <DocumentUri>(), language));

            return(handler);
        }
 private static TextDocumentSaveRegistrationOptions CreateRegistrationOptions()
 {
     return(new TextDocumentSaveRegistrationOptions {
         DocumentSelector = DocumentSelector.ForLanguage(LanguageId)
     });
 }
 protected override DefinitionRegistrationOptions CreateRegistrationOptions(DefinitionCapability capability, ClientCapabilities clientCapabilities)
 {
     return(new DefinitionRegistrationOptions {
         DocumentSelector = DocumentSelector.ForLanguage("dafny")
     });
 }
Exemple #13
0
        public async Task ShouldRouteToCorrect_Request_WithManyHandlers_CodeLensHandler()
        {
            var textDocumentSyncHandler =
                TextDocumentSyncHandlerExtensions.With(DocumentSelector.ForPattern("**/*.cs"), "csharp");
            var textDocumentSyncHandler2 =
                TextDocumentSyncHandlerExtensions.With(DocumentSelector.ForPattern("**/*.cake"), "csharp");

            textDocumentSyncHandler.Handle(Arg.Any <DidSaveTextDocumentParams>(), Arg.Any <CancellationToken>())
            .Returns(Unit.Value);
            textDocumentSyncHandler2.Handle(Arg.Any <DidSaveTextDocumentParams>(), Arg.Any <CancellationToken>())
            .Returns(Unit.Value);

            var codeActionHandler = Substitute.For <ICodeLensHandler>();

            codeActionHandler.GetRegistrationOptions(Arg.Any <CodeLensCapability>(), Arg.Any <ClientCapabilities>()).Returns(new CodeLensRegistrationOptions {
                DocumentSelector = DocumentSelector.ForPattern("**/*.cs")
            });
            codeActionHandler
            .Handle(Arg.Any <CodeLensParams>(), Arg.Any <CancellationToken>())
            .Returns(new CodeLensContainer());

            var codeActionHandler2 = Substitute.For <ICodeLensHandler>();

            codeActionHandler2.GetRegistrationOptions(Arg.Any <CodeLensCapability>(), Arg.Any <ClientCapabilities>()).Returns(new CodeLensRegistrationOptions {
                DocumentSelector = DocumentSelector.ForPattern("**/*.cake")
            });
            codeActionHandler2
            .Handle(Arg.Any <CodeLensParams>(), Arg.Any <CancellationToken>())
            .Returns(new CodeLensContainer());

            var tdi        = new TextDocumentIdentifiers();
            var collection =
                new SharedHandlerCollection(
                    SupportedCapabilitiesFixture.AlwaysTrue, tdi, Substitute.For <IResolverContext>(),
                    new LspHandlerTypeDescriptorProvider(
                        new[] {
                typeof(FoundationTests).Assembly, typeof(LanguageServer).Assembly, typeof(LanguageClient).Assembly, typeof(IRegistrationManager).Assembly,
                typeof(LspRequestRouter).Assembly
            }
                        )
                    )
            {
                textDocumentSyncHandler, textDocumentSyncHandler2, codeActionHandler, codeActionHandler2
            };

            collection.Initialize();
            AutoSubstitute.Provide <IHandlerCollection>(collection);
            AutoSubstitute.Provide <IEnumerable <ILspHandlerDescriptor> >(collection);
            AutoSubstitute.Provide <IHandlerMatcher>(new TextDocumentMatcher(LoggerFactory.CreateLogger <TextDocumentMatcher>(), tdi));
            var mediator = AutoSubstitute.Resolve <LspRequestRouter>();

            var id      = Guid.NewGuid().ToString();
            var @params = new CodeLensParams {
                TextDocument = new TextDocumentIdentifier(new Uri("file:///c:/test/123.cs"))
            };

            var request = new Request(
                id, TextDocumentNames.CodeLens,
                JObject.Parse(JsonConvert.SerializeObject(@params, new LspSerializer(ClientVersion.Lsp3).Settings))
                );

            await mediator.RouteRequest(mediator.GetDescriptors(request), request, CancellationToken.None);

            await codeActionHandler2.Received(0).Handle(Arg.Any <CodeLensParams>(), Arg.Any <CancellationToken>());

            await codeActionHandler.Received(1).Handle(Arg.Any <CodeLensParams>(), Arg.Any <CancellationToken>());
        }
Exemple #14
0
 public FoldingRangeRegistrationOptions GetRegistrationOptions(FoldingRangeCapability capability, ClientCapabilities clientCapabilities) => new FoldingRangeRegistrationOptions
 {
     DocumentSelector = DocumentSelector.ForLanguage("csharp")
 };
Exemple #15
0
 public OmniSharpCompletionHandler(Mef.IRequestHandler <AutoCompleteRequest, IEnumerable <AutoCompleteResponse> > autoCompleteHandler, DocumentSelector documentSelector)
     : base(new CompletionRegistrationOptions()
 {
     DocumentSelector = documentSelector,
     // TODO: Come along and add a service for getting autocompletion details after the fact.
     ResolveProvider   = false,
     TriggerCharacters = new[] { ".", },
 })
 {
     _autoCompleteHandler = autoCompleteHandler;
 }
 public static DocumentSelector Create() => DocumentSelector.ForLanguage(LanguageConstants.LanguageId);
 private static DefinitionRegistrationOptions CreateRegistrationOptions()
 {
     return(new DefinitionRegistrationOptions {
         DocumentSelector = DocumentSelector.ForLanguage("dafny")
     });
 }
 public OmniSharpDefinitionHandler(Mef.IRequestHandler <GotoDefinitionRequest, GotoDefinitionResponse> definitionHandler, DocumentSelector documentSelector)
     : base(new DefinitionRegistrationOptions()
 {
     DocumentSelector = documentSelector
 })
 {
     _definitionHandler = definitionHandler;
 }
        public static ITextDocumentSyncHandler With(this ITextDocumentSyncHandler handler, DocumentSelector documentSelector)
        {
            ((IDidChangeTextDocumentHandler)handler).GetRegistrationOptions().Returns(new TextDocumentChangeRegistrationOptions()
            {
                DocumentSelector = documentSelector
            });
            ((IDidOpenTextDocumentHandler)handler).GetRegistrationOptions().Returns(new TextDocumentRegistrationOptions()
            {
                DocumentSelector = documentSelector
            });
            ((IDidCloseTextDocumentHandler)handler).GetRegistrationOptions().Returns(new TextDocumentRegistrationOptions()
            {
                DocumentSelector = documentSelector
            });
            ((IDidSaveTextDocumentHandler)handler).GetRegistrationOptions().Returns(new TextDocumentSaveRegistrationOptions()
            {
                DocumentSelector = documentSelector
            });

            handler
            .GetTextDocumentAttributes(Arg.Is <Uri>(x => documentSelector.IsMatch(new TextDocumentAttributes(x, ""))))
            .Returns(c => new TextDocumentAttributes(c.Arg <Uri>(), ""));

            return(handler);
        }
Exemple #20
0
 public OmniSharpDefinitionHandler(Mef.IRequestHandler <GotoDefinitionRequest, GotoDefinitionResponse> definitionHandler, DocumentSelector documentSelector)
 {
     _definitionHandler = definitionHandler;
     _documentSelector  = documentSelector;
 }
 public static ITextDocumentSyncHandler With(DocumentSelector documentSelector)
 {
     return(Substitute.For <ITextDocumentSyncHandler>().With(documentSelector));
 }
Exemple #22
0
 public OmniSharpDocumentFormatRangeHandler(Mef.IRequestHandler <FormatRangeRequest, FormatRangeResponse> formatRangeHandler, DocumentSelector documentSelector)
 {
     _formatRangeHandler = formatRangeHandler;
     _documentSelector   = documentSelector;
 }
Exemple #23
0
 public OmniSharpSignatureHelpHandler(Mef.IRequestHandler <SignatureHelpRequest, SignatureHelpResponse> signatureHandler, DocumentSelector documentSelector)
     : base(new SignatureHelpRegistrationOptions()
 {
     DocumentSelector  = documentSelector,
     TriggerCharacters = new[] { ".", "?", "[" }
 })
 {
     _signatureHandler = signatureHandler;
 }
 public IEnumerable <Registration> GetRegistrationsMatchingSelector(DocumentSelector documentSelector) =>
 _registrations
 .Select(z => z.Value)
 .Where(
 public RenameHandler(Mef.IRequestHandler <RenameRequest, RenameResponse> renameHandler, DocumentSelector documentSelector)
 {
     _renameHandler    = renameHandler;
     _documentSelector = documentSelector;
 }
 public OmniSharpHoverHandler(Mef.IRequestHandler <TypeLookupRequest, TypeLookupResponse> definitionHandler, DocumentSelector documentSelector)
     : base(new HoverRegistrationOptions()
 {
     DocumentSelector = documentSelector
 })
 {
     _definitionHandler = definitionHandler;
 }
Exemple #27
0
 public OmniSharpCompletionHandler(Mef.IRequestHandler <AutoCompleteRequest, IEnumerable <AutoCompleteResponse> > autoCompleteHandler, DocumentSelector documentSelector)
 {
     _autoCompleteHandler = autoCompleteHandler;
     _documentSelector    = documentSelector;
 }
Exemple #28
0
 public static ITextDocumentSyncHandler With(DocumentSelector documentSelector, string language)
 {
     return(Substitute.For <ITextDocumentSyncHandler>().With(documentSelector, language));
 }
 public OmniSharpDocumentFormatRangeHandler(Mef.IRequestHandler <FormatRangeRequest, FormatRangeResponse> formatRangeHandler, DocumentSelector documentSelector) : base(
         new DocumentRangeFormattingRegistrationOptions()
 {
     DocumentSelector = documentSelector,
 })
 {
     _formatRangeHandler = formatRangeHandler;
 }
 public MyDocumentSymbolHandler(ProgressManager progressManager) : base(new DocumentSymbolRegistrationOptions()
 {
     DocumentSelector = DocumentSelector.ForLanguage("csharp")
 }, progressManager)
 {
 }