如何正确设置 Scintilla 关键字突出显示?

Posted

技术标签:

【中文标题】如何正确设置 Scintilla 关键字突出显示?【英文标题】:How to properly setup Scintilla keyword highlighting? 【发布时间】:2012-06-20 12:39:03 【问题描述】:

我将 Scintilla 组件与 DScintilla 包装器一起使用,并在任何词法分析器中突出显示关键字时出错。以帕斯卡为例:

with DScintilla do 
begin
  SetLexer(SCLEX_PASCAL);
  StyleSetFore(SCE_PAS_WORD, clGreen);
  StyleSetFore(SCE_PAS_OPERATOR, clRed);;
  StyleSetFore(SCE_PAS_IDENTIFIER, clBlue);
  SetText('begin a+b; end');
end

此代码正确突出显示标识符和运算符,但关键字与标识符具有相同的颜色。 SciLexer 似乎无法比较这个库中的字符串。

【问题讨论】:

不,SCE_PAS_WORD 表示关键字。对于 haskell,定义了一个常量 SCE_HA_KEYWORD,但也不起作用 【参考方案1】:

关键字必须手动添加。

SetKeyWords(0,'begin end');

【讨论】:

这虽然有帮助,但它会失去词法分析器本身的含义,参见例如进入pascal.properties,那里已经指定了关键字(但不知道是否包含在词法分析器二进制文件中)。

以上是关于如何正确设置 Scintilla 关键字突出显示?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 Scintilla 中突出显示的文本片段之间进行插入符号跳转?

闪烁自定义语法突出显示不起作用[关闭]

删除 Scintilla JavaScript 词法分析器中的青色突出显示

C++ 中 Scintilla 的语法高亮显示

如何配置 DScintilla 以突出显示具有某些样式属性的 Lua?

使用 FVH 突出显示 ElasticSearch 7.6.2 的正确设置是啥?