-
-
Save phelipetls/8726d6cd68e66ad6b83586ae53f3b3d8 to your computer and use it in GitHub Desktop.
" ~/.vim/after/syntax/python.vim or ~/.config/nvim/after/syntax/python.vim | |
syn match pythonEscape +{{+ contained containedin=pythonfString,pythonfDocstring | |
syn match pythonEscape +}}+ contained containedin=pythonfString,pythonfDocstring | |
syn region pythonfString matchgroup=pythonQuotes | |
\ start=+[fF]\@1<=\z(['"]\)+ end="\z1" | |
\ contains=@Spell,pythonEscape,pythonInterpolation | |
syn region pythonfDocstring matchgroup=pythonQuotes | |
\ start=+[fF]\@1<=\z('''\|"""\)+ end="\z1" keepend | |
\ contains=@Spell,pythonEscape,pythonSpaceError,pythonInterpolation,pythonDoctest | |
syn region pythonInterpolation contained | |
\ matchgroup=SpecialChar | |
\ start=+{{\@!+ end=+}}\@!+ skip=+{{+ keepend | |
\ contains=ALLBUT,pythonDecoratorName,pythonDecorator,pythonFunction,pythonDoctestValue,pythonDoctest | |
syn match pythonStringModifier /:\(.[<^=>]\)\?[-+ ]\?#\?0\?[0-9]*[_,]\?\(\.[0-9]*\)\?[bcdeEfFgGnosxX%]\?/ contained containedin=pythonInterpolation | |
syn match pythonStringModifier /![sra]/ contained containedin=pythonInterpolation | |
syn match pythonStringModifier /\zs *= *\ze[}:!]/ contained containedin=pythonInterpolation | |
hi link pythonfString String | |
hi link pythonfDocstring String | |
hi link pythonStringModifier PreProc |
@mwchase it seems to be working for me?
I just experimented a little, and it looks like it's a result of using https://github.com/vim-python/python-syntax instead of the builtin python syntax. I can try to work out what's working differently later.
Actually, from looking at using the built-in syntax, I... can't tell what using the other version was getting me, so I could just not bother.
That would make sense, this files assumes you're using the default highlight groups, bundled with Vim.
All groups will be highlighted, except things that aren't expressions (should probably contain more stuff here but I forgot):
syn region pythonInterpolation contained
\ matchgroup=SpecialChar
\ start=+{{\@!+ end=+}}\@!+ skip=+{{+ keepend
\ contains=ALLBUT,pythonDecoratorName,pythonDecorator,pythonFunction,pythonDoctestValue,pythonDoctest
After a quick look, it seems this would make sense if you're using python-syntax:
syn region pythonInterpolation contained
\ matchgroup=SpecialChar
\ start=+{{\@!+ end=+}}\@!+ skip=+{{+ keepend
\ contains=pythonExpression
Thank you! This should be part of the standard Vim distribution!
Thanks, @ninfueng. I added this as a comment to the gist.