闪烁不识别换行符

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 变量设置为默认值。傻我! :) 感谢您的帮助!

以上是关于闪烁不识别换行符的主要内容,如果未能解决你的问题,请参考以下文章

vba读取文本文件不识别换行

1.在vue标签内不识别'\n'换行

java识别回车改为换行

ethtool命令光口闪烁无效

mapreduce 识别windows linux换行符

Windows 8.1 应用程序:使用换行、最大行数或最大高度识别 TextBlock 的 UI 文本截断