blob: a7104d37ec9f34d7cfdcf4432682415de8f6a1d4 [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 Moolenaardbc28022014-07-26 13:40:44 +02004" Last Change: 2014 Jul 13
Bram Moolenaardb552d602006-03-23 22:59:57 +00005
Bram Moolenaar89bcfda2016-08-30 23:26:57 +02006" quit when a syntax file was already loaded
7if exists("b:current_syntax")
Bram Moolenaardb552d602006-03-23 22:59:57 +00008 finish
9endif
10
11syntax case match
12
Bram Moolenaar756ec0f2007-05-05 17:59:48 +000013" Mark illegal characters
14syn match djangoError "%}\|}}\|#}"
15
Bram Moolenaardb552d602006-03-23 22:59:57 +000016" Django template built-in tags and parameters
17" 'comment' doesn't appear here because it gets special treatment
Bram Moolenaar218116c2010-05-20 21:46:00 +020018syn keyword djangoStatement contained autoescape csrf_token empty
19" FIXME ==, !=, <, >, <=, and >= should be djangoStatements:
20" syn keyword djangoStatement contained == != < > <= >=
Bram Moolenaar53bfca22012-04-13 23:04:47 +020021syn keyword djangoStatement contained and as block endblock by cycle debug else elif
Bram Moolenaar218116c2010-05-20 21:46:00 +020022syn keyword djangoStatement contained extends filter endfilter firstof for
Bram Moolenaardb552d602006-03-23 22:59:57 +000023syn 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
Bram Moolenaar79166c42007-05-10 18:29:51 +000030syn keyword djangoStatement contained closecomment widthratio url with endwith
Bram Moolenaar756ec0f2007-05-05 17:59:48 +000031syn 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
Bram Moolenaar5c736222010-01-06 20:54:52 +010038syn keyword djangoFilter contained dictsortreversed divisibleby escape escapejs
Bram Moolenaardb552d602006-03-23 22:59:57 +000039syn keyword djangoFilter contained filesizeformat first fix_ampersands
Bram Moolenaar218116c2010-05-20 21:46:00 +020040syn keyword djangoFilter contained floatformat get_digit join last length length_is
Bram Moolenaardb552d602006-03-23 22:59:57 +000041syn keyword djangoFilter contained linebreaks linebreaksbr linenumbers ljust
42syn keyword djangoFilter contained lower make_list phone2numeric pluralize
Bram Moolenaar218116c2010-05-20 21:46:00 +020043syn keyword djangoFilter contained pprint random removetags rjust slice slugify
44syn keyword djangoFilter contained safe safeseq stringformat striptags
Bram Moolenaar53bfca22012-04-13 23:04:47 +020045syn keyword djangoFilter contained time timesince timeuntil title truncatechars
Bram Moolenaar5c736222010-01-06 20:54:52 +010046syn keyword djangoFilter contained truncatewords truncatewords_html unordered_list upper urlencode
Bram Moolenaardb552d602006-03-23 22:59:57 +000047syn 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
Bram Moolenaar218116c2010-05-20 21:46:00 +020056syn match djangoTagError contained "#}\|{{\|[^%]}}\|[&#]"
Bram Moolenaar79166c42007-05-10 18:29:51 +000057syn 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
Bram Moolenaardbc28022014-07-26 13:40:44 +020064syn region djangoComment start="{%\s*comment\(\s\+.\{-}\)\?%}" end="{%\s*endcomment\s*%}" contains=djangoTodo
Bram Moolenaar756ec0f2007-05-05 17:59:48 +000065syn region djangoComBlock start="{#" end="#}" contains=djangoTodo
Bram Moolenaardb552d602006-03-23 22:59:57 +000066
67" Define the default highlighting.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020068" Only when an item doesn't have highlighting yet
69command -nargs=+ HiLink hi def link <args>
Bram Moolenaardb552d602006-03-23 22:59:57 +000070
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020071HiLink djangoTagBlock PreProc
72HiLink djangoVarBlock PreProc
73HiLink djangoStatement Statement
74HiLink djangoFilter Identifier
75HiLink djangoArgument Constant
76HiLink djangoTagError Error
77HiLink djangoVarError Error
78HiLink djangoError Error
79HiLink djangoComment Comment
80HiLink djangoComBlock Comment
81HiLink djangoTodo Todo
Bram Moolenaardb552d602006-03-23 22:59:57 +000082
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020083delcommand HiLink
Bram Moolenaardb552d602006-03-23 22:59:57 +000084
85let b:current_syntax = "django"