-
Notifications
You must be signed in to change notification settings - Fork 36
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Adding syntax support for twig files
- Loading branch information
Showing
3 changed files
with
151 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
" File: php.vim | ||
" Description: PHP Integration for VIM plugin | ||
" Maintainer: Steve Francia <steve.francia@gmail.com> <http://spf13.com> | ||
" Version: 0.8 | ||
" Last Change: 23rd April 2010 | ||
|
||
" Most of the functions and settings are php specific and located in ftplugin/php.vim | ||
" This file will be for general settings. | ||
|
||
" Detect twig filetype | ||
au BufNewFile,BufRead *.twig setf htmljinja |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
" Vim syntax file | ||
" Language: Jinja HTML template | ||
" Maintainer: Armin Ronacher <armin.ronacher@active-4.com> | ||
" Last Change: 2007 Apr 8 | ||
|
||
" For version 5.x: Clear all syntax items | ||
" For version 6.x: Quit when a syntax file was already loaded | ||
if version < 600 | ||
syntax clear | ||
elseif exists("b:current_syntax") | ||
finish | ||
endif | ||
|
||
if !exists("main_syntax") | ||
let main_syntax = 'html' | ||
endif | ||
|
||
if version < 600 | ||
so <sfile>:p:h/jinja.vim | ||
so <sfile>:p:h/html.vim | ||
else | ||
runtime! syntax/jinja.vim | ||
runtime! syntax/html.vim | ||
unlet b:current_syntax | ||
endif | ||
|
||
let b:current_syntax = "htmljinja" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,113 @@ | ||
" Vim syntax file | ||
" Language: Jinja template | ||
" Maintainer: Armin Ronacher <armin.ronacher@active-4.com> | ||
" Last Change: 2008 May 9 | ||
" Version: 1.1 | ||
" | ||
" Known Bugs: | ||
" because of odd limitations dicts and the modulo operator | ||
" appear wrong in the template. | ||
" | ||
" Changes: | ||
" | ||
" 2008 May 9: Added support for Jinja2 changes (new keyword rules) | ||
|
||
" For version 5.x: Clear all syntax items | ||
" For version 6.x: Quit when a syntax file was already loaded | ||
if version < 600 | ||
syntax clear | ||
elseif exists("b:current_syntax") | ||
finish | ||
endif | ||
|
||
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 skipwhite /[a-zA-Z_][a-zA-Z0-9_]*/ | ||
syn keyword jinjaSpecial containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained false true none loop super caller varargs kwargs | ||
|
||
" Filters | ||
syn match jinjaOperator "|" containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained nextgroup=jinjaFilter | ||
syn match jinjaFilter contained skipwhite /[a-zA-Z_][a-zA-Z0-9_]*/ | ||
syn match jinjaFunction contained skipwhite /[a-zA-Z_][a-zA-Z0-9_]*/ | ||
syn match jinjaBlockName contained skipwhite /[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=/-\?%}/ skipwhite 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 skipwhite /\({%-\?\s*\)\@<=\<[a-zA-Z_][a-zA-Z0-9_]*\>\(\s*[,=]\)\@!/ | ||
|
||
" and context modifiers | ||
syn match jinjaStatement containedin=jinjaTagBlock contained /\<with\(out\)\?\s\+context\>/ skipwhite | ||
|
||
|
||
" Define the default highlighting. | ||
" For version 5.7 and earlier: only when not done already | ||
" For version 5.8 and later: only when an item doesn't have highlighting yet | ||
if version >= 508 || !exists("did_jinja_syn_inits") | ||
if version < 508 | ||
let did_jinja_syn_inits = 1 | ||
command -nargs=+ HiLink hi link <args> | ||
else | ||
command -nargs=+ HiLink hi def link <args> | ||
endif | ||
|
||
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 = "jinja" |