为什么我的管理员跳来跳去



我正在将RSyntaxTextArea与自定义TokenMaker一起使用。TokerMaker似乎工作得很好,突出显示的效果正如预期的那样。例如,在"class Fibonacci"一行中,class高亮显示为蓝色,因为它是一个保留关键字,而Fibonacc则是简单的黑色,因为它只是一个标识符。

但是,无论是使用鼠标还是键盘,插入符号导航都无法正常工作。例如:当我使用右箭头移动插入符号时
从"clas|s斐波那契"到"class|Fibonacci"(其中|表示插入符号)
然后转到"类Fibon|acci"

为什么插入符号像这样跳来跳去?

PS:My TokenMaker为此行生成以下addToken调用:

addToken(text, 0, 4, TokenTypes.RESERVED_WORD, 0);
addToken(text, 5, 5, TokenTypes.WHITESPACE, 0);
addToken(text, 6, 14, TokenTypes.IDENTIFIER, 0);
addNullToken();

我发现了问题,调用addToken的第四个参数不正确。计算第四个自变量的正确方法如下:

override def getTokenList(text: Segment, initialTokenType: Int, startOffset: Int): Token = {
    //some code that defines start, end and tokenType
    val documentOffset = start - text.offset + startOffset;
    addToken(text, start, end, tokenType, documentOffset);
}

相关内容

  • 没有找到相关文章

最新更新