1" Vim syntax file 2" Language: Django template 3" Maintainer: Dave Hodder <[email protected]> 4" Last Change: 2014 Jul 13 5 6" For version 5.x: Clear all syntax items 7" For version 6.x: Quit when a syntax file was already loaded 8if version < 600 9 syntax clear 10elseif exists("b:current_syntax") 11 finish 12endif 13 14syntax case match 15 16" Mark illegal characters 17syn match djangoError "%}\|}}\|#}" 18 19" Django template built-in tags and parameters 20" 'comment' doesn't appear here because it gets special treatment 21syn keyword djangoStatement contained autoescape csrf_token empty 22" FIXME ==, !=, <, >, <=, and >= should be djangoStatements: 23" syn keyword djangoStatement contained == != < > <= >= 24syn keyword djangoStatement contained and as block endblock by cycle debug else elif 25syn keyword djangoStatement contained extends filter endfilter firstof for 26syn keyword djangoStatement contained endfor if endif ifchanged endifchanged 27syn keyword djangoStatement contained ifequal endifequal ifnotequal 28syn keyword djangoStatement contained endifnotequal in include load not now or 29syn keyword djangoStatement contained parsed regroup reversed spaceless 30syn keyword djangoStatement contained endspaceless ssi templatetag openblock 31syn keyword djangoStatement contained closeblock openvariable closevariable 32syn keyword djangoStatement contained openbrace closebrace opencomment 33syn keyword djangoStatement contained closecomment widthratio url with endwith 34syn keyword djangoStatement contained get_current_language trans noop blocktrans 35syn keyword djangoStatement contained endblocktrans get_available_languages 36syn keyword djangoStatement contained get_current_language_bidi plural 37 38" Django templete built-in filters 39syn keyword djangoFilter contained add addslashes capfirst center cut date 40syn keyword djangoFilter contained default default_if_none dictsort 41syn keyword djangoFilter contained dictsortreversed divisibleby escape escapejs 42syn keyword djangoFilter contained filesizeformat first fix_ampersands 43syn keyword djangoFilter contained floatformat get_digit join last length length_is 44syn keyword djangoFilter contained linebreaks linebreaksbr linenumbers ljust 45syn keyword djangoFilter contained lower make_list phone2numeric pluralize 46syn keyword djangoFilter contained pprint random removetags rjust slice slugify 47syn keyword djangoFilter contained safe safeseq stringformat striptags 48syn keyword djangoFilter contained time timesince timeuntil title truncatechars 49syn keyword djangoFilter contained truncatewords truncatewords_html unordered_list upper urlencode 50syn keyword djangoFilter contained urlize urlizetrunc wordcount wordwrap yesno 51 52" Keywords to highlight within comments 53syn keyword djangoTodo contained TODO FIXME XXX 54 55" Django template constants (always surrounded by double quotes) 56syn region djangoArgument contained start=/"/ skip=/\\"/ end=/"/ 57 58" Mark illegal characters within tag and variables blocks 59syn match djangoTagError contained "#}\|{{\|[^%]}}\|[&#]" 60syn match djangoVarError contained "#}\|{%\|%}\|[<>!&#%]" 61 62" Django template tag and variable blocks 63syn region djangoTagBlock start="{%" end="%}" contains=djangoStatement,djangoFilter,djangoArgument,djangoTagError display 64syn region djangoVarBlock start="{{" end="}}" contains=djangoFilter,djangoArgument,djangoVarError display 65 66" Django template 'comment' tag and comment block 67syn region djangoComment start="{%\s*comment\(\s\+.\{-}\)\?%}" end="{%\s*endcomment\s*%}" contains=djangoTodo 68syn region djangoComBlock start="{#" end="#}" contains=djangoTodo 69 70" Define the default highlighting. 71" For version 5.7 and earlier: only when not done already 72" For version 5.8 and later: only when an item doesn't have highlighting yet 73if version >= 508 || !exists("did_django_syn_inits") 74 if version < 508 75 let did_django_syn_inits = 1 76 command -nargs=+ HiLink hi link <args> 77 else 78 command -nargs=+ HiLink hi def link <args> 79 endif 80 81 HiLink djangoTagBlock PreProc 82 HiLink djangoVarBlock PreProc 83 HiLink djangoStatement Statement 84 HiLink djangoFilter Identifier 85 HiLink djangoArgument Constant 86 HiLink djangoTagError Error 87 HiLink djangoVarError Error 88 HiLink djangoError Error 89 HiLink djangoComment Comment 90 HiLink djangoComBlock Comment 91 HiLink djangoTodo Todo 92 93 delcommand HiLink 94endif 95 96let b:current_syntax = "django" 97