public void AddHighlight(string id, IHighlight highlight) { if (partitionDic.ContainsKey(id)) { var part = partitionDic[id]; //part.Highlight = highlight; part.Highlight.getRules().AddRange(highlight.getRules()); var rules = part.Highlight.getRules(); foreach (var rule in rules) { if (rule is MultiLineRule) { MultiLineRule prule = rule as MultiLineRule; var partid = prule.id; var newpart = new Partition(prule, new DefaultHighlight(prule.attr)); part.AddPartition(newpart); partitionDic.Add(partid, newpart); } } } else { var part = new Partition(id, highlight); partitionDic.Add(id, part); var rules = highlight.getRules(); foreach (var rule in rules) { if (rule is MultiLineRule) { MultiLineRule prule = rule as MultiLineRule; var partid = prule.id; var newpart = new Partition(prule, new DefaultHighlight(prule.attr)); part.AddPartition(newpart); partitionDic.Add(partid, newpart); } } } }
public void AddPartition(Partition partition) { partition.Parent = this; Children.Add(partition); }
public void SetPartition(string ID, bool force) { if (partitionDic.ContainsKey(ID)) { if (force) { this.partition = partitionDic[ID]; var highlight = this.partition.Highlight; defaultAttr = highlight.getDefault(); lex.ClearRule(); var ch = this.partition.Children; foreach (var item in ch) { //this.lex.AddPartRule(item.GetPartRule()); //this.lex.AddPartRule(item.rule); } this.lex.AddRule(highlight.getRules()); } else { SetPartition(partitionDic[ID]); } } }
public void SetPartition(Partition partition) { if (this.partition != partition) { this.partition = partition; var highlight = this.partition.Highlight; defaultAttr = highlight.getDefault(); lex.ClearRule(); var ch = this.partition.Children; //var parent = this.partition.Parent; //var ch = parent.Children; foreach (var item in ch) { //this.lex.AddPartRule(item.GetPartRule()); //this.lex.AddPartRule(item.rule); } this.lex.AddRule(highlight.getRules()); } }