Редактировать цветовую схему для php в Sublime Text 2 - PullRequest
3 голосов
/ 16 марта 2012

Мне бы хотелось, чтобы $ (знак доллара) обозначал переменную php, отображаемую в ST2 как ее собственный цвет (# ff0000) Я редактировал файл пользовательской цветовой схемы, но не могу получить специальный цвет только для этого символа.

Ответы [ 2 ]

5 голосов
/ 20 ноября 2012

В вашем файле цветовой схемы:

<dict>
    <key>name</key>
    <string>Variable start</string>
    <key>scope</key>
    <string>punctuation.definition.variable</string>
    <key>settings</key>
    <dict>
        <key>fontStyle</key>
        <string>bold</string>
        <key>foreground</key>
        <string>#ff0000</string>
    </dict>
</dict>

Примечание: fontstyle = полужирный также вариант

5 голосов
/ 22 марта 2012

Важное дополнение с префиксом к ответу

В следующем объяснении предполагается, что вы пишете определение синтаксиса в JSON, а затем создаете XML-файл Plist с помощью плагина PackageDev (как описано в неофициальных документах sublime docs, приведенных ниже). Именно из последних файлов ST2 читает инструкции синтаксического разбора синтаксиса.

= = = = *

Я сообщаю вам о своем первом набеге на эту территорию, поэтому я могу ошибиться в одном или двух пунктах в дальнейшем.

Если ваш синтаксический анализатор не определит $ как имеющий собственный селектор области действия, вы не сможете установить цвет для этого одиночного знака в файлах цветовой схемы. Как вы, возможно, уже знаете, вы можете проверить селектор области элемента, выбрав его и нажав option + command + p (alt + super + p на not-macs): он сообщает информацию в строке состояния.

Я только что проверил синтаксический анализатор php в моем собственном программном обеспечении, и нет никакого различия между областью действия $ и строкой, к которой он добавлен. Таким образом, предполагая, что ваши настройки похожи на мои, вам нужно написать собственное определение синтаксиса. Это можно сделать либо в существующем файле синтаксиса php, либо (безусловно, более безопасный вариант) в новом документе определения, который вы будете использовать в качестве основного для редактирования.

Вы можете найти учебник, охватывающий основные этапы написания собственных определений синтаксиса в неофициальных документах с возвышенным текстом. Фактически, в разделе, озаглавленном « Точные настройки соответствия », объясняется, как определить селектор области видимости, особенно для префиксных знаков dolla, с помощью «перехватов». Вы можете обратиться к документации для получения подробных сведений о создании файлов определения синтаксиса и тому подобного, но ради укрепления моего собственного понимания процесса и доступности ответа здесь я сделаю все возможное, чтобы объяснить JSON определение селектора.

Это шаблон регулярного выражения, который вам нужно использовать:

{ "match": "\\$([A-Za-z][A-Za-z0-9_]+)",
  "name": "keyword.syntaxTypeAbbreviation",
  "captures": {
    "1": { "name": "moreSpecific.selectorName.syntaxTypeAbbreviation " }
  },
  "comment": "Variables like $PARAM1, $TM_SELECTION..."
}

Анализ значения вышеперечисленного:

"match" дает регулярное выражение, которое идентифицирует шаблон строки, который будет выбран. Если я не ошибаюсь, он гласит: «любая строка, начинающаяся с« $ »([сопровождается одной заглавной или строчной буквой] и [хотя бы одной дополнительной буквой или цифрой] плюс любые дополнительные символы)». (Sublime Text использует спецификации oniguruma regex .)

"name" предоставляет строку, по которой необходимо выбрать область действия в документе цветовой схемы. На схеме xml это соответствует <key>name</key> <string>specific.selector.syntaxTypeAbbreviation</string>.

"captures" (и это критический элемент для вашей цели) задает подмножество шаблона, которому должен быть предоставлен собственный, более конкретный, селектор области действия. Каждый набор терминов регулярных выражений, заключенных в круглые скобки, занимает одно место, а целое число ("1", здесь) указывает, какое из мест должно быть «захвачено». В нашем случае, конечно, есть только одна группа, которую можно собрать.

"name" делает то же, что и раньше, но как подвид предыдущего обозначения, а "comment" предлагает вам возможность прокомментировать значение определения.

Наконец, важно отметить, что селектор области видимости first устанавливает цвет всей строки, а second переопределяет своего предшественника, чтобы придать другой цвет следующие буквы и цифры . То есть первый селектор позволит вам закрасить $, а второй будет цветом добавленной строки.

Поэтому мы можем перевести шаблон таким образом:

"Любая строка, начинающаяся с '$' ([сопровождается одной заглавной или строчная буква] и [хотя бы одна дополнительная буква или цифра] плюс любые дополнительные символы) должны быть названы NAME , за исключением части, заключенной в первый набор скобок, которая должна быть названа OTHERNAME вместо.

Я надеюсь, что это объяснение будет для вас как минимум вдвое более полезным для чтения, чем для меня. Кроме того, я был бы признателен людям, исправляющим любые ошибки, которые я, безусловно, совершал.

С уважением,

aBath

...