Я пытаюсь изменить файл Python.sublime_syntax
по умолчанию, Python.sublime_syntax
правильно обрабатывать литералы f-string Pythons. Моя цель состоит в том, чтобы выражения в интерполированных строках были признаны таковыми:
f"hello {person.name if person else 'there'}"
-----------source.python----------
------string.quoted.double.block.python------
Внутри f-строк диапазоны текста между одним {
и другим }
(но заканчивающиеся перед спецификаторами формата, такие как !r}
:<5}
и т.д. - см. PEP 498) должны быть распознаны как выражения. Насколько я знаю, это может выглядеть примерно так:
...
string:
- match: "(?<=[^\{]\{)[^\{].*)(?=(!(s|r|a))?(:.*)?\})" # I'll need a better regex
push: expressions
Однако при проверке встроенного файла Python.sublime_syntax
контексты строк особенно неудобны для четного подхода (~ 480 строк?), И я не знаю, как начать. Спасибо за кучу за любую информацию.