我正在Sublime Text 3中的AngluarJS Web应用程序上工作,我需要能够在某些指令(例如ng-showng-class)内键入 bool 表达式,以定义某些显示属性的条件。 Sublime认为 bool 运算符无效,并用粉红色(无效语法)突出显示它们。

这是一个例子:

<div ng-hide="line.valid && $index == 0"> ... </div>

在此示例中,&&突出显示为粉红色,因为按照Sublime的逻辑,它不应出现在HTML中。 ||也是如此。

有没有一种方法可以编辑语法突出显示文件,以使除 bool 运算符之外的所有内容都保持无效的语法突出显示?

我看过ways to change the color of the highlighting altogether,但是我真的很想让Sublime意识到这些运算符可以在HTML中很好地使用,因此我仍然可以在其他不良代码上突出显示这些运算符。

最佳答案

问题在于HTML的语法定义假定“&”或“&&”无效(“||”没有问题),因此粉红色突出显示。我对其进行了微调,以解决您的问题。如果您想了解操作方法,请阅读下面的代码。否则,请跳过。

以前,string.quoted.double.html包含entities,它们匹配为无效的“&&”。

repository:
...
  entities:
    patterns:
    - captures:
        '1': {name: punctuation.definition.entity.html}
        '3': {name: punctuation.definition.entity.html}
      match: (&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)
      name: constant.character.entity.html
    - {match: '&', name: invalid.illegal.bad-ampersand.html}
...
  string-double-quoted:
    begin: '"'
    beginCaptures:
      '0': {name: punctuation.definition.string.begin.html}
    end: '"'
    endCaptures:
      '0': {name: punctuation.definition.string.end.html}
    name: string.quoted.double.html
    patterns:
    - {include: '#embedded-code'}
    - {include: '#entities'}

为了解决这个问题,我只用entities复制了string_entries条目,并删除了&符号错误
repository:
...
  entities:
    patterns:
    - captures:
        '1': {name: punctuation.definition.entity.html}
        '3': {name: punctuation.definition.entity.html}
      match: (&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)
      name: constant.character.entity.html
    - {match: '&', name: invalid.illegal.bad-ampersand.html}
  entities_string:
    patterns:
    - captures:
        '1': {name: punctuation.definition.entity.html}
        '3': {name: punctuation.definition.entity.html}
      match: (&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)
      name: constant.character.entity.html
...
  string-double-quoted:
    begin: '"'
    beginCaptures:
      '0': {name: punctuation.definition.string.begin.html}
    end: '"'
    endCaptures:
      '0': {name: punctuation.definition.string.end.html}
    name: string.quoted.double.html
    patterns:
    - {include: '#embedded-code'}
    - {include: '#entities_string'}

这是HTML.sublime-packagelink(它是一个zip,但您可以将后缀重命名为sublime-package)。您将需要转到安装ST3的默认软件包目录,并用这个新的替换HTML.sublime-package

如果链接过期,请发表评论。

关于html - Sublime : disable pink highlighting on boolean operators inside AngularJS directives,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24328481/

10-12 00:05
查看更多