首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >闪烁编辑器多语法突出显示

闪烁编辑器多语法突出显示
EN

Stack Overflow用户
提问于 2019-08-19 10:33:21
回答 1查看 1.1K关注 0票数 5

我使用scintilla作为MarkDown编辑器的语法高亮显示。

代码语言:javascript
复制
        scintilla.Styles[Style.Markdown.Default].ForeColor = Color.Blue;
        scintilla.Styles[Style.Html.Comment].ForeColor = Color.Gray;
        scintilla.Styles[Style.Markdown.Header1].ForeColor = Color.Green;
        scintilla.Styles[Style.Markdown.Header2].ForeColor = Color.Green;
        scintilla.Styles[Style.Markdown.Header3].ForeColor = Color.Green;
        scintilla.Styles[Style.Markdown.Header4].ForeColor = Color.Green;
        scintilla.Styles[Style.Markdown.Header6].ForeColor = Color.Green;
        scintilla.Styles[Style.Markdown.HRule].ForeColor = Color.Purple;
        scintilla.Styles[Style.Markdown.Header5].ForeColor = Color.Green;

        scintilla.Lexer = Lexer.Markdown;

显然,它不支持Markdown.Comment,我希望它是灰色的。在注释中,我甚至可能希望有CSS或Xml代码。无论如何,我想使用两种类型的突出显示。一个用于标记,另一个用于注释或评论内部。

我没有找到任何显示多个语法突出显示的源代码。但是,有一些自定义语法突出显示文档。我需要一个自定义的设置,还是可以使用组合设置来实现我的目标?

EN

回答 1

Stack Overflow用户

发布于 2019-08-28 15:49:08

不幸的是,您需要实现自定义的lexer,或者使用整个不同的库,因为内置Markdown lexer不支持支持注释或多语法突出显示(正如源文件顶部的注释所指示的,它甚至不支持嵌入式HTML的着色)。而且,由于在本例中Scintilla.NET是一个本机库的包装器,所以它不会为Markdown公开额外的功能。

如果您查看内置,您将看到它实现了对各种嵌入式语言(如PHP和JavaScript)的多重突出显示支持;对Markdown实现也需要同样的方法。

为了解决这个问题,您有一些选择:

  • 按照HTML的方法实现一个自定义的lexer,可能从内置Markdown lexer的源开始。
  • 使用不同的、更容易定制的框架来突出显示语法,比如AvalonEdit (ICSharpCode.TextEditor的WPF后继)。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57554999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档