Skip to content

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

Description

@SumaRoder

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

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

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

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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