2016-07-28 80 views
0

我正在尝试写我自己的Lexer for Scintilla。到目前为止,我只添加了单行注释着色。它的工作原理,但问题是,即使在新的线条被假定之后,着色也不会结束。调试程序时,我发现属于StyleContext类的Match()成员函数永远不会识别换行符。为什么这样?我能做些什么来解决这个问题?下面是相关的代码:scintilla不识别换行符

 case SCE_DD_COMMENT: 
     if (scCTX.Match('\n') || scCTX.Match('\r')) { 
      scCTX.Forward(); 
      scCTX.ForwardSetState(SCE_DD_DEFAULT); 
     } 
    break; 

回答

0

试试这个

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

不幸的是,直接比较似乎不工作,要么因为这是比赛()是如何实现的呢。 – NewGuy

+0

可能有某些内容丢失或覆盖此节点。尝试确定除此之外的可能代码。 – ydoow

+1

我已经想通了。在我的代码中有一个额外的调用Forward(),它将ch变量设置为默认值。傻我! :) 谢谢你的帮助! – NewGuy