/// <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); }
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); }