【问题标题】: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;

【问题讨论】:

    标签: c++ newline scintilla


    【解决方案1】:

    试试这个

     case SCE_DD_COMMENT:
        if (scCTX.ch('\n') || scCTX.ch('\r')) {
           scCTX.SetState(SCE_DD_DEFAULT);
        }
     break;
    

    【讨论】:

    • 不幸的是,直接比较似乎也不起作用,因为无论如何这就是 Match() 的实现方式。
    • 可能有一些东西丢失或覆盖了这个节点。尝试找出除此之外的可能代码。
    • 我想通了。在我的代码中某处有一个对 Forward() 的额外调用,它一直将 ch 变量设置为默认值。傻我! :) 感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-08
    • 1970-01-01
    • 2015-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多