void OnParseInformationChanged (object sender, MonoDevelop.Projects.Dom.ParsedDocumentEventArgs args) { if (FileName == args.FileName && args.ParsedDocument != null) { parsedDoc = (T4ParsedDocument)args.ParsedDocument; RefreshOutline (); } }
public override void Initialize () { base.Initialize (); MonoDevelop.Projects.Dom.Parser.ProjectDomService.ParsedDocumentUpdated += OnParseInformationChanged; parsedDoc = (T4ParsedDocument)Document.ParsedDocument; if (parsedDoc != null) { RefreshOutline (); } }
public override ParsedDocument Parse (bool storeAst, string fileName, TextReader content, Project project = null) { ParsedTemplate template = new ParsedTemplate (fileName); try { var tk = new Tokeniser (fileName, content.ReadToEnd ()); template.ParseWithoutIncludes (tk); } catch (ParserException ex) { template.LogError (ex.Message, ex.Location); } T4ParsedDocument doc = new T4ParsedDocument (fileName, template.RawSegments); doc.Flags |= ParsedDocumentFlags.NonSerializable; foreach (System.CodeDom.Compiler.CompilerError err in template.Errors) doc.Errors.Add (new Error (err.IsWarning? ErrorType.Warning : ErrorType.Error, err.ErrorText, err.Line, err.Column)); return doc; }
public override System.Threading.Tasks.Task<ParsedDocument> Parse (ParseOptions parseOptions, System.Threading.CancellationToken cancellationToken) { var fileName = parseOptions.FileName; ParsedTemplate template = new ParsedTemplate (fileName); var readOnlyDoc = TextEditorFactory.CreateNewReadonlyDocument (parseOptions.Content, fileName); try { var tk = new Tokeniser (fileName, readOnlyDoc.Text); template.ParseWithoutIncludes (tk); } catch (ParserException ex) { template.LogError (ex.Message, ex.Location); } var errors = new List<Error> (); foreach (System.CodeDom.Compiler.CompilerError err in template.Errors) { errors.Add (new Error (err.IsWarning ? ErrorType.Warning : ErrorType.Error, err.ErrorText, new DocumentLocation (err.Line, err.Column))); } var doc = new T4ParsedDocument (fileName, template.RawSegments, errors); doc.Flags |= ParsedDocumentFlags.NonSerializable; return System.Threading.Tasks.Task.FromResult((ParsedDocument)doc); }
public override ParsedDocument Parse(ProjectDom dom, string fileName, string content) { ParsedTemplate template = new ParsedTemplate(fileName); try { Tokeniser tk = new Tokeniser(fileName, content); template.ParseWithoutIncludes(tk); } catch (ParserException ex) { template.LogError(ex.Message, ex.Location); } T4ParsedDocument doc = new T4ParsedDocument(fileName, template.RawSegments); doc.Flags |= ParsedDocumentFlags.NonSerializable; foreach (System.CodeDom.Compiler.CompilerError err in template.Errors) { doc.Errors.Add(new Error(err.IsWarning? ErrorType.Warning : ErrorType.Error, err.Line, err.Column, err.ErrorText)); } return(doc); }
public override ParsedDocument Parse(bool storeAst, string fileName, TextReader content, Project project = null) { ParsedTemplate template = new ParsedTemplate(fileName); try { var tk = new Tokeniser(fileName, content.ReadToEnd()); template.ParseWithoutIncludes(tk); } catch (ParserException ex) { template.LogError(ex.Message, ex.Location); } var errors = new List <Error> (); foreach (System.CodeDom.Compiler.CompilerError err in template.Errors) { errors.Add(new Error(err.IsWarning ? ErrorType.Warning : ErrorType.Error, err.ErrorText, err.Line, err.Column)); } var doc = new T4ParsedDocument(fileName, template.RawSegments, errors); doc.Flags |= ParsedDocumentFlags.NonSerializable; return(doc); }
public override System.Threading.Tasks.Task <ParsedDocument> Parse(ParseOptions parseOptions, System.Threading.CancellationToken cancellationToken) { var fileName = parseOptions.FileName; ParsedTemplate template = new ParsedTemplate(fileName); var readOnlyDoc = TextEditorFactory.CreateNewReadonlyDocument(parseOptions.Content, fileName); try { var tk = new Tokeniser(fileName, readOnlyDoc.Text); template.ParseWithoutIncludes(tk); } catch (ParserException ex) { template.LogError(ex.Message, ex.Location); } var errors = new List <Error> (); foreach (System.CodeDom.Compiler.CompilerError err in template.Errors) { errors.Add(new Error(err.IsWarning ? ErrorType.Warning : ErrorType.Error, err.ErrorText, new DocumentLocation(err.Line, err.Column))); } var doc = new T4ParsedDocument(fileName, template.RawSegments, errors); doc.Flags |= ParsedDocumentFlags.NonSerializable; return(System.Threading.Tasks.Task.FromResult((ParsedDocument)doc)); }
void HandleDocumentDocumentParsed (object sender, EventArgs e) { parsedDoc = (T4ParsedDocument)Document.ParsedDocument; if (parsedDoc != null) RefreshOutline (); }
void RefillOutlineStore (T4ParsedDocument doc, Gtk.TreeStore store) { if (doc == null) return; Gdk.Color normal = new Gdk.Color (0x00, 0x00, 0x00); Gdk.Color blue = new Gdk.Color (0x10, 0x40, 0xE0); Gdk.Color green = new Gdk.Color (0x08, 0xC0, 0x30); Gdk.Color orange = new Gdk.Color (0xFF, 0xA0, 0x00); Gdk.Color red = new Gdk.Color (0xC0, 0x00, 0x20); Gtk.TreeIter parent = Gtk.TreeIter.Zero; foreach (Mono.TextTemplating.ISegment segment in doc.TemplateSegments) { Mono.TextTemplating.Directive dir = segment as Mono.TextTemplating.Directive; if (dir != null) { parent = Gtk.TreeIter.Zero; store.AppendValues ("<#@ " + dir.Name + " #>", red, segment); continue; } Mono.TextTemplating.TemplateSegment ts = segment as Mono.TextTemplating.TemplateSegment; if (ts != null) { string name; if (ts.Text.Length > 40) { name = ts.Text.Substring (0, 40) + "..."; } else { name = ts.Text; } name = name.Replace ('\n', ' ').Trim (); if (name.Length == 0) continue; if (ts.Type == Mono.TextTemplating.SegmentType.Expression) { store.AppendValues (parent, "<#= " + name + " #>", orange, segment); } else { if (ts.Type == Mono.TextTemplating.SegmentType.Block) { name = "<#" + name + " #>"; store.AppendValues (name, blue, segment); parent = Gtk.TreeIter.Zero; } else if (ts.Type == Mono.TextTemplating.SegmentType.Helper) { name = "<#+" + name + " #>"; store.AppendValues (name, green, segment); parent = Gtk.TreeIter.Zero; } else if (ts.Type == Mono.TextTemplating.SegmentType.Content) { parent = store.AppendValues (name, normal, segment); } } } } }