AvalonEdit中存放代码高亮数据的是IHighlightingDefinition接口,其解析引擎支持文件为xshd,可在src/Highlighting/Resources中找到xshd文件。
具体做法是使用文件流将xshd文件读入,调用ICSharpCode.AvalonEdit.Highlighting.Xshd.HighlightingLoader.Load解析,再调用HighlightingManager.Instance.RegisterHighlighting将其注册进编辑器高亮列表。

实现代码:

IHighlightingDefinition ch;
using(Stream s = new FileStream(@"文件路径.xshd", FileMode.Open)) {				//using (Stream s = typeof(Window1).Assembly.GetManifestResourceStream("AvalonEdit.Sample.CustomHighlighting.xshd")) {
	if (s == null)
		throw new InvalidOperationException("Could not find embedded resource");
	using (XmlReader reader = new XmlTextReader(s)) {
		//解析xshd
		ch = ICSharpCode.AvalonEdit.Highlighting.Xshd.HighlightingLoader.Load(reader, HighlightingManager.Instance);
	}
}
//注册数据
HighlightingManager.Instance.RegisterHighlighting("Custom Highlighting", new string[] { ".ext" }, ch);

RegisterHighlighting方法原型:
HighlightingManager.Instance.RegisterHighlighting(string name, string[] ext, IHighlightingDefinition hd);
name:代码高亮名称
ext:代码高亮绑定的文件扩展名
hd:代码高亮数据

Categories: 编程技术