" mediawiki.vim (formerly named Wikipedia.vim)
"
" Vim syntax file
" Language: MediaWiki, http://www.mediawiki.org/
" Maintainer: This syntax file needs a maintainer in order to ship
" with Vim. Please contact [[User:Unforgettableid]] if you want
" to volunteer.
" Home: http://en.wikipedia.org/wiki/Wikipedia:Text_editor_support#Vim
" Last Change: 2011 Sep 19
" Credits: [[User:Aepd87]], [[User:Danny373]], [[User:Ingo Karkat]], et al.
"
" Published on Wikipedia in 2003-04 and declared authorless.
"
" Based on the HTML syntax file. Probably too closely based, in fact.
" There may well be name collisions everywhere, but ignorance is bliss,
" so they say.
"
" To do: plug-in support for downloading and uploading to the server.
if !exists("main_syntax")
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
let main_syntax = "mediawiki"
endif
syntax case ignore
if v:version >= 700
syntax spell toplevel
endif
" Mark illegal characters
sy match htmlError "[<>&]"
" Tags
sy region htmlString contained start=+"+ end=+"+ contains=htmlSpecialChar,@htmlPreproc
sy region htmlString contained start=+'+ end=+'+ contains=htmlSpecialChar,@htmlPreproc
sy match htmlValue contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1 contains=@htmlPreproc
sy region htmlEndTag start=++ end=+>+ contains=htmlTagN,htmlTagError
sy region htmlTag start=+<[^/]+ end=+>+ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster
sy match htmlTagN contained +<\s*[-a-zA-Z0-9]\++hs=s+1 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster
sy match htmlTagN contained +\s*[-a-zA-Z0-9]\++hs=s+2 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster
sy match htmlTagError contained "[^>]<"ms=s+1
" Allowed HTML tag names
sy keyword htmlTagName contained big blockquote br caption center cite code
sy keyword htmlTagName contained dd del div dl dt font hr ins li
sy keyword htmlTagName contained ol p pre rb rp rt ruby s small span strike sub
sy keyword htmlTagName contained sup table td th tr tt ul var
sy match htmlTagName contained "\<\(b\|i\|u\|h[1-6]\|em\|strong\)\>"
" Allowed Wiki tag names
sy keyword htmlTagName contained math nowiki references source syntaxhighlight
" Allowed arg names
sy keyword htmlArg contained align lang dir width height nowrap bgcolor clear
sy keyword htmlArg contained noshade cite datetime size face color type start
sy keyword htmlArg contained value compact summary border frame rules
sy keyword htmlArg contained cellspacing cellpadding valign char charoff
sy keyword htmlArg contained colgroup col span abbr axis headers scope rowspan
sy keyword htmlArg contained colspan id class name style title
" Special characters
sy match htmlSpecialChar "\=[0-9A-Za-z]\{1,8};"
" Comments
sy region htmlComment start=++ contains=htmlCommentPart,htmlCommentError
sy match htmlCommentError contained "[^>+
if !exists("html_no_rendering")
sy cluster htmlTop contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,@htmlPreproc
sy region htmlBold start="" end=""me=e-4 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic
sy region htmlBold start="" end=""me=e-9 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic
sy region htmlBoldUnderline contained start="" end=""me=e-4 contains=@htmlTop,htmlBoldUnderlineItalic
sy region htmlBoldItalic contained start="" end=""me=e-4 contains=@htmlTop,htmlBoldItalicUnderline
sy region htmlBoldItalic contained start="" end=""me=e-5 contains=@htmlTop,htmlBoldItalicUnderline
sy region htmlBoldUnderlineItalic contained start="" end=""me=e-4 contains=@htmlTop
sy region htmlBoldUnderlineItalic contained start="" end=""me=e-5 contains=@htmlTop
sy region htmlBoldItalicUnderline contained start="" end=""me=e-4 contains=@htmlTop,htmlBoldUnderlineItalic
sy region htmlUnderline start="" end=""me=e-4 contains=@htmlTop,htmlUnderlineBold,htmlUnderlineItalic
sy region htmlUnderlineBold contained start="" end=""me=e-4 contains=@htmlTop,htmlUnderlineBoldItalic
sy region htmlUnderlineBold contained start="" end=""me=e-9 contains=@htmlTop,htmlUnderlineBoldItalic
sy region htmlUnderlineItalic contained start="" end=""me=e-4 contains=@htmlTop,htmlUnderlineItalicBold
sy region htmlUnderlineItalic contained start="" end=""me=e-5 contains=@htmlTop,htmlUnderlineItalicBold
sy region htmlUnderlineItalicBold contained start="" end=""me=e-4 contains=@htmlTop
sy region htmlUnderlineItalicBold contained start="" end=""me=e-9 contains=@htmlTop
sy region htmlUnderlineBoldItalic contained start="" end=""me=e-4 contains=@htmlTop
sy region htmlUnderlineBoldItalic contained start="" end=""me=e-5 contains=@htmlTop
sy region htmlItalic start="" end=""me=e-4 contains=@htmlTop,htmlItalicBold,htmlItalicUnderline
sy region htmlItalic start="" end=""me=e-5 contains=@htmlTop
sy region htmlItalicBold contained start="" end=""me=e-4 contains=@htmlTop,htmlItalicBoldUnderline
sy region htmlItalicBold contained start="" end=""me=e-9 contains=@htmlTop,htmlItalicBoldUnderline
sy region htmlItalicBoldUnderline contained start="" end=""me=e-4 contains=@htmlTop
sy region htmlItalicUnderline contained start="" end=""me=e-4 contains=@htmlTop,htmlItalicUnderlineBold
sy region htmlItalicUnderlineBold contained start="" end=""me=e-4 contains=@htmlTop
sy region htmlItalicUnderlineBold contained start="" end=""me=e-9 contains=@htmlTop
sy region htmlH1 start="
" end="
"me=e-5 contains=@htmlTop
sy region htmlH2 start="
" end="
"me=e-5 contains=@htmlTop
sy region htmlH3 start="
" end="
"me=e-5 contains=@htmlTop
sy region htmlH4 start="
" end="
"me=e-5 contains=@htmlTop
sy region htmlH5 start="
" end="
"me=e-5 contains=@htmlTop
sy region htmlH6 start="
" end="
"me=e-5 contains=@htmlTop
endif
" No htmlTop and wikiPre inside HTML preformatted areas, because
" MediaWiki renders everything in there literally (HTML tags and
" entities, too):
tags work as the combination of and
" the standard HTML
tag: the content will preformatted, and it
" will not be parsed, but shown as in the wikitext source.
"
" With wikiPre, indented lines would be rendered differently from
" unindented lines.
sy match htmlPreTag /
[^>]*>/ contains=htmlTag
sy match htmlPreEndTag /<\/pre>/ contains=htmlEndTag
sy match wikiNowikiTag // contains=htmlTag
sy match wikiNowikiEndTag /<\/nowiki>/ contains=htmlEndTag
sy match wikiSourceTag /]\+>/ contains=htmlTag
sy match wikiSourceEndTag /<\/source>/ contains=htmlEndTag
sy match wikiSyntaxHLTag /]\+>/ contains=htmlTag
sy match wikiSyntaxHLEndTag /<\/syntaxhighlight>/ contains=htmlEndTag
" Note: Cannot use 'start="
"rs=e', so still have the
tag
" highlighted correctly via separate sy-match. Unfortunately, this will
" also highlight
tags inside the preformatted region.
sy region htmlPre start="
[^>]*>" end="<\/pre>"me=e-6 contains=htmlPreTag
sy region wikiNowiki start="" end="<\/nowiki>"me=e-9 contains=wikiNowikiTag
sy region wikiSource start="]\+>" keepend end="<\/source>"me=e-9 contains=wikiSourceTag
sy region wikiSyntaxHL start="]\+>" keepend end="<\/syntaxhighlight>"me=e-18 contains=wikiSyntaxHLTag
sy include @TeX syntax/tex.vim
unlet b:current_syntax
sy region wikiTeX matchgroup=htmlTag start="