@@ -222,13 +222,18 @@ else
222222 syn region pythonRawString start =+ [rR]'''+ skip =+ \\ '+ end =+ '''+ keepend contains =pythonDocTest,pythonSpaceError,@Spell
223223 syn region pythonRawString start =+ [rR]"""+ skip =+ \\ "+ end =+ """+ keepend contains =pythonDocTest2,pythonSpaceError,@Spell
224224
225+ syn region pythonRawFString start =+ \% ([fF][rR]\| [rR][fF]\) '+ skip =+ \\\\\|\\ '\|\\ $+ excludenl end =+ '+ end =+ $+ keepend contains =pythonRawEscape,@Spell
226+ syn region pythonRawFString start =+ \% ([fF][rR]\| [rR][fF]\) "+ skip =+ \\\\\|\\ "\|\\ $+ excludenl end =+ "+ end =+ $+ keepend contains =pythonRawEscape,@Spell
227+ syn region pythonRawFString start =+ \% ([fF][rR]\| [rR][fF]\) '''+ skip =+ \\ '+ end =+ '''+ keepend contains =pythonDocTest,pythonSpaceError,@Spell
228+ syn region pythonRawFString start =+ \% ([fF][rR]\| [rR][fF]\) """+ skip =+ \\ "+ end =+ """+ keepend contains =pythonDocTest,pythonSpaceError,@Spell
229+
225230 syn region pythonRawBytes start =+ \% ([bB][rR]\| [rR][bB]\) '+ skip =+ \\\\\|\\ '\|\\ $+ excludenl end =+ '+ end =+ $+ keepend contains =pythonRawEscape,@Spell
226231 syn region pythonRawBytes start =+ \% ([bB][rR]\| [rR][bB]\) "+ skip =+ \\\\\|\\ "\|\\ $+ excludenl end =+ "+ end =+ $+ keepend contains =pythonRawEscape,@Spell
227232 syn region pythonRawBytes start =+ \% ([bB][rR]\| [rR][bB]\) '''+ skip =+ \\ '+ end =+ '''+ keepend contains =pythonDocTest,pythonSpaceError,@Spell
228233 syn region pythonRawBytes start =+ \% ([bB][rR]\| [rR][bB]\) """+ skip =+ \\ "+ end =+ """+ keepend contains =pythonDocTest2,pythonSpaceError,@Spell
229234endif
230235
231- syn match pythonRawEscape + \\ ['"]+ display transparent contained
236+ syn match pythonRawEscape + \\ ['"]+ display contained
232237
233238if s: Enabled (' g:python_highlight_string_formatting' )
234239 " % operator string formatting
@@ -247,9 +252,9 @@ if s:Enabled('g:python_highlight_string_format')
247252 syn match pythonStrFormat ' {{\| }}' contained containedin =pythonString,pythonUniString,pythonUniRawString,pythonRawString
248253 syn match pythonStrFormat ' {\% (\% ([^[:cntrl:][:space:][:punct:][:digit:]]\| _\)\% ([^[:cntrl:][:punct:][:space:]]\| _\) *\|\d\+\)\=\% (\.\% ([^[:cntrl:][:space:][:punct:][:digit:]]\| _\)\% ([^[:cntrl:][:punct:][:space:]]\| _\) *\|\[\% (\d\+\| [^!:\} ]\+\)\]\) *\% (![rsa]\)\=\% (:\% ({\% (\% ([^[:cntrl:][:space:][:punct:][:digit:]]\| _\)\% ([^[:cntrl:][:punct:][:space:]]\| _\) *\|\d\+\) }\|\% ([^}]\= [<>=^]\)\= [ +-]\= #\= 0\=\d *,\=\% (\.\d\+\)\= [bcdeEfFgGnosxX%]\=\)\=\)\= }' contained containedin =pythonString,pythonUniString,pythonUniRawString,pythonRawString
249254 else
250- syn match pythonStrFormat " {{\| }}" contained containedin =pythonString,pythonRawString,pythonFString
255+ syn match pythonStrFormat " {{\| }}" contained containedin =pythonString,pythonRawString,pythonFString,pythonRawFString
251256 syn match pythonStrFormat " {\% (\% ([^[:cntrl:][:space:][:punct:][:digit:]]\| _\)\% ([^[:cntrl:][:punct:][:space:]]\| _\) *\|\d\+\)\=\% (\.\% ([^[:cntrl:][:space:][:punct:][:digit:]]\| _\)\% ([^[:cntrl:][:punct:][:space:]]\| _\) *\|\[\% (\d\+\| [^!:\} ]\+\)\]\) *\% (![rsa]\)\=\% (:\% ({\% (\% ([^[:cntrl:][:space:][:punct:][:digit:]]\| _\)\% ([^[:cntrl:][:punct:][:space:]]\| _\) *\|\d\+\) }\|\% ([^}]\= [<>=^]\)\= [ +-]\= #\= 0\=\d *,\=\% (\.\d\+\)\= [bcdeEfFgGnosxX%]\=\)\=\)\= }" contained containedin =pythonString,pythonRawString
252- syn region pythonStrInterpRegion start =" {" he =e + 1 ,rs =e + 1 end =" \% (![rsa]\)\=\% (:\% ({\% (\% ([^[:cntrl:][:space:][:punct:][:digit:]]\| _\)\% ([^[:cntrl:][:punct:][:space:]]\| _\) *\|\d\+\) }\|\% ([^}]\= [<>=^]\)\= [ +-]\= #\= 0\=\d *,\=\% (\.\d\+\)\= [bcdeEfFgGnosxX%]\=\)\=\)\= }" hs =s - 1 ,re =s - 1 extend contained containedin =pythonFString contains =pythonStrInterpRegion,@pythonExpression
257+ syn region pythonStrInterpRegion start =" {" he =e + 1 ,rs =e + 1 end =" \% (![rsa]\)\=\% (:\% ({\% (\% ([^[:cntrl:][:space:][:punct:][:digit:]]\| _\)\% ([^[:cntrl:][:punct:][:space:]]\| _\) *\|\d\+\) }\|\% ([^}]\= [<>=^]\)\= [ +-]\= #\= 0\=\d *,\=\% (\.\d\+\)\= [bcdeEfFgGnosxX%]\=\)\=\)\= }" hs =s - 1 ,re =s - 1 extend contained containedin =pythonFString,pythonRawFString contains =pythonStrInterpRegion,@pythonExpression
253258 endif
254259endif
255260
@@ -424,6 +429,7 @@ if v:version >= 508 || !exists('did_python_syn_inits')
424429
425430 HiLink pythonString String
426431 HiLink pythonRawString String
432+ HiLink pythonRawEscape Special
427433
428434 HiLink pythonUniEscape Special
429435 HiLink pythonUniEscapeError Error
@@ -441,6 +447,7 @@ if v:version >= 508 || !exists('did_python_syn_inits')
441447 HiLink pythonBytesEscape Special
442448 HiLink pythonBytesEscapeError Error
443449 HiLink pythonFString String
450+ HiLink pythonRawFString String
444451 HiLink pythonStrInterpRegion Special
445452 endif
446453
0 commit comments