Первым шагом является открытие определения синтаксиса XML для редактирования. Я объясню, как это сделать. Все, что ссылается на файл tmLanguage
(формат XML), устарело, Sublime Text 3 теперь использует файлы sublime-syntax
(формат YAML) для всех его подсветки синтаксиса по умолчанию.
Я бы порекомендовал клонировать официальное сообщение git repo https://github.com/sublimehq/Packages (пожалуйста, следуйте инструкциям в readme репо, в котором подробно описано, как клонировать пакет таким образом, что Sublime Text выбирает его), чтобы вы могли включать любые будущие изменения, внесенные в официальную версию в вашу версию с использованием git (потому что мы переопределяем значение по умолчанию, которое автоматически обновляется с помощью ST с этой настраиваемой версией). (В принципе, вы хотите, XML
папку из репозитория в вашей Блистательной Packages
папки, которая доступна из ST, перейдя к пункту меню Preferences -> Browse Packages
.)
Файл мы заинтересованы в том, XML/XML.sublime-syntax
. Как вы можете видеть, он заполнен регулярными выражениями. Мы больше всего интересуемся тем, где он анализирует XML-атрибуты.
Поиск double-quoted-string:
. Сразу под этой линии, вставьте следующее:
- match: '"(?=%function\(self\))'
scope: string.quoted.double.xml punctuation.definition.string.begin.xml
push:
- clear_scopes: true
- match: '"'
scope: string.quoted.double.xml punctuation.definition.string.end.xml
pop: true
- include: scope:source.lua
Обратите внимание, что первый символ (-
перед тем match
) должны совпасть с оригинальным - match: '"'
, который был там.
Сохраните его. Вот и все!
В принципе, что мы делаем, это:
- до проверки синтаксиса для простой двойной кавычки (
"
), он будет искать двойные кавычки, за которым следует буквенная строка %function(self)
. Он делает это с помощью lookahead, так что он может тогда include
области source.lua
, и имеет этот текст/код %function(self)
, выделенный как LUA (вместе с остальной частью кода LUA).
- Обратите внимание, что он использует
clear_scopes: true
, чтобы убедиться, что код LUA не похож на XML-текст/атрибуты.
- Затем он ищет закрывающую цитату из XML-атрибута (
"
) и «выталкивает» контекст из стека, обратно к тому, чтобы быть внутри простого тега XML.(Я решил искать "
без end
перед этим, так что end
все равно будет подбираться по определению синтаксиса LUA. В противном случае нам пришлось бы дублировать регулярное выражение и область действия для него в синтаксисе XML, что не является идеальным .)
(вы можете создать новую ветку в местном репо, и совершить эти изменения, чтобы сделать его проще объединить будущие официальные изменения в.)
пожалуйста, вы можете поделитесь примером XML-файла с интегрированным LUA, который я могу скопировать и вставить - у меня будет возможность обновить синтаксис defi а также подробные инструкции о том, как это сделать :) –
[Здесь вы идете,] (http://hastebin.com/vawicezuxu.xml) большое спасибо! –