Esempio n. 1
0
        public async Task ShouldRouteToCorrect_Notification_WithManyHandlers()
        {
            var textDocumentSyncHandler  = TextDocumentSyncHandlerExtensions.With(DocumentSelector.ForPattern("**/*.cs"));
            var textDocumentSyncHandler2 = TextDocumentSyncHandlerExtensions.With(DocumentSelector.ForPattern("**/*.cake"));

            textDocumentSyncHandler.Handle(Arg.Any <DidSaveTextDocumentParams>()).Returns(Task.CompletedTask);
            textDocumentSyncHandler2.Handle(Arg.Any <DidSaveTextDocumentParams>()).Returns(Task.CompletedTask);

            var collection = new HandlerCollection {
                textDocumentSyncHandler, textDocumentSyncHandler2
            };
            var mediator = new LspRequestRouter(collection, _testLoggerFactory);

            var @params = new DidSaveTextDocumentParams()
            {
                TextDocument = new TextDocumentIdentifier(new Uri("file:///c:/test/123.cake"))
            };

            var request = new Notification("textDocument/didSave", JObject.Parse(JsonConvert.SerializeObject(@params)));

            await mediator.RouteNotification(mediator.GetDescriptor(request), request);

            await textDocumentSyncHandler.Received(0).Handle(Arg.Any <DidSaveTextDocumentParams>());

            await textDocumentSyncHandler2.Received(1).Handle(Arg.Any <DidSaveTextDocumentParams>());
        }
Esempio n. 2
0
        public async Task ShouldRouteToCorrect_Request()
        {
            var textDocumentSyncHandler = TextDocumentSyncHandlerExtensions.With(DocumentSelector.ForPattern("**/*.cs"));

            textDocumentSyncHandler.Handle(Arg.Any <DidSaveTextDocumentParams>()).Returns(Task.CompletedTask);

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

            codeActionHandler.GetRegistrationOptions().Returns(new TextDocumentRegistrationOptions()
            {
                DocumentSelector = DocumentSelector.ForPattern("**/*.cs")
            });
            codeActionHandler
            .Handle(Arg.Any <CodeActionParams>(), Arg.Any <CancellationToken>())
            .Returns(new CommandContainer());

            var collection = new HandlerCollection {
                textDocumentSyncHandler, codeActionHandler
            };
            var mediator = new LspRequestRouter(collection, _testLoggerFactory);

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

            var request = new Request(id, "textDocument/codeAction", JObject.Parse(JsonConvert.SerializeObject(@params)));

            await mediator.RouteRequest(mediator.GetDescriptor(request), request);

            await codeActionHandler.Received(1).Handle(Arg.Any <CodeActionParams>(), Arg.Any <CancellationToken>());
        }
        public async Task ShouldRouteToCorrect_Notification()
        {
            var textDocumentSyncHandler = TextDocumentSyncHandlerExtensions.With(DocumentSelector.ForPattern("**/*.cs"), "csharp");

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

            var collection = new HandlerCollection(SupportedCapabilitiesFixture.AlwaysTrue, new TextDocumentIdentifiers())
            {
                textDocumentSyncHandler
            };

            AutoSubstitute.Provide <IHandlerCollection>(collection);
            AutoSubstitute.Provide <IEnumerable <ILspHandlerDescriptor> >(collection);
            var mediator = AutoSubstitute.Resolve <LspRequestRouter>();

            var @params = new DidSaveTextDocumentParams()
            {
                TextDocument = new TextDocumentIdentifier(new Uri("file:///c:/test/123.cs"))
            };

            var request = new Notification(DocumentNames.DidSave, JObject.Parse(JsonConvert.SerializeObject(@params, new Serializer(ClientVersion.Lsp3).Settings)));

            await mediator.RouteNotification(mediator.GetDescriptor(request), request, CancellationToken.None);

            await textDocumentSyncHandler.Received(1).Handle(Arg.Any <DidSaveTextDocumentParams>(), Arg.Any <CancellationToken>());
        }
