如何优先考虑 VS Code 语言扩展中的规则

问题描述

我正在尝试为 VS Code 创建语言扩展。这种语言的注释是单行注释,以分号开头,像这样

command ;comment

为此,我将以下内容放入 tmLanguage.json 的存储库部分:

"comments": {
    "name": "comment.lang","begin": ";","end": "\n"
}

并将其包含在模式部分

{
    "include": "#comments"
}

到目前为止,这是有效的。最重要的是,该语言还具有以“;!”开头的特殊块。与 ”;;”分别。那些我想被区别对待的人:

"magicString": {
    "name": "magicString.lang","begin": ";!","end": "\n"
},"commentHeader": {
    "name": "commentHeader.lang","begin": ";;",

同样,我将它们包含在模式部分

{
    "include": "#magicString"
},{
    "include": "#commentHeader"
}

现在明显的问题是这两个开始完全像一个评论。因此,它们似乎被认可并被视为评论。范围检查器确认令牌确实作为“comment.lang”处理。

我该如何解决这个问题?有没有办法让一个规则优先于另一个规则?我在 TextMate documentation 中查找了该主题,但我不明白。我尝试在 begin 正则表达式中指定分号重复的次数——我认为这应该有效,但它没有。

    "magicString": {
        "name": "magicString.lang","end": "\n"
    },"commentHeader": {
        "name": "commentHeader.lang","begin": ";{2}","comments": {
        "name": "comment.lang","begin": ";{1}","end": "\n"
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...