/// <summary>
        /// Retrieves contained language host for a given text buffer.
        /// </summary>
        /// <param name="editorView">Primary text view</param>
        /// <param name="editorBuffer">Contained language text buffer</param>
        /// <returns>Contained language host, <seealso cref="IContainedLanguageHost"/></returns>
        public IContainedLanguageHost GetContainedLanguageHost(IEditorView editorView, IEditorBuffer editorBuffer)
        {
            var containedLanguageHost = editorBuffer.GetService <IContainedLanguageHost>();

            if (containedLanguageHost == null)
            {
                var document = editorView.EditorBuffer.GetEditorDocument <IMdEditorDocument>();
                Debug.Assert(document != null);
                containedLanguageHost = new MdContainedLanguageHost(document, editorBuffer);
            }
            return(containedLanguageHost);
        }
Example #2
0
        private bool CanFormatRange(IEditorView editorView, IEditorBuffer editorBuffer, ITextRange formatRange)
        {
            // Make sure we are not formatting damaging the projected range in R Markdown
            // which looks like ```{r. 'r' should not separate from {.
            var host = editorBuffer.GetService <IContainedLanguageHost>();

            if (host != null)
            {
                var snapshot  = editorBuffer.CurrentSnapshot;
                var startLine = snapshot.GetLineNumberFromPosition(formatRange.Start);
                var endLine   = snapshot.GetLineNumberFromPosition(formatRange.End);
                for (var i = startLine; i <= endLine; i++)
                {
                    if (!host.CanFormatLine(editorView, editorBuffer, i))
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }