mirror of
https://github.com/lepture/vim-jinja.git
synced 2025-11-13 22:03:49 -05:00
init
This commit is contained in:
1
ftdetect/jinja.vim
Normal file
1
ftdetect/jinja.vim
Normal file
@@ -0,0 +1 @@
|
|||||||
|
au BufNewFile,BufRead *.html,*.htm,*.shtml,*.stm if &ft == 'htmldjango' | set ft=jinja | endif
|
||||||
75
indent/jinja.vim
Normal file
75
indent/jinja.vim
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
" jinja indent file
|
||||||
|
" Language: Jinja HTML template
|
||||||
|
" Maintainer: Hsiaoming Yang <lepture@me.com>
|
||||||
|
" Last Change: Sep 13, 2012
|
||||||
|
|
||||||
|
if exists("b:did_indent")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
runtime! indent/html.vim
|
||||||
|
unlet! b:did_indent
|
||||||
|
|
||||||
|
if &l:indentexpr == ''
|
||||||
|
if &l:cindent
|
||||||
|
let &l:indentexpr = 'cindent(v:lnum)'
|
||||||
|
else
|
||||||
|
let &l:indentexpr = 'indent(prevnonblank(v:lnum-1))'
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
let b:html_indentexpr = &l:indentexpr
|
||||||
|
|
||||||
|
let b:did_indent = 1
|
||||||
|
|
||||||
|
setlocal indentexpr=GetJinjaIndent()
|
||||||
|
setlocal indentkeys=o,O,*<Return>,{,},o,O,!^F,<>>
|
||||||
|
|
||||||
|
" Only define the function once.
|
||||||
|
if exists("*GetJinjaIndent")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! GetJinjaIndent(...)
|
||||||
|
if a:0 && a:1 == '.'
|
||||||
|
let v:lnum = line('.')
|
||||||
|
elseif a:0 && a:1 =~ '^\d'
|
||||||
|
let v:lnum = a:1
|
||||||
|
endif
|
||||||
|
let vcol = col('.')
|
||||||
|
|
||||||
|
call cursor(v:lnum,vcol)
|
||||||
|
|
||||||
|
exe "let ind = ".b:html_indentexpr
|
||||||
|
|
||||||
|
let lnum = prevnonblank(v:lnum-1)
|
||||||
|
let pnb = getline(lnum)
|
||||||
|
let cur = getline(v:lnum)
|
||||||
|
|
||||||
|
let tagstart = '.*' . '{%\s*'
|
||||||
|
let tagend = '.*%}' . '.*'
|
||||||
|
|
||||||
|
let blocktags = '\(block\|for\|if\|with\|autoescape\|comment\|filter\|spaceless\)'
|
||||||
|
let midtags = '\(empty\|else\)'
|
||||||
|
|
||||||
|
let pnb_blockstart = pnb =~# tagstart . blocktags . tagend
|
||||||
|
let pnb_blockend = pnb =~# tagstart . 'end' . blocktags . tagend
|
||||||
|
let pnb_blockmid = pnb =~# tagstart . midtags . tagend
|
||||||
|
|
||||||
|
let cur_blockstart = cur =~# tagstart . blocktags . tagend
|
||||||
|
let cur_blockend = cur =~# tagstart . 'end' . blocktags . tagend
|
||||||
|
let cur_blockmid = cur =~# tagstart . midtags . tagend
|
||||||
|
|
||||||
|
if pnb_blockstart && !pnb_blockend
|
||||||
|
let ind = ind + &sw
|
||||||
|
elseif pnb_blockmid && !pnb_blockend
|
||||||
|
let ind = ind + &sw
|
||||||
|
endif
|
||||||
|
|
||||||
|
if cur_blockend && !cur_blockstart
|
||||||
|
let ind = ind - &sw
|
||||||
|
elseif cur_blockmid
|
||||||
|
let ind = ind - &sw
|
||||||
|
endif
|
||||||
|
|
||||||
|
return ind
|
||||||
|
endfunction
|
||||||
95
syntax/jinja.vim
Normal file
95
syntax/jinja.vim
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
" jinja syntax file
|
||||||
|
" Language: Jinja HTML template
|
||||||
|
" Maintainer: Hsiaoming Yang <lepture@me.com>
|
||||||
|
" Last Change: Sep 13, 2012
|
||||||
|
|
||||||
|
" only support 6.x+
|
||||||
|
|
||||||
|
if exists("b:current_syntax")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists("main_syntax")
|
||||||
|
let main_syntax = 'html'
|
||||||
|
endif
|
||||||
|
|
||||||
|
runtime! syntax/html.vim
|
||||||
|
unlet b:current_syntax
|
||||||
|
|
||||||
|
syntax case match
|
||||||
|
|
||||||
|
" Mark illegal characters
|
||||||
|
syn match jinjaError "%}\|}}\|#}"
|
||||||
|
|
||||||
|
" jinja template built-in tags and parameters
|
||||||
|
" 'comment' doesn't appear here because it gets special treatment
|
||||||
|
syn keyword jinjaStatement contained autoescape csrf_token empty
|
||||||
|
" FIXME ==, !=, <, >, <=, and >= should be jinjaStatements:
|
||||||
|
" syn keyword jinjaStatement contained == != < > <= >=
|
||||||
|
syn keyword jinjaStatement contained and as block endblock by cycle debug else
|
||||||
|
syn keyword jinjaStatement contained extends filter endfilter firstof for
|
||||||
|
syn keyword jinjaStatement contained endfor if endif ifchanged endifchanged
|
||||||
|
syn keyword jinjaStatement contained ifequal endifequal ifnotequal
|
||||||
|
syn keyword jinjaStatement contained endifnotequal in include load not now or
|
||||||
|
syn keyword jinjaStatement contained parsed regroup reversed spaceless
|
||||||
|
syn keyword jinjaStatement contained endspaceless ssi templatetag openblock
|
||||||
|
syn keyword jinjaStatement contained closeblock openvariable closevariable
|
||||||
|
syn keyword jinjaStatement contained openbrace closebrace opencomment
|
||||||
|
syn keyword jinjaStatement contained closecomment widthratio url with endwith
|
||||||
|
syn keyword jinjaStatement contained get_current_language trans noop blocktrans
|
||||||
|
syn keyword jinjaStatement contained endblocktrans get_available_languages
|
||||||
|
syn keyword jinjaStatement contained get_current_language_bidi plural
|
||||||
|
|
||||||
|
" jinja templete built-in filters
|
||||||
|
syn keyword jinjaFilter contained add addslashes capfirst center cut date
|
||||||
|
syn keyword jinjaFilter contained default default_if_none dictsort
|
||||||
|
syn keyword jinjaFilter contained dictsortreversed divisibleby escape escapejs
|
||||||
|
syn keyword jinjaFilter contained filesizeformat first fix_ampersands
|
||||||
|
syn keyword jinjaFilter contained floatformat get_digit join last length length_is
|
||||||
|
syn keyword jinjaFilter contained linebreaks linebreaksbr linenumbers ljust
|
||||||
|
syn keyword jinjaFilter contained lower make_list phone2numeric pluralize
|
||||||
|
syn keyword jinjaFilter contained pprint random removetags rjust slice slugify
|
||||||
|
syn keyword jinjaFilter contained safe safeseq stringformat striptags
|
||||||
|
syn keyword jinjaFilter contained time timesince timeuntil title
|
||||||
|
syn keyword jinjaFilter contained truncatewords truncatewords_html unordered_list upper urlencode
|
||||||
|
syn keyword jinjaFilter contained urlize urlizetrunc wordcount wordwrap yesno
|
||||||
|
|
||||||
|
" Keywords to highlight within comments
|
||||||
|
syn keyword jinjaTodo contained TODO FIXME XXX
|
||||||
|
|
||||||
|
" jinja template constants (always surrounded by double quotes)
|
||||||
|
syn region jinjaArgument contained start=/"/ skip=/\\"/ end=/"/
|
||||||
|
|
||||||
|
" Mark illegal characters within tag and variables blocks
|
||||||
|
syn match jinjaTagError contained "#}\|{{\|[^%]}}\|[&#]"
|
||||||
|
syn match jinjaVarError contained "#}\|{%\|%}\|[<>!&#%]"
|
||||||
|
|
||||||
|
" jinja template tag and variable blocks
|
||||||
|
syn region jinjaTagBlock start="{%" end="%}" contains=jinjaStatement,jinjaFilter,jinjaArgument,jinjaTagError display
|
||||||
|
syn region jinjaVarBlock start="{{" end="}}" contains=jinjaFilter,jinjaArgument,jinjaVarError display
|
||||||
|
|
||||||
|
" jinja template 'comment' tag and comment block
|
||||||
|
syn region jinjaComment start="{%\s*comment\s*%}" end="{%\s*endcomment\s*%}" contains=jinjaTodo
|
||||||
|
syn region jinjaComBlock start="{#" end="#}" contains=jinjaTodo
|
||||||
|
|
||||||
|
syn cluster jinjaBlocks add=jinjaTagBlock,jinjaVarBlock,jinjaComment,jinjaComBlock
|
||||||
|
|
||||||
|
syn region jinjaTagBlock start="{%" end="%}" contains=jinjaStatement,jinjaFilter,jinjaArgument,jinjaTagError display containedin=ALLBUT,@jinjaBlocks
|
||||||
|
syn region jinjaVarBlock start="{{" end="}}" contains=jinjaFilter,jinjaArgument,jinjaVarError display containedin=ALLBUT,@jinjaBlocks
|
||||||
|
syn region jinjaComment start="{%\s*comment\s*%}" end="{%\s*endcomment\s*%}" contains=jinjaTodo containedin=ALLBUT,@jinjaBlocks
|
||||||
|
syn region jinjaComBlock start="{#" end="#}" contains=jinjaTodo containedin=ALLBUT,@jinjaBlocks
|
||||||
|
|
||||||
|
|
||||||
|
hi def link jinjaTagBlock PreProc
|
||||||
|
hi def link jinjaVarBlock PreProc
|
||||||
|
hi def link jinjaStatement Statement
|
||||||
|
hi def link jinjaFilter Identifier
|
||||||
|
hi def link jinjaArgument Constant
|
||||||
|
hi def link jinjaTagError Error
|
||||||
|
hi def link jinjaVarError Error
|
||||||
|
hi def link jinjaError Error
|
||||||
|
hi def link jinjaComment Comment
|
||||||
|
hi def link jinjaComBlock Comment
|
||||||
|
hi def link jinjaTodo Todo
|
||||||
|
|
||||||
|
let b:current_syntax = "jinja"
|
||||||
Reference in New Issue
Block a user