public override void OnTheFlyFormat(PolicyContainer policyParent, IEnumerable <string> mimeTypeChain, TextEditorData data, int startOffset, int endOffset) { var parser = new CSharpParser(); var compilationUnit = parser.ParseSnippet(data); if (compilationUnit == null) { Console.WriteLine("couldn't parse : " + data.Text); return; } if (parser.HasErrors) { return; } var policy = policyParent.Get <CSharpFormattingPolicy> (mimeTypeChain); var adapter = new TextEditorDataAdapter(data); var formattingVisitor = new ICSharpCode.NRefactory.CSharp.AstFormattingVisitor(policy.CreateOptions(), adapter, new FormattingActionFactory(data)) { HadErrors = parser.HasErrors }; var changes = new List <ICSharpCode.NRefactory.CSharp.Refactoring.Action> (); changes.AddRange(formattingVisitor.Changes. Where(c => (startOffset <= c.Offset && c.Offset < endOffset))); using (var undo = data.OpenUndoGroup()) { MDRefactoringContext.MdScript.RunActions(changes, null); } }
public AstNode ParseText(string text) { using (TextEditorData data = new TextEditorData()) { data.Text = text; var parser = new CSharpParser(); return(parser.ParseSnippet(data)); } }
private string GetHighlighted() { var parser = new CSharpParser(); var nodes = parser.ParseSnippet(ref SourceCode); Document = new ReadOnlyDocument(SourceCode); foreach (var element in nodes) { Walk(element); } var merged = Merge(); var cleaned = ExtraCode.Remove(merged); return(cleaned); }