首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定义“总是获胜”的VSCode方案语法规则

定义“总是获胜”的VSCode方案语法规则
EN

Stack Overflow用户
提问于 2020-01-22 00:50:59
回答 1查看 328关注 0票数 3

我想在减价中添加一些额外的语法突出显示。

我定义了一个注入语法:

代码语言:javascript
复制
{
  "scopeName": "markdown.mytodos",
  "injectionSelector": "L:text.html.markdown",
    "patterns": [
        { "include": "#todo" }
  ],
    "repository": {
        "todo": {
        "match": "^[ \t]*o .*",
        "_comment": "Line start, tabs or spaces, then literal `o` and a space",
        "name": "entity.name.tag.css"
    }
  }
}

结果:

我希望看到这两个示例的规则,但它只适用于第一个示例:

代码语言:javascript
复制
foo
o bar <- correct scope

foo
    o bar <- wrong scope (meta.paragraph.markdown)

因此,我的范围似乎没有被接受,尽管regex匹配(隔离测试)。

我查了一下,Markdown用这个meta.paragraph.markdown规则定义了begin

代码语言:javascript
复制
(^|\\G)[ ]{0,3}(?=\\S)

这个while规则是:

代码语言:javascript
复制
(^|\\G)((?=\\s*[-=]{3,}\\s*$)|[ ]{4,}(?=\\S))

我目前的理论是,这个未封闭的while阻碍了我的规则。

问题:

happening?

  • How的任何其他匹配,我可以告诉我的vscode/textmate语法,我希望它一直“赢”,甚至在一个不同的范围内?

我试过:

使用begin/end规则代替change)

  • Defining (不使用
  1. 作为meta.paragraph.markdown的子集,而不是text.html.markdown"injectionSelector": "L:meta.paragraph.markdown" (不按预期添加嵌套作用域)
EN

回答 1

Stack Overflow用户

发布于 2020-01-22 02:30:13

我发现改变我的匹配模式解决了这个问题。

在嵌套情况下不起作用:

代码语言:javascript
复制
^[ \t]*o .*

对于我测试过的所有病例,效果都很好:

代码语言:javascript
复制
(^|\G)[ \t]*o .*

医生说:

\G在上一次匹配的末尾或第一次匹配的字符串开始处断言位置

在试图由vscode/textmate匹配的多个范围选择器的上下文中,这意味着什么?我没有把握。如果你知道的话请插话!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59851224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档