Esempio n. 4
0
            public override async Task <Unit> Handle(DidSaveTextDocumentParams request,
                                                     CancellationToken cancellationToken)
            {
                await _onSaveHandler.Invoke(request, _capability, cancellationToken);

                return(Unit.Value);
            }
        public async Task ShouldRouteToCorrect_Notification()
        {
            var textDocumentSyncHandler = TextDocumentSyncHandlerExtensions.With(DocumentSelector.ForPattern("**/*.cs"));

            textDocumentSyncHandler.Handle(Arg.Any <DidSaveTextDocumentParams>()).Returns(Task.CompletedTask);

            var collection = new HandlerCollection {
                textDocumentSyncHandler
            };
            var handlerMatcherCollection = new HandlerMatcherCollection {
                new TextDocumentMatcher(_testLoggerFactory.CreateLogger <TextDocumentMatcher>(), collection.TextDocumentSyncHandlers)
            };
            var mediator = new LspRequestRouter(collection, _testLoggerFactory, handlerMatcherCollection, new Serializer());

            var @params = new DidSaveTextDocumentParams()
            {
                TextDocument = new TextDocumentIdentifier(new Uri("file:///c:/test/123.cs"))
            };

            var request = new Notification(DocumentNames.DidSave, JObject.Parse(JsonConvert.SerializeObject(@params, new Serializer(ClientVersion.Lsp3).Settings)));

            await mediator.RouteNotification(mediator.GetDescriptor(request), request);

            await textDocumentSyncHandler.Received(1).Handle(Arg.Any <DidSaveTextDocumentParams>());
        }
Esempio n. 6
0
        public async Task <Unit> Handle(DidSaveTextDocumentParams request, CancellationToken cancellationToken)
        {
            await Task.Yield();

            await Task.Run(() => Program.AnalyticsApi.TrackEvent("File-Close", "File closed"), cancellationToken);

            return(Unit.Value);
        }
Esempio n. 7
0
        public Task <Unit> Handle(DidSaveTextDocumentParams request, CancellationToken cancellationToken)
        {
            PublishValidateDiagnostics(request.Text, request.TextDocument.Uri);
            _workspaceService.UpdateMarineFileBuffer(request.TextDocument.Uri.Path,
                                                     request.Text);

            return(Unit.Task);
        }
Esempio n. 8
0
 public override RpcResult DidSaveTextDocument(DidSaveTextDocumentParams args)
 {
     return(RpcResult.Error(new ResponseError
     {
         code = (int)ErrorCodes.RequestFailed,
         message = "Not supported"
     }));
 }
Esempio n. 9
0
        public async Task <Unit> Handle(DidSaveTextDocumentParams request, CancellationToken cancellationToken)
        {
            if (Path.GetExtension(request.TextDocument.Uri.ToFilePath()).CaseInsensitiveEquals(".ppj"))
            {
                await UpdateProjects(UpdateProjectsOptions.ReloadProjects);
            }

            return(Unit.Value);
        }
        public Task <Unit> Handle(DidSaveTextDocumentParams notification, CancellationToken token)
        {
            _router.Window.LogMessage(new LogMessageParams()
            {
                Type    = MessageType.Log,
                Message = "Proto file saved: " + notification.TextDocument.Uri.AbsolutePath,
            });

            return(Unit.Task);
        }
        public Task <Unit> Handle(DidSaveTextDocumentParams request, CancellationToken cancellationToken)
        {
            string text = request.Text;
            string path = PathHelper.GetPathFromFileUri(request.TextDocument.Uri);

            TryUpdate(path, text);

            Validate();

            return(Unit.Task);
        }
Esempio n. 12
0
 public override void OnDidSaveTextDocument(DidSaveTextDocumentParams parameters)
 {
     if (parameters.text != null)
     {
         DidChangeTextDocumentParams    dctdp = new DidChangeTextDocumentParams(parameters.textDocument.uri);
         TextDocumentContentChangeEvent tdcce = new TextDocumentContentChangeEvent();
         tdcce.text           = parameters.text;
         dctdp.contentChanges = new TextDocumentContentChangeEvent[] { tdcce };
         OnDidChangeTextDocument(dctdp);
     }
 }
        public override async Task <Unit> Handle(DidSaveTextDocumentParams notification, CancellationToken cancellationToken)
        {
            _logger.LogTrace("received save notification {}", notification.TextDocument.Uri);
            var document = await _documents.SaveDocumentAsync(notification.TextDocument, cancellationToken);

            if (document != null)
            {
                _diagnosticPublisher.PublishDiagnostics(document, cancellationToken);
            }
            return(Unit.Value);
        }
 public async override Task <Unit> Handle(DidSaveTextDocumentParams notification, CancellationToken cancellationToken)
 {
     if (Capability?.DidSave == true)
     {
         await _bufferHandler.Handle(new UpdateBufferRequest()
         {
             FileName = Helpers.FromUri(notification.TextDocument.Uri),
             Buffer   = notification.Text
         });
     }
     return(Unit.Value);
 }
