Sublime Text синтаксис: Python 3.6 f-строк
Я пытаюсь изменить по умолчанию Python.sublime_syntax
файл для правильной обработки литералов f-строки Python. Моя цель состоит в том, чтобы выражения в интерполированных строках распознавались как таковые:
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 строк?), и я понятия не имею, с чего начать. Спасибо огромное за любую информацию.
1 ответ
В BUILD 3127 было обновлено подсветка синтаксиса (которая включает: Значительные улучшения подсветки синтаксиса Python).
Тем не менее, несколько пользователей заявили, что в BUILD 3176 подсветка синтаксиса по-прежнему не настроена для правильного выделения выражений Python, расположенных в f строках. Согласно @Jollywatt, он установлен в source.python f"string.quoted.double.block {constant.other.placeholder}"
скорее, чем f"string.quoted.double.block {source.python}"
Похоже, что Sublime использует этот инструмент PackageDev, "чтобы упростить создание фрагментов, определений синтаксиса и т. Д. Для Sublime Text".