protected void ImportSettingsFrom(DefaultHighlightingStrategy source) { if (source == null) throw new ArgumentNullException("source"); properties = source.properties; extensions = source.extensions; digitColor = source.digitColor; defaultRuleSet = source.defaultRuleSet; name = source.name; rules = source.rules; environmentColors = source.environmentColors; defaultTextColor = source.defaultTextColor; }
void UpdateSpanStateVariables() { inSpan = (currentSpanStack != null && !currentSpanStack.IsEmpty); activeSpan = inSpan ? currentSpanStack.Peek() : null; activeRuleSet = GetRuleSet(activeSpan); }
protected virtual HighlightColor GetColor(HighlightRuleSet ruleSet, IDocument document, LineSegment currentSegment, int currentOffset, int currentLength) { if (ruleSet != null) { if (ruleSet.Reference != null) { return ruleSet.Highlighter.GetColor(document, currentSegment, currentOffset, currentLength); } else { return (HighlightColor)ruleSet.KeyWords[document, currentSegment, currentOffset, currentLength]; } } return null; }
void ResolveRuleSetReferences() { foreach (HighlightRuleSet ruleSet in Rules) { if (ruleSet.Name == null) { defaultRuleSet = ruleSet; } foreach (Span aSpan in ruleSet.Spans) { if (aSpan.Rule != null) { bool found = false; foreach (HighlightRuleSet refSet in Rules) { if (refSet.Name == aSpan.Rule) { found = true; aSpan.RuleSet = refSet; break; } } if (!found) { aSpan.RuleSet = null; throw new HighlightingDefinitionInvalidException("The RuleSet " + aSpan.Rule + " could not be found in mode definition " + this.Name); } } else { aSpan.RuleSet = null; } } } if (defaultRuleSet == null) { throw new HighlightingDefinitionInvalidException("No default RuleSet is defined for mode definition " + this.Name); } }
public void AddRuleSet(HighlightRuleSet aRuleSet) { HighlightRuleSet existing = FindHighlightRuleSet(aRuleSet.Name); if (existing != null) { existing.MergeFrom(aRuleSet); } else { rules.Add(aRuleSet); } }
/// <summary> /// Merges spans etc. from the other rule set into this rule set. /// </summary> public void MergeFrom(HighlightRuleSet ruleSet) { for (int i = 0; i < delimiters.Length; i++) { delimiters[i] |= ruleSet.delimiters[i]; } // insert merged spans in front of old spans ArrayList oldSpans = spans; spans = (ArrayList)ruleSet.spans.Clone(); spans.AddRange(oldSpans); //keyWords.MergeFrom(ruleSet.keyWords); //prevMarkers.MergeFrom(ruleSet.prevMarkers); //nextMarkers.MergeFrom(ruleSet.nextMarkers); }