Как добавить функции в определение синтаксиса в Sublime Text без его редактирования?

Например, я хотел бы выделить @param, @type и @return (т.е. объявления epytext) в своих докстронгах Python. Я понял, как это сделать, просто отредактировав Python/Python.tmLanguage; однако, я бы очень хотел поместить это в свой собственный файл по нескольким причинам:

  • Я не всегда хочу применять эту подсветку. Это только для проектов, которые используют epydoc в качестве инструмента документации; в других проектах я бы хотел выделить reStructuredText.
  • Когда Sublime Text обновляется, я хотел бы иметь собственный синтаксис в качестве наложения на включенные функции. существует несколько особенностей Python, которые Sublime автор может включить в будущие версии, и я не хочу вручную определять, что я изменил каждый раз, когда обновление изменяет базовое определение синтаксиса Python.
  • Я сохраняю собственную конфигурацию редактора в управлении версиями, но я хочу, чтобы это было моим собственным оригинальным материалом; Я не хочу, чтобы меня обременяли необходимостью иметь копии (возможно, проприетарные? Я не знаю, у них нет независимой лицензии) синтаксических определений, которые поставляются с Sublime.

Есть ли способ включить выделение правил в отдельный файл, возможно, только для применения к определенной области?

Ответ 1

Мне кажется, что вы хотите создать свой собственный файл синтаксиса, наследовать из файла синтаксиса Python (source.python) и вносить в него свои изменения и настройки. Sublime Text 2 использует формат . TmLanguage для файлов синтаксиса, который немного сложный, но, к счастью, большая часть работы уже сделана для вас, просто наследуя от source.python.

То, что вы хотите сделать, - создать шаблон регулярного выражения для соответствия подстрокам, которые вы хотите выделить, и присвоить этому шаблону имя; что-то вроде punctuation.definition.comment.epydoc, чтобы следовать за соглашением, установленным в Java/JavaDoc.tmLanguage. Затем проверьте свой файл цветовой схемы (заканчивающийся на .tmTheme) и убедитесь, что у вас есть настройки для выбранной области - или для одного из его родителей, поскольку ST2 должен использовать правильные правила определения области для такого рода вещей.

Чтобы использовать созданный файл синтаксиса, вставьте его в Packages/User (чтобы ST2 не перезаписывал его при обновлениях), откройте файл Python в редакторе и затем выберите новый синтаксис из выпадающего списка в правом нижнем углу окна. Если вы настроили все правильно, строки epydoc должны измениться на любой цвет, который вы установили в своей цветовой гамме.

Удачи! И разместите ссылку где-нибудь, когда у вас есть файл синтаксиса, который работает, поэтому другие могут его видеть и использовать!