Esempio n. 15
0
 public Task Handle(DidSaveTextDocumentParams notification)
 {
     if (_capability?.DidSave == true)
     {
         return(_bufferHandler.Handle(new UpdateBufferRequest()
         {
             FileName = Helpers.FromUri(notification.TextDocument.Uri),
             Buffer = notification.Text
         }));
     }
     return(Task.CompletedTask);
 }
Esempio n. 16
0
        public async Task ShouldRouteToCorrect_Notification_WithManyHandlers()
        {
            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 textDocumentIdentifiers = new TextDocumentIdentifiers();

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

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

            var @params = new DidSaveTextDocumentParams {
                TextDocument = new TextDocumentIdentifier(new Uri("file:///c:/test/123.cake"))
            };

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

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

            await textDocumentSyncHandler.Received(0)
            .Handle(Arg.Any <DidSaveTextDocumentParams>(), Arg.Any <CancellationToken>());

            await textDocumentSyncHandler2.Received(1)
            .Handle(Arg.Any <DidSaveTextDocumentParams>(), Arg.Any <CancellationToken>());
        }
 // Handle save.
 public Task <Unit> Handle(DidSaveTextDocumentParams saveParams, CancellationToken token)
 {
     if (_sendTextOnSave)
     {
         var document = TextDocumentFromUri(saveParams.TextDocument.Uri);
         document.Text = saveParams.Text;
         return(Parse(document));
     }
     else
     {
         return(Parse(saveParams.TextDocument.Uri));
     }
 }
        public override async Task <Unit> Handle(DidSaveTextDocumentParams notification, CancellationToken token)
        {
            ScriptFile savedFile = _workspaceService.GetFile(notification.TextDocument.Uri);

            if (savedFile != null)
            {
                if (_remoteFileManagerService.IsUnderRemoteTempPath(savedFile.FilePath))
                {
                    await _remoteFileManagerService.SaveRemoteFileAsync(savedFile.FilePath).ConfigureAwait(false);
                }
            }
            return(Unit.Value);
        }
Esempio n. 19
0
 // Handle save.
 public Task <Unit> Handle(DidSaveTextDocumentParams saveParams, CancellationToken token)
 {
     if (_sendTextOnSave)
     {
         var document = TextDocumentFromUri(saveParams.TextDocument.Uri.ToUri());
         document.UpdateIfChanged(saveParams.Text);
         return(Parse(document));
     }
     else
     {
         return(Parse(saveParams.TextDocument.Uri.ToUri()));
     }
 }
Esempio n. 20
0
        public void SimpleTest(string expected)
        {
            var model = new DidSaveTextDocumentParams {
                Text         = "content",
                TextDocument = new TextDocumentIdentifier(new Uri("file:///abc/def.cs"))
            };
            var result = Fixture.SerializeObject(model);

            result.Should().Be(expected);

            var deresult = new LspSerializer(ClientVersion.Lsp3).DeserializeObject <DidSaveTextDocumentParams>(expected);

            deresult.Should().BeEquivalentTo(model);
        }
        public async Task ShouldRouteToCorrect_Request()
        {
            var textDocumentSyncHandler =
                TextDocumentSyncHandlerExtensions.With(DocumentSelector.ForPattern("**/*.cs"), "csharp");

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

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

            codeActionHandler.GetRegistrationOptions().Returns(new CodeActionRegistrationOptions {
                DocumentSelector = DocumentSelector.ForPattern("**/*.cs")
            });
            codeActionHandler
            .Handle(Arg.Any <CodeActionParams>(), Arg.Any <CancellationToken>())
            .Returns(new CommandOrCodeActionContainer());

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

            AutoSubstitute.Provide <IHandlerCollection>(collection);
            AutoSubstitute.Provide <IEnumerable <ILspHandlerDescriptor> >(collection);
            var mediator = AutoSubstitute.Resolve <LspRequestRouter>();

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

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

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

            await codeActionHandler.Received(1).Handle(Arg.Any <CodeActionParams>(), Arg.Any <CancellationToken>());
        }
