mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	 e265363a88
			
		
	
	e265363a88
	
	
	
		
			
			fixes: #vim/vim#15880
closes: vim/vim#15885
5e53fca76f
Co-authored-by: Gregory Anders <greg@gpanders.com>
		
	
		
			
				
	
	
		
			88 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " Vim syntax file
 | |
| " Language: Jinja
 | |
| " Maintainer: Gregory Anders
 | |
| " Upstream: https://gitlab.com/HiPhish/jinja.vim
 | |
| " Last Change: 2024 Oct 16
 | |
| 
 | |
| if exists('b:current_syntax') && b:current_syntax =~? 'jinja'
 | |
|     finish
 | |
| endif
 | |
| 
 | |
| syntax case match
 | |
| syntax sync fromstart
 | |
| 
 | |
| " 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\>/
 | |
| 
 | |
| hi def link jinjaPunctuation jinjaOperator
 | |
| hi def link jinjaAttribute jinjaVariable
 | |
| hi def link jinjaFunction jinjaFilter
 | |
| 
 | |
| hi def link jinjaTagDelim jinjaTagBlock
 | |
| hi def link jinjaVarDelim jinjaVarBlock
 | |
| hi def link jinjaCommentDelim jinjaComment
 | |
| hi def link jinjaRawDelim jinja
 | |
| 
 | |
| hi def link jinjaSpecial Special
 | |
| hi def link jinjaOperator Normal
 | |
| hi def link jinjaRaw Normal
 | |
| hi def link jinjaTagBlock PreProc
 | |
| hi def link jinjaVarBlock PreProc
 | |
| hi def link jinjaStatement Statement
 | |
| hi def link jinjaFilter Function
 | |
| hi def link jinjaBlockName Function
 | |
| hi def link jinjaVariable Identifier
 | |
| hi def link jinjaString Constant
 | |
| hi def link jinjaNumber Constant
 | |
| hi def link jinjaComment Comment
 | |
| 
 | |
| let b:current_syntax = 'jinja'
 |