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