Browse Source

Fixed bug in XmlHighlightingDefinition that prevented referencing the main ruleset of the current XSHD.

Fixed typo in SaveXshdVisitor.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@5400 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Daniel Grunwald 16 years ago
parent
commit
bcb9d3303a
  1. 2
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/Xshd/SaveXshdVisitor.cs
  2. 10
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/Xshd/XmlHighlightingDefinition.cs

2
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/Xshd/SaveXshdVisitor.cs

@ -117,7 +117,7 @@ namespace ICSharpCode.AvalonEdit.Highlighting.Xshd @@ -117,7 +117,7 @@ namespace ICSharpCode.AvalonEdit.Highlighting.Xshd
object IXshdVisitor.VisitKeywords(XshdKeywords keywords)
{
writer.WriteStartElement("KeyWords", Namespace);
writer.WriteStartElement("Keywords", Namespace);
WriteColorReference(keywords.ColorReference);
foreach (string word in keywords.Words) {
writer.WriteElementString("Word", Namespace, word);

10
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/Xshd/XmlHighlightingDefinition.cs

@ -24,21 +24,23 @@ namespace ICSharpCode.AvalonEdit.Highlighting.Xshd @@ -24,21 +24,23 @@ namespace ICSharpCode.AvalonEdit.Highlighting.Xshd
public XmlHighlightingDefinition(XshdSyntaxDefinition xshd, IHighlightingDefinitionReferenceResolver resolver)
{
this.Name = xshd.Name;
// Create HighlightingRuleSet instances
var rnev = new RegisterNamedElementsVisitor(this);
xshd.AcceptElements(rnev);
TranslateElementVisitor translateVisitor = new TranslateElementVisitor(this, rnev.ruleSets, resolver);
// Assign MainRuleSet so that references can be resolved
foreach (XshdElement element in xshd.Elements) {
HighlightingRuleSet rs = element.AcceptVisitor(translateVisitor) as HighlightingRuleSet;
XshdRuleSet xrs = element as XshdRuleSet;
if (rs != null && xrs != null && xrs.Name == null) {
if (xrs != null && xrs.Name == null) {
if (MainRuleSet != null)
throw Error(element, "Duplicate main RuleSet. There must be only one nameless RuleSet!");
else
MainRuleSet = rs;
MainRuleSet = rnev.ruleSets[xrs];
}
}
if (MainRuleSet == null)
throw new HighlightingDefinitionInvalidException("Could not find main RuleSet.");
// Translate elements within the rulesets (resolving references and processing imports)
xshd.AcceptElements(new TranslateElementVisitor(this, rnev.ruleSets, resolver));
}
#region RegisterNamedElements

Loading…
Cancel
Save