// // Constructors // public TypeScriptIndentEngine(TypeScriptFormattingPolicy policy, TextStylePolicy textPolicy) { if (policy == null) throw new ArgumentNullException ("policy"); if (textPolicy == null) throw new ArgumentNullException ("textPolicy"); this.policy = policy; this.textPolicy = textPolicy; stack = new IndentStack (this); linebuf = new StringBuilder (); Reset (); }
public override void Initialize() { base.Initialize (); IEnumerable<string> types = MonoDevelop.Ide.DesktopService.GetMimeTypeInheritanceChain (TypeScriptFormatter.MimeType); if (Document.Project != null && Document.Project.Policies != null) { policy = base.Document.Project.Policies.Get<TypeScriptFormattingPolicy> (types); textStylePolicy = base.Document.Project.Policies.Get<TextStylePolicy> (types); } if (Editor != null) { Editor.Options.Changed += (o, args) => { var project = Document.Project; if (project != null) { policy = project.Policies.Get<TypeScriptFormattingPolicy> (types); textStylePolicy = project.Policies.Get<TextStylePolicy> (types); } /* Editor.IndentationTracker = new IndentVirtualSpaceManager ( Editor, new DocumentStateTracker<TypeScriptIndentEngine> (new TypeScriptIndentEngine (policy, textStylePolicy), Editor) ); */ }; /* Editor.IndentationTracker = new IndentVirtualSpaceManager ( Editor, new DocumentStateTracker<TypeScriptIndentEngine> (new TypeScriptIndentEngine (policy, textStylePolicy), Editor) );*/ } InitTracker (); Document.Editor.Paste += HandleTextPaste; }
public TypeScriptTextEditorIndentation() { IEnumerable<string> types = MonoDevelop.Ide.DesktopService.GetMimeTypeInheritanceChain (TypeScriptFormatter.MimeType); policy = MonoDevelop.Projects.Policies.PolicyService.GetDefaultPolicy<TypeScriptFormattingPolicy> (types); textStylePolicy = MonoDevelop.Projects.Policies.PolicyService.GetDefaultPolicy<TextStylePolicy> (types); }
public string FormatText(TypeScriptFormattingPolicy policy, TextStylePolicy textPolicy, string mimeType, string input, int startOffset, int endOffset) { return input; /* var data = new TextEditorData (); data.Document.SuppressHighlightUpdate = true; data.Document.MimeType = mimeType; data.Document.FileName = "toformat.ts"; if (textPolicy != null) { data.Options.TabsToSpaces = textPolicy.TabsToSpaces; data.Options.TabSize = textPolicy.TabWidth; data.Options.IndentationSize = textPolicy.IndentWidth; data.Options.IndentStyle = textPolicy.RemoveTrailingWhitespace ? IndentStyle.Virtual : IndentStyle.Smart; } data.Text = input; var parser = new CSharpParser (); var compilationUnit = parser.Parse (data); bool hadErrors = parser.HasErrors; if (hadErrors) { // foreach (var e in parser.ErrorReportPrinter.Errors) // Console.WriteLine (e.Message); return input.Substring (startOffset, Math.Max (0, Math.Min (endOffset, input.Length) - startOffset)); } var originalVersion = data.Document.Version; var textEditorOptions = data.CreateNRefactoryTextEditorOptions (); var formattingVisitor = new AstFormattingVisitor ( policy.CreateOptions (), data.Document, textEditorOptions ) { HadErrors = hadErrors, FormattingMode = FormattingMode.Intrusive }; compilationUnit.AcceptVisitor (formattingVisitor); try { formattingVisitor.ApplyChanges (startOffset, endOffset - startOffset); } catch (Exception e) { LoggingService.LogError ("Error in code formatter", e); return input.Substring (startOffset, Math.Max (0, Math.Min (endOffset, input.Length) - startOffset)); } // check if the formatter has produced errors parser = new CSharpParser (); parser.Parse (data); if (parser.HasErrors) { LoggingService.LogError ("C# formatter produced source code errors. See console for output."); return input.Substring (startOffset, Math.Max (0, Math.Min (endOffset, input.Length) - startOffset)); } var currentVersion = data.Document.Version; string result = data.GetTextBetween (startOffset, originalVersion.MoveOffsetTo (currentVersion, endOffset, ICSharpCode.NRefactory.Editor.AnchorMovementType.Default)); data.Dispose (); return result; */ }