我正在尝试构建一个基本的,Markdown风格的普通/富文本编辑器。 (其中一个文本是内联样式,而不是像大多数Markdown编辑那样并排放置两个面板)(我也不会支持完整的Markdown规范 - 没有列表或表格,主要是富文本格式像粗体,斜体,下划线等)
我有一个使用AvalonEdit项目的项目(通过源代码,而不是Nuget包) - 我让编辑器完全按照我想要的方式进行设置 - 然后我开始写一个突出显示XSHD文件的语法,当我意识到荧光笔只支持字体颜色,斜体,粗体等格式,而不支持字体大小,下划线和其他格式......
如何添加其他字体格式?我是否必须编写一个全新的解析器/荧光笔/其他什么?是否有一种简单的方法来连接和扩展现有的荧光笔?
我已经对源代码中的一个文件做了一些小改动(TextEditor.xaml),并且我愿意更改更多以使其工作 - 尽管当我开始时我希望尽可能少地触及源代码尽可能......
如果有人能指出我正确的方向,我会很感激 - 谢谢!
答案 0 :(得分:2)
来自the syntax highlighting documentation:
在文本渲染扩展点中,支持“视觉” 线变换器“可以改变后视线的显示 它是由“视觉元素发生器”构建的。一个有用的 实现IVisualLineTransformer的基类 语法高亮是DocumentColorizingTransformer。看一眼 该类的文档,以了解如何编写完全自定义语法 荧光笔。本文仅讨论XML驱动的内置函数 突出引擎。
多次阅读和/或浏览过该页面后,我不能完全理解这一点,直到我仔细查看代码,阅读the SharpDevelop forums上的一些帖子等。
如果你处于我所处的同一阶段(并且不能完全围绕这句话),那么要点就是编辑做了这两件事(当然是简化的):
因此,“XML驱动的内置突出显示引擎”只是查找和设置文本样式的一种方式 - 这意味着要实现更“先进”的方式,即构建自定义文本转换器,像DocumentColorizingTransformer。
这里有一些关于DocumentColorizingTransformer的信息,你可能会发现它们很有用(除了他们指向你的API文档):