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>()); }
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>()); }
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>()); }
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); }
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); }
public override RpcResult DidSaveTextDocument(DidSaveTextDocumentParams args) { return(RpcResult.Error(new ResponseError { code = (int)ErrorCodes.RequestFailed, message = "Not supported" })); }
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); }
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); }
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); }
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); }
// 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())); } }
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>()); }
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); }
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)); }
public override Task <Unit> Handle(DidSaveTextDocumentParams request, CancellationToken cancellationToken) => _handler.Invoke(request, cancellationToken);
public abstract Task <Unit> Handle(DidSaveTextDocumentParams request, CancellationToken cancellationToken);
public Task <Unit> Handle(DidSaveTextDocumentParams request, CancellationToken cancellationToken) { return(Unit.Task); }
public Task <Unit> Handle(DidSaveTextDocumentParams notification, CancellationToken cancellationToken) => Unit.Task;
public override Task <Unit> Handle(DidSaveTextDocumentParams request, CancellationToken cancellationToken) { // nothing needs to be done when the document is saved return(Unit.Task); }