Skip to content

字符串结尾转义高亮错位:反斜杠结尾时后续文本被误染成字符串颜色 #2

Description

@SumaRoder

字符串的\和'
"的字符串也有这个问题

如:
原文 "\" 123 456
这里会出现 “123 456”被错误渲染成绿色字符串色的问题

目前的 end 规则:
end: {match: /(?<!\\)(?m)'|$/}
当字符串字面量以奇数个反斜杠结尾时,负向后瞻 (?<!\) 会误判——因为 Python 里 "\" 是两个字符 \ + \ ,第二个反斜杠在语法上确实转义了引号,但高亮引擎看到的只是“最后一个字符是 \ ”,于是认为引号被转义,继续往下找结束引号,导致后续文本全部被吞进字符串作用域。

把“是否被转义”的判断从单个字符改为偶奇计数:
end: {match: /(?<!\\)(?:\\\\)*'|$/}
即:允许前面有偶数个反斜杠,才算真正的字符串结束。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions