blob: da35406e884f34e4aee7a2585bd93e9b1c016bac [file] [log] [blame]
Bram Moolenaardb552d602006-03-23 22:59:57 +00001" Vim syntax file
2" Language: Django template
3" Maintainer: Dave Hodder <dmh@dmh.org.uk>
Bram Moolenaar5c736222010-01-06 20:54:52 +01004" Last Change: 2008 Dec 18
Bram Moolenaardb552d602006-03-23 22:59:57 +00005
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
Bram Moolenaar756ec0f2007-05-05 17:59:48 +000016" Mark illegal characters
17syn match djangoError "%}\|}}\|#}"
18
Bram Moolenaardb552d602006-03-23 22:59:57 +000019" Django template built-in tags and parameters
20" 'comment' doesn't appear here because it gets special treatment
Bram Moolenaar5c736222010-01-06 20:54:52 +010021syn keyword djangoStatement contained autoescape on off endautoescape
Bram Moolenaar756ec0f2007-05-05 17:59:48 +000022syn keyword djangoStatement contained and as block endblock by cycle debug else
Bram Moolenaar5c736222010-01-06 20:54:52 +010023syn keyword djangoStatement contained extends filter endfilter firstof for empty
Bram Moolenaardb552d602006-03-23 22:59:57 +000024syn 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
Bram Moolenaar756ec0f2007-05-05 17:59:48 +000030syn keyword djangoStatement contained openbrace closebrace opencomment
Bram Moolenaar79166c42007-05-10 18:29:51 +000031syn keyword djangoStatement contained closecomment widthratio url with endwith
Bram Moolenaar756ec0f2007-05-05 17:59:48 +000032syn 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
Bram Moolenaardb552d602006-03-23 22:59:57 +000035
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
Bram Moolenaar5c736222010-01-06 20:54:52 +010039syn keyword djangoFilter contained dictsortreversed divisibleby escape escapejs
Bram Moolenaardb552d602006-03-23 22:59:57 +000040syn keyword djangoFilter contained filesizeformat first fix_ampersands
Bram Moolenaar5c736222010-01-06 20:54:52 +010041syn keyword djangoFilter contained floatformat force_escape get_digit iriencode join last length length_is
Bram Moolenaardb552d602006-03-23 22:59:57 +000042syn keyword djangoFilter contained linebreaks linebreaksbr linenumbers ljust
43syn keyword djangoFilter contained lower make_list phone2numeric pluralize
Bram Moolenaar5c736222010-01-06 20:54:52 +010044syn keyword djangoFilter contained pprint random removetags rjust safe slice slugify
Bram Moolenaar756ec0f2007-05-05 17:59:48 +000045syn keyword djangoFilter contained stringformat striptags
46syn keyword djangoFilter contained time timesince timeuntil title
Bram Moolenaar5c736222010-01-06 20:54:52 +010047syn keyword djangoFilter contained truncatewords truncatewords_html unordered_list upper urlencode
Bram Moolenaardb552d602006-03-23 22:59:57 +000048syn keyword djangoFilter contained urlize urlizetrunc wordcount wordwrap yesno
49
Bram Moolenaar756ec0f2007-05-05 17:59:48 +000050" Keywords to highlight within comments
51syn keyword djangoTodo contained TODO FIXME XXX
52
Bram Moolenaardb552d602006-03-23 22:59:57 +000053" Django template constants (always surrounded by double quotes)
54syn region djangoArgument contained start=/"/ skip=/\\"/ end=/"/
55
Bram Moolenaar756ec0f2007-05-05 17:59:48 +000056" Mark illegal characters within tag and variables blocks
Bram Moolenaar79166c42007-05-10 18:29:51 +000057syn match djangoTagError contained "#}\|{{\|[^%]}}\|[<>!&#]"
58syn match djangoVarError contained "#}\|{%\|%}\|[<>!&#%]"
Bram Moolenaardb552d602006-03-23 22:59:57 +000059
Bram Moolenaar756ec0f2007-05-05 17:59:48 +000060" 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
Bram Moolenaardb552d602006-03-23 22:59:57 +000067
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
Bram Moolenaar756ec0f2007-05-05 17:59:48 +000084 HiLink djangoTagError Error
85 HiLink djangoVarError Error
86 HiLink djangoError Error
Bram Moolenaardb552d602006-03-23 22:59:57 +000087 HiLink djangoComment Comment
Bram Moolenaar756ec0f2007-05-05 17:59:48 +000088 HiLink djangoComBlock Comment
89 HiLink djangoTodo Todo
Bram Moolenaardb552d602006-03-23 22:59:57 +000090
91 delcommand HiLink
92endif
93
94let b:current_syntax = "django"