代码之家  ›  专栏  ›  技术社区  ›  Bill Tür stands with Ukraine Ajay Pawar

多行字符串文本的语法突出显示

  •  2
  • Bill Tür stands with Ukraine Ajay Pawar  · 技术社区  · 6 年前

    我有一种自定义语言,我想在Visual Studio代码中为其提供语法突出显示。

    在此语言中,字符串的开头和结尾可以是双引号,也可以是单引号。以双引号开头的字符串文本可以包含单引号,反之亦然。任何其他转义引用都不会发生。但是,不管起始引号类型是什么,文本都可以跨多行。

    在我的 tmLanguage.json 我尝试了以下正则表达式:

    {
        "match": "'[^']*'",
        "name": "string.quoted.single.rss"
    },
    {
        "match": "\"[^\"]*\"",
        "name": "string.quoted.double.rss"
    }
    

    不幸的是,这只适用于单行文本。然后我尝试

    {
        "match": "(?s)'[^']*'",
        "name": "string.quoted.single.rss"
    },
    {
        "match": "(?s)\"[^\"]*\"",
        "name": "string.quoted.double.rss"
    }
    

    但随着 (?s) 修饰符语法高亮显示根本不起作用。

    有匹配多行字符串的方法吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Gama11 zzapper    6 年前

    尝试使用 begin / end 模式而不是简单的 match . haxe语言也有多行字符串文本,它匹配如下字符串:

    strings:
      patterns:
      - begin: '"'
        beginCaptures:
          '0': {name: punctuation.definition.string.begin.hx}
        end: '"'
        endCaptures:
          '0': {name: punctuation.definition.string.end.hx}
        name: string.quoted.double.hx
        patterns:
        - include: '#string-escape-sequences'
    

    here