/// <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);
        }
Beispiel #2
0
 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);
 }