1db552d60SBram Moolenaar" Vim syntax file 2db552d60SBram Moolenaar" Language: Django template 3db552d60SBram Moolenaar" Maintainer: Dave Hodder <[email protected]> 4dbc28022SBram Moolenaar" Last Change: 2014 Jul 13 5db552d60SBram Moolenaar 689bcfda6SBram Moolenaar" quit when a syntax file was already loaded 789bcfda6SBram Moolenaarif exists("b:current_syntax") 8db552d60SBram Moolenaar finish 9db552d60SBram Moolenaarendif 10db552d60SBram Moolenaar 11db552d60SBram Moolenaarsyntax case match 12db552d60SBram Moolenaar 13756ec0f3SBram Moolenaar" Mark illegal characters 14756ec0f3SBram Moolenaarsyn match djangoError "%}\|}}\|#}" 15756ec0f3SBram Moolenaar 16db552d60SBram Moolenaar" Django template built-in tags and parameters 17db552d60SBram Moolenaar" 'comment' doesn't appear here because it gets special treatment 18218116c1SBram Moolenaarsyn keyword djangoStatement contained autoescape csrf_token empty 19218116c1SBram Moolenaar" FIXME ==, !=, <, >, <=, and >= should be djangoStatements: 20218116c1SBram Moolenaar" syn keyword djangoStatement contained == != < > <= >= 2153bfca22SBram Moolenaarsyn keyword djangoStatement contained and as block endblock by cycle debug else elif 22218116c1SBram Moolenaarsyn keyword djangoStatement contained extends filter endfilter firstof for 23db552d60SBram Moolenaarsyn keyword djangoStatement contained endfor if endif ifchanged endifchanged 24db552d60SBram Moolenaarsyn keyword djangoStatement contained ifequal endifequal ifnotequal 25db552d60SBram Moolenaarsyn keyword djangoStatement contained endifnotequal in include load not now or 26db552d60SBram Moolenaarsyn keyword djangoStatement contained parsed regroup reversed spaceless 27db552d60SBram Moolenaarsyn keyword djangoStatement contained endspaceless ssi templatetag openblock 28db552d60SBram Moolenaarsyn keyword djangoStatement contained closeblock openvariable closevariable 29756ec0f3SBram Moolenaarsyn keyword djangoStatement contained openbrace closebrace opencomment 3079166c43SBram Moolenaarsyn keyword djangoStatement contained closecomment widthratio url with endwith 31756ec0f3SBram Moolenaarsyn keyword djangoStatement contained get_current_language trans noop blocktrans 32756ec0f3SBram Moolenaarsyn keyword djangoStatement contained endblocktrans get_available_languages 33756ec0f3SBram Moolenaarsyn keyword djangoStatement contained get_current_language_bidi plural 34db552d60SBram Moolenaar 35db552d60SBram Moolenaar" Django templete built-in filters 36db552d60SBram Moolenaarsyn keyword djangoFilter contained add addslashes capfirst center cut date 37db552d60SBram Moolenaarsyn keyword djangoFilter contained default default_if_none dictsort 385c73622aSBram Moolenaarsyn keyword djangoFilter contained dictsortreversed divisibleby escape escapejs 39db552d60SBram Moolenaarsyn keyword djangoFilter contained filesizeformat first fix_ampersands 40218116c1SBram Moolenaarsyn keyword djangoFilter contained floatformat get_digit join last length length_is 41db552d60SBram Moolenaarsyn keyword djangoFilter contained linebreaks linebreaksbr linenumbers ljust 42db552d60SBram Moolenaarsyn keyword djangoFilter contained lower make_list phone2numeric pluralize 43218116c1SBram Moolenaarsyn keyword djangoFilter contained pprint random removetags rjust slice slugify 44218116c1SBram Moolenaarsyn keyword djangoFilter contained safe safeseq stringformat striptags 4553bfca22SBram Moolenaarsyn keyword djangoFilter contained time timesince timeuntil title truncatechars 465c73622aSBram Moolenaarsyn keyword djangoFilter contained truncatewords truncatewords_html unordered_list upper urlencode 47db552d60SBram Moolenaarsyn keyword djangoFilter contained urlize urlizetrunc wordcount wordwrap yesno 48db552d60SBram Moolenaar 49756ec0f3SBram Moolenaar" Keywords to highlight within comments 50756ec0f3SBram Moolenaarsyn keyword djangoTodo contained TODO FIXME XXX 51756ec0f3SBram Moolenaar 52db552d60SBram Moolenaar" Django template constants (always surrounded by double quotes) 53db552d60SBram Moolenaarsyn region djangoArgument contained start=/"/ skip=/\\"/ end=/"/ 54db552d60SBram Moolenaar 55756ec0f3SBram Moolenaar" Mark illegal characters within tag and variables blocks 56218116c1SBram Moolenaarsyn match djangoTagError contained "#}\|{{\|[^%]}}\|[&#]" 5779166c43SBram Moolenaarsyn match djangoVarError contained "#}\|{%\|%}\|[<>!&#%]" 58db552d60SBram Moolenaar 59756ec0f3SBram Moolenaar" Django template tag and variable blocks 60756ec0f3SBram Moolenaarsyn region djangoTagBlock start="{%" end="%}" contains=djangoStatement,djangoFilter,djangoArgument,djangoTagError display 61756ec0f3SBram Moolenaarsyn region djangoVarBlock start="{{" end="}}" contains=djangoFilter,djangoArgument,djangoVarError display 62756ec0f3SBram Moolenaar 63756ec0f3SBram Moolenaar" Django template 'comment' tag and comment block 64dbc28022SBram Moolenaarsyn region djangoComment start="{%\s*comment\(\s\+.\{-}\)\?%}" end="{%\s*endcomment\s*%}" contains=djangoTodo 65756ec0f3SBram Moolenaarsyn region djangoComBlock start="{#" end="#}" contains=djangoTodo 66db552d60SBram Moolenaar 67db552d60SBram Moolenaar" Define the default highlighting. 6889bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet 69db552d60SBram Moolenaar 70*f37506f6SBram Moolenaarhi def link djangoTagBlock PreProc 71*f37506f6SBram Moolenaarhi def link djangoVarBlock PreProc 72*f37506f6SBram Moolenaarhi def link djangoStatement Statement 73*f37506f6SBram Moolenaarhi def link djangoFilter Identifier 74*f37506f6SBram Moolenaarhi def link djangoArgument Constant 75*f37506f6SBram Moolenaarhi def link djangoTagError Error 76*f37506f6SBram Moolenaarhi def link djangoVarError Error 77*f37506f6SBram Moolenaarhi def link djangoError Error 78*f37506f6SBram Moolenaarhi def link djangoComment Comment 79*f37506f6SBram Moolenaarhi def link djangoComBlock Comment 80*f37506f6SBram Moolenaarhi def link djangoTodo Todo 81db552d60SBram Moolenaar 82db552d60SBram Moolenaar 83db552d60SBram Moolenaarlet b:current_syntax = "django" 84