为什么我的插页跳了?

时间:2015-11-19 12:57:49

标签: rsyntaxtextarea

我将RSyntaxTextArea与自定义TokenMaker一起使用。 TokerMaker似乎在突出显示按预期工作的意义上运行良好。例如,在"类Fibonacci"中,类突出显示为蓝色,因为它是保留关键字,而Fibonacci是简单的黑色,因为它是标识符。

然而,在使用鼠标和键盘时,插入符号导航无法正常工作。例如:当我使用右箭头移动插入符号时 来自" clas | s斐波那契"到"班级|斐波那契" (其中|表示插入符号)
然后转到"类Fibon | acci"

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

PS: 我的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();

1 个答案:

答案 0 :(得分:0)

我发现了问题,我调用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);
}