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