闪烁不识别换行符
Posted
技术标签:
【中文标题】闪烁不识别换行符【英文标题】:scintilla not recognizing newlines 【发布时间】:2016-07-28 06:10:40 【问题描述】:我正在尝试为 Scintilla 编写我自己的 Lexer。到目前为止,我只添加了单行注释着色。它有效,但问题是,即使在新行之后,着色也永远不会结束。调试程序,我发现属于 StyleContext 类的 Match() 成员函数从不识别换行符。为什么会这样?我能做些什么来解决这个问题?这是相关的代码:
case SCE_DD_COMMENT:
if (scCTX.Match('\n') || scCTX.Match('\r'))
scCTX.Forward();
scCTX.ForwardSetState(SCE_DD_DEFAULT);
break;
【问题讨论】:
【参考方案1】:试试这个
case SCE_DD_COMMENT:
if (scCTX.ch('\n') || scCTX.ch('\r'))
scCTX.SetState(SCE_DD_DEFAULT);
break;
【讨论】:
不幸的是,直接比较似乎也不起作用,因为无论如何这就是 Match() 的实现方式。 可能有一些东西丢失或覆盖了这个节点。尝试找出除此之外的可能代码。 我想通了。在我的代码中某处有一个对 Forward() 的额外调用,它一直将 ch 变量设置为默认值。傻我! :) 感谢您的帮助!以上是关于闪烁不识别换行符的主要内容,如果未能解决你的问题,请参考以下文章