xref: /vim-8.2.3635/runtime/syntax/django.vim (revision f37506f6)
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