public async Task HandleAsync(RequestHoverText command, KernelInvocationContext context) { using var _ = new GCPressure(1024 * 1024); var document = _workspace.UpdateWorkingDocument(command.Code); var text = await document.GetTextAsync(); var cursorPosition = text.Lines.GetPosition(command.LinePosition); var service = QuickInfoService.GetService(document); var info = await service.GetQuickInfoAsync(document, cursorPosition); if (info == null) { return; } var scriptSpanStart = text.Lines.GetLinePosition(0); var linePosSpan = text.Lines.GetLinePositionSpan(info.Span); var correctedLinePosSpan = linePosSpan.SubtractLineOffset(scriptSpanStart); context.Publish( new HoverTextProduced( command, new[] { new FormattedValue("text/markdown", info.ToMarkdownString()) }, correctedLinePosSpan)); }
public HoverTextProduced(RequestHoverText command, IReadOnlyCollection <FormattedValue> content, LinePositionSpan?range = null) : base(command) { if (content.Count == 0) { throw new ArgumentException(nameof(content), "At least one content required."); } Content = content; _range = range; }
public HoverTextProduced(RequestHoverText command, IReadOnlyCollection <FormattedValue> content, LinePositionSpan linePositionSpan = null) : base(command) { if (content is null) { throw new ArgumentNullException(nameof(content)); } if (content.Count == 0) { throw new ArgumentException("At least one content required.", nameof(content)); } Content = content; _linePositionSpan = linePositionSpan; }
public async Task HandleAsync(RequestHoverText command, KernelInvocationContext context) { var document = _workspace.ForkDocument(command.Code); var text = await document.GetTextAsync(); var cursorPosition = text.Lines.GetPosition(command.Position); var service = QuickInfoService.GetService(document); var info = await service.GetQuickInfoAsync(document, cursorPosition); if (info == null) { return; } var scriptSpanStart = text.Lines.GetLinePosition(0); var linePosSpan = text.Lines.GetLinePositionSpan(info.Span); var correctedLinePosSpan = linePosSpan.SubtractLineOffset(scriptSpanStart); context.PublishHoverTextMarkdownResponse(command, info.ToMarkdownString(), correctedLinePosSpan); }
public static IEnumerable <object[]> Events() { foreach (var @event in events()) { yield return(new object[] { @event }); } IEnumerable <KernelEvent> events() { var submitCode = new SubmitCode("123"); yield return(new CodeSubmissionReceived( submitCode)); yield return(new CommandFailed( "Oooops!", submitCode)); yield return(new CommandFailed( new InvalidOperationException("Oooops!"), submitCode, "oops")); yield return(new CommandSucceeded(submitCode)); yield return(new CompleteCodeSubmissionReceived(submitCode)); var requestCompletion = new RequestCompletions("Console.Wri", new LinePosition(0, 11)); yield return(new CompletionsProduced( new[] { new CompletionItem( "WriteLine", "Method", "WriteLine", "WriteLine", "WriteLine", "Writes the line") }, requestCompletion)); yield return(new CompletionRequestReceived(requestCompletion)); yield return(new DiagnosticLogEntryProduced("oops!", submitCode)); yield return(new DisplayedValueProduced( new HtmlString("<b>hi!</b>"), new SubmitCode("b(\"hi!\")", "csharp", SubmissionType.Run), new[] { new FormattedValue("text/html", "<b>hi!</b>"), })); yield return(new DisplayedValueUpdated( new HtmlString("<b>hi!</b>"), "the-value-id", new SubmitCode("b(\"hi!\")", "csharp", SubmissionType.Run), new[] { new FormattedValue("text/html", "<b>hi!</b>"), })); yield return(new ErrorProduced("oops!")); yield return(new IncompleteCodeSubmissionReceived(submitCode)); yield return(new InputRequested("prompt", submitCode)); var requestHoverTextCommand = new RequestHoverText("document-contents", new LinePosition(1, 2)); yield return(new HoverTextProduced( requestHoverTextCommand, new[] { new FormattedValue("text/markdown", "markdown") }, new LinePositionSpan(new LinePosition(1, 2), new LinePosition(3, 4)))); yield return(new PackageAdded( new ResolvedPackageReference("ThePackage", "1.2.3", new[] { new FileInfo(Path.GetTempFileName()) }))); yield return(new PasswordRequested("password", submitCode)); yield return(new ReturnValueProduced( new HtmlString("<b>hi!</b>"), new SubmitCode("b(\"hi!\")", "csharp", SubmissionType.Run), new[] { new FormattedValue("text/html", "<b>hi!</b>"), })); yield return(new StandardErrorValueProduced( "oops!", submitCode, new[] { new FormattedValue("text/plain", "oops!"), })); yield return(new StandardOutputValueProduced( 123, new SubmitCode("Console.Write(123);", "csharp", SubmissionType.Run), new[] { new FormattedValue("text/plain", "123"), })); yield return(new WorkingDirectoryChanged( new DirectoryInfo("some/different/directory"), new ChangeWorkingDirectory(new DirectoryInfo("some/different/directory")))); } }
public Task HandleAsync(RequestHoverText command, KernelInvocationContext context) => HandleRequestHoverText(command, context);
public static void PublishHoverTextMarkdownResponse(this KernelInvocationContext context, RequestHoverText command, string content, LinePositionSpan?linePositionSpan = null) { context.PublishHoverTextResponse(command, new FormattedValue("text/markdown", content), linePositionSpan); }
public static void PublishHoverTextResponse(this KernelInvocationContext context, RequestHoverText command, FormattedValue value, LinePositionSpan?linePositionSpan = null) { context.PublishHoverTextResponse(command, new[] { value }, linePositionSpan); }
public static void PublishHoverTextResponse(this KernelInvocationContext context, RequestHoverText command, IReadOnlyCollection <FormattedValue> content, LinePositionSpan?linePositionSpan = null) { var response = new HoverTextProduced(command, content, linePositionSpan); context.Publish(response); }
public static void PublishHoverPlainTextResponse(this KernelInvocationContext context, RequestHoverText command, string content, LinePositionSpan linePositionSpan) { var response = new HoverPlainTextProduced(command, content, linePositionSpan); context.Publish(response); }
public static IEnumerable <object[]> Events() { foreach (var @event in events()) { yield return(new object[] { @event }); } IEnumerable <KernelEvent> events() { var submitCode = new SubmitCode("123"); yield return(new CodeSubmissionReceived( submitCode)); yield return(new CommandFailed( "Oooops!", submitCode)); yield return(new CommandFailed( new InvalidOperationException("Oooops!"), submitCode, "oops")); yield return(new CommandSucceeded(submitCode)); yield return(new CompleteCodeSubmissionReceived(submitCode)); var requestCompletion = new RequestCompletions("Console.Wri", new LinePosition(0, 11)); yield return(new CompletionsProduced( new[] { new CompletionItem( "WriteLine", "Method", "WriteLine", "WriteLine", "WriteLine", "Writes the line") }, requestCompletion)); yield return(new DiagnosticLogEntryProduced("oops!", submitCode)); yield return(new DiagnosticsProduced( new[] { new Diagnostic( new LinePositionSpan( new LinePosition(1, 2), new LinePosition(3, 4)), DiagnosticSeverity.Error, "code", "message") }, submitCode)); yield return(new DisplayedValueProduced( new HtmlString("<b>hi!</b>"), new SubmitCode("b(\"hi!\")", "csharp", SubmissionType.Run), new[] { new FormattedValue("text/html", "<b>hi!</b>"), })); yield return(new DisplayedValueUpdated( new HtmlString("<b>hi!</b>"), "the-value-id", new SubmitCode("b(\"hi!\")", "csharp", SubmissionType.Run), new[] { new FormattedValue("text/html", "<b>hi!</b>"), })); yield return(new ErrorProduced("oops!", submitCode)); yield return(new IncompleteCodeSubmissionReceived(submitCode)); var requestHoverTextCommand = new RequestHoverText("document-contents", new LinePosition(1, 2)); yield return(new HoverTextProduced( requestHoverTextCommand, new[] { new FormattedValue("text/markdown", "markdown") }, new LinePositionSpan(new LinePosition(1, 2), new LinePosition(3, 4)))); yield return(new KernelReady()); yield return(new InteractiveDocumentParsed(new Documents.InteractiveDocument(new[] { new InteractiveDocumentElement("language", "contents", new InteractiveDocumentOutputElement[] { new DisplayElement(new Dictionary <string, object>() { { "text/html", "<b></b>" } }), new TextElement("text"), new ErrorElement("e-name", "e-value", new[] { "at func1()", "at func2()" }) }) }), new ParseInteractiveDocument("interactive.ipynb", new byte[0]))); yield return(new InteractiveDocumentSerialized(new byte[] { 0x01, 0x02, 0x03, 0x04 }, new SerializeInteractiveDocument("interactive.ipynb", null, "\n"))); yield return(new PackageAdded( new ResolvedPackageReference( packageName: "ThePackage", packageVersion: "1.2.3", assemblyPaths: new[] { "/path/to/a.dll" }, packageRoot: "/the/package/root", probingPaths: new[] { "/probing/path/1", "/probing/path/2" }), new SubmitCode("#r \"nuget:ThePackage,1.2.3\""))); yield return(new ReturnValueProduced( new HtmlString("<b>hi!</b>"), new SubmitCode("b(\"hi!\")", "csharp", SubmissionType.Run), new[] { new FormattedValue("text/html", "<b>hi!</b>"), })); yield return(new SignatureHelpProduced( new RequestSignatureHelp("sig-help-contents", new LinePosition(1, 2)), new[] { new SignatureInformation("label", new FormattedValue("text/html", "sig-help-result"), new[] { new ParameterInformation("param1", new FormattedValue("text/html", "param1")), new ParameterInformation("param2", new FormattedValue("text/html", "param2")) }) }, 0, 1)); yield return(new StandardErrorValueProduced( submitCode, new[] { new FormattedValue("text/plain", "oops!"), })); yield return(new StandardOutputValueProduced( new SubmitCode("Console.Write(123);", "csharp", SubmissionType.Run), new[] { new FormattedValue("text/plain", "123"), })); yield return(new WorkingDirectoryChanged( "some/different/directory", new ChangeWorkingDirectory("some/different/directory"))); yield return(new KernelExtensionLoaded(new SubmitCode(@"#r ""nuget:package"" "))); } }
public static IEnumerable <object[]> Events() { foreach (var @event in events().Select(e => { e.Command.Properties["id"] = "command-id"; return(e); })) { yield return(new object[] { @event }); } IEnumerable <KernelEvent> events() { var compileProject = new CompileProject("123"); yield return(new AssemblyProduced(compileProject, new Base64EncodedAssembly("01020304"))); var submitCode = new SubmitCode("123"); yield return(new CodeSubmissionReceived( submitCode)); yield return(new CommandFailed( "Oooops!", submitCode)); yield return(new CommandFailed( new InvalidOperationException("Oooops!"), submitCode, "oops")); yield return(new CommandSucceeded(submitCode)); yield return(new CompleteCodeSubmissionReceived(submitCode)); var requestCompletion = new RequestCompletions("Console.Wri", new LinePosition(0, 11)); yield return(new CompletionsProduced( new[] { new CompletionItem( "WriteLine", "Method", "WriteLine", "WriteLine", "WriteLine", "Writes the line") }, requestCompletion)); yield return(new DiagnosticLogEntryProduced("oops!", submitCode)); yield return(new DiagnosticsProduced( new[] { new Diagnostic( new LinePositionSpan( new LinePosition(1, 2), new LinePosition(3, 4)), DiagnosticSeverity.Error, "code", "message") }, submitCode)); yield return(new DisplayedValueProduced( new HtmlString("<b>hi!</b>"), new SubmitCode("b(\"hi!\")", "csharp", SubmissionType.Run), new[] { new FormattedValue("text/html", "<b>hi!</b>"), })); yield return(new DisplayedValueUpdated( new HtmlString("<b>hi!</b>"), "the-value-id", new SubmitCode("b(\"hi!\")", "csharp", SubmissionType.Run), new[] { new FormattedValue("text/html", "<b>hi!</b>"), })); var openDocument = new OpenDocument("path"); yield return(new DocumentOpened(openDocument, "path", null, "file contents")); yield return(new ErrorProduced("oops!", submitCode)); yield return(new IncompleteCodeSubmissionReceived(submitCode)); var requestHoverTextCommand = new RequestHoverText("document-contents", new LinePosition(1, 2)); yield return(new HoverTextProduced( requestHoverTextCommand, new[] { new FormattedValue("text/markdown", "markdown") }, new LinePositionSpan(new LinePosition(1, 2), new LinePosition(3, 4)))); yield return(new KernelInfoProduced( new KernelInfo("javascript", "javascript") { Aliases = new[] { "js" }, DestinationUri = new Uri("kernel://vscode/javascript"), SupportedDirectives = new[] { new DirectiveInfo("#r") }, SupportedKernelCommands = new[] { new KernelCommandInfo(nameof(SubmitCode)) } }, new RequestKernelInfo())); yield return(new KernelReady()); yield return(new PackageAdded( new ResolvedPackageReference( packageName: "ThePackage", packageVersion: "1.2.3", assemblyPaths: new[] { "/path/to/a.dll" }, packageRoot: "/the/package/root", probingPaths: new[] { "/probing/path/1", "/probing/path/2" }), new SubmitCode("#r \"nuget:ThePackage,1.2.3\""))); yield return(new ReturnValueProduced( new HtmlString("<b>hi!</b>"), new SubmitCode("b(\"hi!\")", "csharp", SubmissionType.Run), new[] { new FormattedValue("text/html", "<b>hi!</b>"), })); yield return(new SignatureHelpProduced( new RequestSignatureHelp("sig-help-contents", new LinePosition(1, 2)), new[] { new SignatureInformation("label", new FormattedValue("text/html", "sig-help-result"), new[] { new ParameterInformation("param1", new FormattedValue("text/html", "param1")), new ParameterInformation("param2", new FormattedValue("text/html", "param2")) }) }, 0, 1)); yield return(new StandardErrorValueProduced( submitCode, new[] { new FormattedValue("text/plain", "oops!"), })); yield return(new StandardOutputValueProduced( new SubmitCode("Console.Write(123);", "csharp", SubmissionType.Run), new[] { new FormattedValue("text/plain", "123"), })); yield return(new WorkingDirectoryChanged( "some/different/directory", new ChangeWorkingDirectory("some/different/directory"))); yield return(new KernelExtensionLoaded(new SubmitCode(@"#r ""nuget:package"" "))); yield return(new ValueInfosProduced(new[] { new KernelValueInfo("a", typeof(string)), new KernelValueInfo("b", typeof(string)), new KernelValueInfo("c", typeof(string)) }, new RequestValueInfos("csharp"))); yield return(new ValueProduced("raw value", "a", new FormattedValue(HtmlFormatter.MimeType, "<span>formatted value</span>"), new RequestValue("a", "csharp", HtmlFormatter.MimeType))); yield return(new CommandCancelled(new Cancel(), new SubmitCode("var value = 1;", "csharp"))); yield return(new InputProduced("user input", new GetInput(targetKernelName: "vscode"))); } }
public static TextDocument FromDocumentContents(string code) { return(new TextDocument(RequestHoverText.MakeDataUriFromContents(code))); }
public Task HandleAsync(RequestHoverText command, KernelInvocationContext context) { return(SendCommandToRemoteKernel(command)); }
private Task <KernelCommandResult> SendHoverRequest(Kernel kernel, string code, int line, int character) { var command = new RequestHoverText(code, new LinePosition(line, character)); return(kernel.SendAsync(command)); }
private Task <IKernelCommandResult> SendHoverRequest(KernelBase kernel, string code, int line, int character) { var command = new RequestHoverText(RequestHoverText.MakeDataUriFromContents(code), new LinePosition(line, character)); return(kernel.SendAsync(command)); }
public static IEnumerable <object[]> Events() { foreach (var @event in events()) { yield return(new object[] { @event }); } IEnumerable <KernelEvent> events() { var submitCode = new SubmitCode("123"); yield return(new CodeSubmissionReceived( submitCode)); yield return(new CommandFailed( "Oooops!", submitCode)); yield return(new CommandFailed( new InvalidOperationException("Oooops!"), submitCode, "oops")); yield return(new CommandSucceeded(submitCode)); yield return(new CompleteCodeSubmissionReceived(submitCode)); var requestCompletion = new RequestCompletions("Console.Wri", new LinePosition(0, 11)); yield return(new CompletionsProduced( new[] { new CompletionItem( "WriteLine", "Method", "WriteLine", "WriteLine", "WriteLine", "Writes the line") }, requestCompletion)); yield return(new DiagnosticLogEntryProduced("oops!", submitCode)); yield return(new DiagnosticsProduced( new[] { new Diagnostic( new LinePositionSpan( new LinePosition(1, 2), new LinePosition(3, 4)), DiagnosticSeverity.Error, "code", "message") }, submitCode)); yield return(new DisplayedValueProduced( new HtmlString("<b>hi!</b>"), new SubmitCode("b(\"hi!\")", "csharp", SubmissionType.Run), new[] { new FormattedValue("text/html", "<b>hi!</b>"), })); yield return(new DisplayedValueUpdated( new HtmlString("<b>hi!</b>"), "the-value-id", new SubmitCode("b(\"hi!\")", "csharp", SubmissionType.Run), new[] { new FormattedValue("text/html", "<b>hi!</b>"), })); yield return(new ErrorProduced("oops!")); yield return(new IncompleteCodeSubmissionReceived(submitCode)); yield return(new InputRequested("prompt", submitCode)); var requestHoverTextCommand = new RequestHoverText("document-contents", new LinePosition(1, 2)); yield return(new HoverTextProduced( requestHoverTextCommand, new[] { new FormattedValue("text/markdown", "markdown") }, new LinePositionSpan(new LinePosition(1, 2), new LinePosition(3, 4)))); yield return(new KernelReady()); yield return(new PackageAdded( new ResolvedPackageReference( packageName: "ThePackage", packageVersion: "1.2.3", assemblyPaths: new[] { "/path/to/a.dll" }, packageRoot: "/the/package/root", probingPaths: new[] { "/probing/path/1", "/probing/path/2" }))); yield return(new PasswordRequested("password", submitCode)); yield return(new ReturnValueProduced( new HtmlString("<b>hi!</b>"), new SubmitCode("b(\"hi!\")", "csharp", SubmissionType.Run), new[] { new FormattedValue("text/html", "<b>hi!</b>"), })); yield return(new StandardErrorValueProduced( submitCode, new[] { new FormattedValue("text/plain", "oops!"), })); yield return(new StandardOutputValueProduced( new SubmitCode("Console.Write(123);", "csharp", SubmissionType.Run), new[] { new FormattedValue("text/plain", "123"), })); yield return(new WorkingDirectoryChanged( "some/different/directory", new ChangeWorkingDirectory("some/different/directory"))); yield return(new KernelExtensionLoaded(new SubmitCode(@"#r ""nuget:package"" "))); } }