mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-09 03:53:52 -05:00
I originally meant to run this before adding haproxy, but accidentally
pushed that into my branch. If you'd like to see that content, it's at
414ad25c3a.
102 lines
4.7 KiB
VimL
102 lines
4.7 KiB
VimL
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ansible') == -1
|
|
|
|
" Vim syntax file
|
|
" Language: Jinja2 - with special modifications for compound-filetype
|
|
" compatibility
|
|
" Maintainer: Dave Honneffer <pearofducks@gmail.com>
|
|
" Last Change: 2018.02.11
|
|
|
|
if !exists("main_syntax")
|
|
let main_syntax = 'jinja2'
|
|
endif
|
|
|
|
let b:current_syntax = ''
|
|
unlet b:current_syntax
|
|
|
|
syntax case match
|
|
|
|
" Jinja template built-in tags and parameters (without filter, macro, is and raw, they
|
|
" have special threatment)
|
|
syn keyword jinjaStatement containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained and if else in not or recursive as import
|
|
|
|
syn keyword jinjaStatement containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained is filter skipwhite nextgroup=jinjaFilter
|
|
syn keyword jinjaStatement containedin=jinjaTagBlock contained macro skipwhite nextgroup=jinjaFunction
|
|
syn keyword jinjaStatement containedin=jinjaTagBlock contained block skipwhite nextgroup=jinjaBlockName
|
|
|
|
" Variable Names
|
|
syn match jinjaVariable containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained /[a-zA-Z_][a-zA-Z0-9_]*/
|
|
syn keyword jinjaSpecial containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained false true none False True None loop super caller varargs kwargs
|
|
|
|
" Filters
|
|
syn match jinjaOperator "|" containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained skipwhite nextgroup=jinjaFilter
|
|
syn match jinjaFilter contained /[a-zA-Z_][a-zA-Z0-9_]*/
|
|
syn match jinjaFunction contained /[a-zA-Z_][a-zA-Z0-9_]*/
|
|
syn match jinjaBlockName contained /[a-zA-Z_][a-zA-Z0-9_]*/
|
|
|
|
" Jinja template constants
|
|
syn region jinjaString containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained start=/"/ skip=/\(\\\)\@<!\(\(\\\\\)\@>\)*\\"/ end=/"/
|
|
syn region jinjaString containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained start=/'/ skip=/\(\\\)\@<!\(\(\\\\\)\@>\)*\\'/ end=/'/
|
|
syn match jinjaNumber containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained /[0-9]\+\(\.[0-9]\+\)\?/
|
|
|
|
" Operators
|
|
syn match jinjaOperator containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained /[+\-*\/<>=!,:]/
|
|
syn match jinjaPunctuation containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained /[()\[\]]/
|
|
syn match jinjaOperator containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained /\./ nextgroup=jinjaAttribute
|
|
syn match jinjaAttribute contained /[a-zA-Z_][a-zA-Z0-9_]*/
|
|
|
|
" Jinja template tag and variable blocks
|
|
syn region jinjaNested matchgroup=jinjaOperator start="(" end=")" transparent display containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained
|
|
syn region jinjaNested matchgroup=jinjaOperator start="\[" end="\]" transparent display containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained
|
|
syn region jinjaNested matchgroup=jinjaOperator start="{" end="}" transparent display containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained
|
|
syn region jinjaTagBlock matchgroup=jinjaTagDelim start=/{%-\?/ end=/-\?%}/ containedin=ALLBUT,jinjaTagBlock,jinjaVarBlock,jinjaRaw,jinjaString,jinjaNested,jinjaComment
|
|
|
|
syn region jinjaVarBlock matchgroup=jinjaVarDelim start=/{{-\?/ end=/-\?}}/ containedin=ALLBUT,jinjaTagBlock,jinjaVarBlock,jinjaRaw,jinjaString,jinjaNested,jinjaComment
|
|
|
|
" Jinja template 'raw' tag
|
|
syn region jinjaRaw matchgroup=jinjaRawDelim start="{%\s*raw\s*%}" end="{%\s*endraw\s*%}" containedin=ALLBUT,jinjaTagBlock,jinjaVarBlock,jinjaString,jinjaComment
|
|
|
|
" Jinja comments
|
|
syn region jinjaComment matchgroup=jinjaCommentDelim start="{#" end="#}" containedin=ALLBUT,jinjaTagBlock,jinjaVarBlock,jinjaString
|
|
|
|
" Block start keywords. A bit tricker. We only highlight at the start of a
|
|
" tag block and only if the name is not followed by a comma or equals sign
|
|
" which usually means that we have to deal with an assignment.
|
|
syn match jinjaStatement containedin=jinjaTagBlock contained /\({%-\?\s*\)\@<=\<[a-zA-Z_][a-zA-Z0-9_]*\>\(\s*[,=]\)\@!/
|
|
|
|
" and context modifiers
|
|
syn match jinjaStatement containedin=jinjaTagBlock contained /\<with\(out\)\?\s\+context\>/
|
|
|
|
|
|
" Define the default highlighting.
|
|
if !exists("did_jinja_syn_inits")
|
|
command -nargs=+ HiLink hi def link <args>
|
|
|
|
HiLink jinjaPunctuation jinjaOperator
|
|
HiLink jinjaAttribute jinjaVariable
|
|
HiLink jinjaFunction jinjaFilter
|
|
|
|
HiLink jinjaTagDelim jinjaTagBlock
|
|
HiLink jinjaVarDelim jinjaVarBlock
|
|
HiLink jinjaCommentDelim jinjaComment
|
|
HiLink jinjaRawDelim jinja
|
|
|
|
HiLink jinjaSpecial Special
|
|
HiLink jinjaOperator Normal
|
|
HiLink jinjaRaw Normal
|
|
HiLink jinjaTagBlock PreProc
|
|
HiLink jinjaVarBlock PreProc
|
|
HiLink jinjaStatement Statement
|
|
HiLink jinjaFilter Function
|
|
HiLink jinjaBlockName Function
|
|
HiLink jinjaVariable Identifier
|
|
HiLink jinjaString Constant
|
|
HiLink jinjaNumber Constant
|
|
HiLink jinjaComment Comment
|
|
|
|
delcommand HiLink
|
|
endif
|
|
|
|
let b:current_syntax = "jinja2"
|
|
|
|
endif
|