Возвышенная окраска всего в скобках другого цвета, чем снаружи - PullRequest
0 голосов
/ 15 декабря 2018

В файле Sublime Syntax я могу покрасить все жесткие скобки и все внутри, используя такую ​​команду:

- match: '\[.*?\]'
  scope: keyword.control  

Если я хочу покрасить все внутри скобки другим цветом, я попробовал что-то вродеэто:

- match: '\['
  scope: variable.function
  comment: Images
  push:
    - meta_scope: constant.numeric
    - match: \]
      pop: true

Проблема в том, что последний квадрат будет окрашен в тот же цвет, что и внутренний.Есть идеи, как сделать последнюю скобку того же цвета, что и начальная скобка?

1 Ответ

0 голосов
/ 15 декабря 2018

В документации по синтаксису говорится (выделено мной):

  • meta_scope .Это назначает данную область видимости всему тексту в этом контексте, включая шаблоны, которые помещают контекст в стек и извлекают его.
  • meta_content_scope .Как и выше, но не применяется к тексту, который вызывает контекст (например, в приведенном выше примере строки область содержимого не будет применена к символам кавычек).

Во втором примере вы используете meta_scope, что приводит к тому, что совпадение, выбрасывающее контекст из стека, также применяет эту область.Если вы переключите его на meta_content_scope, этого не произойдет.Однако в этом случае к символу ] вообще не применяется никакой конкретной области видимости, поэтому он будет выглядеть так же, как стандартный цвет текста.

Чтобы исправить это, вы также можете применить ту же область кэто как тот, который первоначально выдвинул контекст.Например:

- match: '\['
  scope: variable.function
  comment: Images
  push:
    - meta_content_scope: constant.numeric
    - match: \]
      scope: variable.function
      pop: true

Технически, если все, что вам нужно, это цвет, то требуется только scope, и он, вероятно, будет делать то, что вы хотите.Однако использовать «1030» также «чище», чтобы исключить возможность того, что он все еще может быть окрашен из-за неправильной области видимости.

...