" Vim syntax file " Language: Django template " Maintainer: Dave Hodder " Last Change: 2021 Nov 29 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syntax case match " Mark illegal characters syn match djangoError "%}\|}}\|#}" " Django template built-in tags and parameters " 'comment' doesn't appear here because it gets special treatment syn keyword djangoStatement contained autoescape csrf_token empty " FIXME ==, !=, <, >, <=, and >= should be djangoStatements: " syn keyword djangoStatement contained == != < > <= >= syn keyword djangoStatement contained and as block endblock by cycle debug else elif syn keyword djangoStatement contained extends filter endfilter firstof for syn keyword djangoStatement contained endfor if endif ifchanged endifchanged syn keyword djangoStatement contained ifequal endifequal ifnotequal syn keyword djangoStatement contained endifnotequal in include load not now or syn keyword djangoStatement contained parsed regroup reversed spaceless syn keyword djangoStatement contained endspaceless ssi templatetag openblock syn keyword djangoStatement contained closeblock openvariable closevariable syn keyword djangoStatement contained openbrace closebrace opencomment syn keyword djangoStatement contained closecomment widthratio url with endwith syn keyword djangoStatement contained get_current_language trans noop blocktrans syn keyword djangoStatement contained endblocktrans get_available_languages syn keyword djangoStatement contained get_current_language_bidi plural syn keyword djangoStatement contained translate blocktranslate endblocktranslate " Django templete built-in filters syn keyword djangoFilter contained add addslashes capfirst center cut date syn keyword djangoFilter contained default default_if_none dictsort syn keyword djangoFilter contained dictsortreversed divisibleby escape escapejs syn keyword djangoFilter contained filesizeformat first fix_ampersands syn keyword djangoFilter contained floatformat get_digit join last length length_is syn keyword djangoFilter contained linebreaks linebreaksbr linenumbers ljust syn keyword djangoFilter contained lower make_list phone2numeric pluralize syn keyword djangoFilter contained pprint random removetags rjust slice slugify syn keyword djangoFilter contained safe safeseq stringformat striptags syn keyword djangoFilter contained time timesince timeuntil title truncatechars syn keyword djangoFilter contained truncatewords truncatewords_html unordered_list upper urlencode syn keyword djangoFilter contained urlize urlizetrunc wordcount wordwrap yesno " Keywords to highlight within comments syn keyword djangoTodo contained TODO FIXME XXX " Django template constants (always surrounded by double quotes) syn region djangoArgument contained start=/"/ skip=/\\"/ end=/"/ " Mark illegal characters within tag and variables blocks syn match djangoTagError contained "#}\|{{\|[^%]}}\|[&#]" syn match djangoVarError contained "#}\|{%\|%}\|[<>!&#%]" " Django template tag and variable blocks syn region djangoTagBlock start="{%" end="%}" contains=djangoStatement,djangoFilter,djangoArgument,djangoTagError display syn region djangoVarBlock start="{{" end="}}" contains=djangoFilter,djangoArgument,djangoVarError display " Django template 'comment' tag and comment block syn region djangoComment start="{%\s*comment\(\s\+.\{-}\)\?%}" end="{%\s*endcomment\s*%}" contains=djangoTodo syn region djangoComBlock start="{#" end="#}" contains=djangoTodo " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link djangoTagBlock PreProc hi def link djangoVarBlock PreProc hi def link djangoStatement Statement hi def link djangoFilter Identifier hi def link djangoArgument Constant hi def link djangoTagError Error hi def link djangoVarError Error hi def link djangoError Error hi def link djangoComment Comment hi def link djangoComBlock Comment hi def link djangoTodo Todo let b:current_syntax = "django"