我正在尝试修改默认的Python.sublime_syntax
文件,以正确处理Python的f字符串文字。我的目标是让插值字符串中的表达式被识别为:
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行?)我不知道该怎么开始。感谢heaps提供的任何信息。
发布于 2018-06-02 07:28:28
BUILD 3127中的语法突出显示有一个更新(其中包括:对Python语法突出显示的重大改进)。
然而,一些用户表示,在BUILD 3176中,语法突出显示仍然没有设置为正确突出显示位于f字符串内的Python表达式。根据@Jollywatt的说法,它被设置为source.python f"string.quoted.double.block {constant.other.placeholder}"
而不是f"string.quoted.double.block {source.python}"
看起来Sublime使用了这个工具,PackageDev,“来简化Sublime文本的代码片段、语法定义等的创建”。
https://stackoverflow.com/questions/40965686
复制相似问题