Esempio n. 22
0
        public override Task <Unit> Handle(DidSaveTextDocumentParams request, CancellationToken cancellationToken)
        {
            var documentUri = request.TextDocument.Uri;

            // If the documentUri corresponds to bicepconfig.json and there's an entry in activeBicepConfigCache,
            // we'll use the last known configuration and the one from currently saved config file to figure out
            // if we need to send out telemetry information regarding the config change.
            // We'll also update the entry in activeBicepConfigCache.
            if (ConfigurationHelper.IsBicepConfigFile(documentUri))
            {
                bicepConfigChangeHandler.HandleBicepConfigSaveEvent(documentUri);
            }

            return(Unit.Task);
        }
Esempio n. 23
0
        public Task <Unit> Handle(DidSaveTextDocumentParams request, CancellationToken cancellationToken)
        {
            if (request.Text != null)
            {
                _bufferManager.Put(request.TextDocument.Uri, request.Text);
            }

            var script = new kOS.Tools.Script();

            var text   = _bufferManager.Get(request.TextDocument.Uri);
            var errors = script.Compile(null, 0, text, null, null);

            var diagnostics = new Diagnostic[errors.Count];

            if (errors.Count > 0)
            {
                for (int i = 0; i < errors.Count; i++)
                {
                    var error = errors[i];
                    diagnostics[i] = new Diagnostic()
                    {
                        Code    = error.Code,
                        Message = error.Message,
                        Range   = new Range(
                            new Position(error.Line - 1, error.Column - 1),
                            new Position(error.Line - 1, (error.Column - 1) + error.Length)
                            ),
                        Severity           = DiagnosticSeverity.Error,
                        RelatedInformation = new Container <DiagnosticRelatedInformation>(),
                        Source             = script.GetSource()
                    };
                }
            }
            _server.Document.PublishDiagnostics(new PublishDiagnosticsParams()
            {
                Uri         = request.TextDocument.Uri,
                Diagnostics = new Container <Diagnostic>(diagnostics)
            });
            return(Unit.Task);
        }
        public async Task ShouldRouteToCorrect_Request()
        {
            var textDocumentSyncHandler = TextDocumentSyncHandlerExtensions.With(DocumentSelector.ForPattern("**/*.cs"));

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

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

            codeActionHandler.GetRegistrationOptions().Returns(new TextDocumentRegistrationOptions()
            {
                DocumentSelector = DocumentSelector.ForPattern("**/*.cs")
            });
            codeActionHandler
            .Handle(Arg.Any <CodeActionParams>(), Arg.Any <CancellationToken>())
            .Returns(new CommandOrCodeActionContainer());

            var collection = new HandlerCollection(SupportedCapabilitiesFixture.AlwaysTrue)
            {
                textDocumentSyncHandler, codeActionHandler
            };

            AutoSubstitute.Provide <IHandlerCollection>(collection);
            var mediator = AutoSubstitute.Resolve <LspRequestRouter>();

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

            var request = new Request(id, DocumentNames.CodeAction, JObject.Parse(JsonConvert.SerializeObject(@params, new Serializer(ClientVersion.Lsp3).Settings)));

            await mediator.RouteRequest(mediator.GetDescriptor(request), request);

            await codeActionHandler.Received(1).Handle(Arg.Any <CodeActionParams>(), Arg.Any <CancellationToken>());
        }
 public override Task <Unit> Handle(DidSaveTextDocumentParams request, CancellationToken cancellationToken)
 {
     return(Task.FromResult(Unit.Value));
 }
Esempio n. 26
0
 public override Task <Unit> Handle(DidSaveTextDocumentParams request, CancellationToken cancellationToken) => _handler.Invoke(request, cancellationToken);
Esempio n. 27
0
 public abstract Task <Unit> Handle(DidSaveTextDocumentParams request, CancellationToken cancellationToken);
 public Task <Unit> Handle(DidSaveTextDocumentParams request, CancellationToken cancellationToken)
 {
     return(Unit.Task);
 }
Esempio n. 29
0
 public Task <Unit> Handle(DidSaveTextDocumentParams notification, CancellationToken cancellationToken) => Unit.Task;
Esempio n. 30
0
 public override Task <Unit> Handle(DidSaveTextDocumentParams request, CancellationToken cancellationToken)
 {
     // nothing needs to be done when the document is saved
     return(Unit.Task);
 }