public XamlStylerConsole(Options options) { this.options = options; IStylerOptions stylerOptions = new StylerOptions(); if (this.options.Configuration != null) { stylerOptions = this.LoadConfiguration(this.options.Configuration); } this.stylerService = new StylerService(stylerOptions); }
private void Execute(Document document) { if (!IsFormatableDocument(document)) { return; } Properties xamlEditorProps = _dte.Properties["TextEditor", "XAML"]; var stylerOptions = GetDialogPage(typeof(PackageOptions)).AutomationObject as IStylerOptions; var solutionPath = String.IsNullOrEmpty(_dte.Solution?.FullName) ? String.Empty : Path.GetDirectoryName(_dte.Solution.FullName); var configPath = GetConfigPathForItem(document.Path, solutionPath); if (configPath != null) { stylerOptions = ((StylerOptions)stylerOptions).Clone(); stylerOptions.ConfigPath = configPath; } if (stylerOptions.UseVisualStudioIndentSize) { int outIndentSize; if (Int32.TryParse(xamlEditorProps.Item("IndentSize").Value.ToString(), out outIndentSize) && (outIndentSize > 0)) { stylerOptions.IndentSize = outIndentSize; } } stylerOptions.IndentWithTabs = (bool)xamlEditorProps.Item("InsertTabs").Value; StylerService styler = new StylerService(stylerOptions); var textDocument = (TextDocument)document.Object("TextDocument"); TextPoint currentPoint = textDocument.Selection.ActivePoint; int originalLine = currentPoint.Line; int originalOffset = currentPoint.LineCharOffset; EditPoint startPoint = textDocument.StartPoint.CreateEditPoint(); EditPoint endPoint = textDocument.EndPoint.CreateEditPoint(); string xamlSource = startPoint.GetText(endPoint); xamlSource = styler.StyleDocument(xamlSource); startPoint.ReplaceText(endPoint, xamlSource, 0); if (originalLine <= textDocument.EndPoint.Line) { textDocument.Selection.MoveToLineAndOffset(originalLine, originalOffset); } else { textDocument.Selection.GotoLine(textDocument.EndPoint.Line); } }