/// <summary> /// Retrieves contained language host for a given text buffer. /// </summary> /// <param name="textView">Primary text view</param> /// <param name="textBuffer">Contained language text buffer</param> /// <returns>Contained language host, <seealso cref="IContainedLanguageHost"/></returns> public IContainedLanguageHost GetContainedLanguageHost(ITextView textView, ITextBuffer textBuffer) { var containedLanguageHost = ServiceManager.GetService <IContainedLanguageHost>(textBuffer); if (containedLanguageHost == null) { var document = MdEditorDocument.FromTextBuffer(textView.TextDataModel.DocumentBuffer); containedLanguageHost = new MdContainedLanguageHost(document, textBuffer); } return(containedLanguageHost); }
public override CommandResult Invoke(Guid group, int id, object inputArg, ref object outputArg) { if (!TextView.Caret.InVirtualSpace) { var caretPosition = TextView.Caret.Position.BufferPosition; var document = MdEditorDocument.FindInProjectedBuffers(TextView.TextBuffer); var handler = document?.ContainedLanguageHandler; var codeRange = handler?.GetCodeBlockOfLocation(caretPosition); if (codeRange != null) { var code = TextView.TextBuffer.CurrentSnapshot.GetText(new Span(codeRange.Start, codeRange.Length)); code = MarkdownUtility.GetRContentFromMarkdownCodeBlock(code).Trim(); if (!string.IsNullOrWhiteSpace(code)) { try { _interactiveWorkflow.Operations.ExecuteExpression(code); } catch (RException) { } catch (OperationCanceledException) { } } } } return(CommandResult.Executed); }