diff --git a/runtime/syntax/python.vim b/runtime/syntax/python.vim index 4b775f2c34..dfebf547b1 100644 --- a/runtime/syntax/python.vim +++ b/runtime/syntax/python.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: Python " Maintainer: Zvezdan Petkovic -" Last Change: 2025 Jul 14 +" Last Change: 2025 Jul 17 " Credits: Neil Schemenauer " Dmitry Vasiliev " Rob B @@ -156,6 +156,33 @@ syn region pythonRawString matchgroup=pythonTripleQuotes \ start=+[rR]\z('''\|"""\)+ end="\z1" keepend \ contains=pythonSpaceError,pythonDoctest,@Spell +" Formatted string literals (f-strings) +" https://docs.python.org/3/reference/lexical_analysis.html#f-strings +syn region pythonFString + \ matchgroup=pythonQuotes + \ start=+\cF\z(['"]\)+ + \ end="\z1" + \ skip="\\\\\|\\\z1" + \ contains=pythonEscape,pythonUnicodeEscape,@Spell +syn region pythonFString + \ matchgroup=pythonTripleQuotes + \ start=+\cF\z('''\|"""\)+ + \ end="\z1" + \ keepend + \ contains=pythonEscape,pythonUnicodeEscape,pythonSpaceError,pythonDoctest,@Spell +syn region pythonRawFString + \ matchgroup=pythonQuotes + \ start=+\c\%(FR\|RF\)\z(['"]\)+ + \ end="\z1" + \ skip="\\\\\|\\\z1" + \ contains=@Spell +syn region pythonRawFString + \ matchgroup=pythonTripleQuotes + \ start=+\c\%(FR\|RF\)\z('''\|"""\)+ + \ end="\z1" + \ keepend + \ contains=pythonSpaceError,pythonDoctest,@Spell + " Bytes syn region pythonBytes \ matchgroup=pythonQuotes @@ -338,6 +365,8 @@ hi def link pythonComment Comment hi def link pythonTodo Todo hi def link pythonString String hi def link pythonRawString String +hi def link pythonFString String +hi def link pythonRawFString String hi def link pythonBytes String hi def link pythonRawBytes String hi def link pythonQuotes String