AvalonEdit - xshd JSON 突出显示
AvalonEdit - xshd for JSON highlighting
是否有 AvalonEdit 控件的 xshd 规则集来突出显示 JSON 语法?我尝试了 JavaScript 的定义,但效果不佳,即:
{
"name" : "value"
}
根据 JavaScript 定义,名称和值的颜色相同。
是否有 JSON 的规则集?如果没有,我如何修改 xshd 以便在 JSON 中获得不同颜色的名称和值?
如果有人需要这样的东西,我按以下方式解决了:
<?xml version="1.0" encoding="utf-8" ?>
<SyntaxDefinition name="Json" extensions=".js" xmlns="http://icsharpcode.net/sharpdevelop/syntaxdefinition/2008">
<Color name="Digits" foreground="#8700FF" exampleText="3.14" />
<Color name="Value" foreground="#000CFF" exampleText="var text = "Hello, World!";" />
<Color name="ParamName" foreground="#057500" exampleText="var text = "Hello, World!";" />
<RuleSet ignoreCase="false">
<Keywords color="Digits" >
<Word>true</Word>
<Word>false</Word>
</Keywords>
<Span color="ParamName">
<Begin>"</Begin>
<End>(?=:)</End>
</Span>
<Span color="Value" multiline="true">
<Begin>
(?<=:)0"[^"]*
</Begin>
<End>"</End>
</Span>
<Rule color="Digits">\b0[xX][0-9a-fA-F]+|(\b\d+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?</Rule>
</RuleSet>
</SyntaxDefinition>
不完美,但对我来说足够了。
只需使用 AvalonEdit's JavaScript highlighter.
示例代码:
using (var stream = Assembly.GetAssembly(typeof(ICSharpCode.AvalonEdit.TextEditor)).GetManifestResourceStream("ICSharpCode.AvalonEdit.Highlighting.Resources.JavaScript-Mode.xshd"))
{
using (var reader = new XmlTextReader(stream))
{
avalonEdit.SyntaxHighlighting = HighlightingLoader.Load(reader, HighlightingManager.Instance);
SearchPanel.Install(avalonEdit);
}
}
是否有 AvalonEdit 控件的 xshd 规则集来突出显示 JSON 语法?我尝试了 JavaScript 的定义,但效果不佳,即:
{
"name" : "value"
}
根据 JavaScript 定义,名称和值的颜色相同。
是否有 JSON 的规则集?如果没有,我如何修改 xshd 以便在 JSON 中获得不同颜色的名称和值?
如果有人需要这样的东西,我按以下方式解决了:
<?xml version="1.0" encoding="utf-8" ?>
<SyntaxDefinition name="Json" extensions=".js" xmlns="http://icsharpcode.net/sharpdevelop/syntaxdefinition/2008">
<Color name="Digits" foreground="#8700FF" exampleText="3.14" />
<Color name="Value" foreground="#000CFF" exampleText="var text = "Hello, World!";" />
<Color name="ParamName" foreground="#057500" exampleText="var text = "Hello, World!";" />
<RuleSet ignoreCase="false">
<Keywords color="Digits" >
<Word>true</Word>
<Word>false</Word>
</Keywords>
<Span color="ParamName">
<Begin>"</Begin>
<End>(?=:)</End>
</Span>
<Span color="Value" multiline="true">
<Begin>
(?<=:)0"[^"]*
</Begin>
<End>"</End>
</Span>
<Rule color="Digits">\b0[xX][0-9a-fA-F]+|(\b\d+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?</Rule>
</RuleSet>
</SyntaxDefinition>
不完美,但对我来说足够了。
只需使用 AvalonEdit's JavaScript highlighter.
示例代码:
using (var stream = Assembly.GetAssembly(typeof(ICSharpCode.AvalonEdit.TextEditor)).GetManifestResourceStream("ICSharpCode.AvalonEdit.Highlighting.Resources.JavaScript-Mode.xshd"))
{
using (var reader = new XmlTextReader(stream))
{
avalonEdit.SyntaxHighlighting = HighlightingLoader.Load(reader, HighlightingManager.Instance);
SearchPanel.Install(avalonEdit);
}
}