/// <summary> /// Beautifies a document. /// </summary> /// <param name="document">The document to beautify.</param> private void BeautifyDocument(Document document) { if (!IsFormattableDocument(document)) { return; } var xamlEditorProps = DTE.get_Properties("TextEditor", "XAML"); var insertTabs = (bool)xamlEditorProps.Item("InsertTabs").Value; var styler = new Styler() { IndentCharacter = insertTabs ? '\t' : ' ', IndentSize = Int32.Parse(xamlEditorProps.Item("IndentSize").Value.ToString()), Options = StylerOptions }; var textDocument = document.Object("TextDocument") as TextDocument; var currentPoint = textDocument.Selection.ActivePoint; int originalLine = currentPoint.Line; int originalOffset = currentPoint.LineCharOffset; var startPoint = textDocument.StartPoint.CreateEditPoint(); var endPoint = textDocument.EndPoint.CreateEditPoint(); var xamlSource = styler.Format(startPoint.GetText(endPoint)); startPoint.ReplaceText(endPoint, xamlSource, 0); if (originalLine <= textDocument.EndPoint.Line) textDocument.Selection.MoveToLineAndOffset(originalLine, originalOffset, false); else textDocument.Selection.GotoLine(textDocument.EndPoint.Line); }