1" Vim syntax file 2" Language: HTML 3" Maintainer: Jorge Maldonado Ventura <[email protected]> 4" Previous Maintainer: Claudio Fleiner <[email protected]> 5" Repository: https://notabug.org/jorgesumle/vim-html-syntax 6" Last Change: 2017 Dec 16 7" Included patch from Jorge Maldonado Ventura to add the dialog element 8" 9 10" Please check :help html.vim for some comments and a description of the options 11 12" quit when a syntax file was already loaded 13if !exists("main_syntax") 14 if exists("b:current_syntax") 15 finish 16 endif 17 let main_syntax = 'html' 18endif 19 20let s:cpo_save = &cpo 21set cpo&vim 22 23syntax spell toplevel 24 25syn case ignore 26 27" mark illegal characters 28syn match htmlError "[<>&]" 29 30 31" tags 32syn region htmlString contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc 33syn region htmlString contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc 34syn match htmlValue contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1 contains=javaScriptExpression,@htmlPreproc 35syn region htmlEndTag start=+</+ end=+>+ contains=htmlTagN,htmlTagError 36syn region htmlTag start=+<[^/]+ end=+>+ fold contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster 37syn match htmlTagN contained +<\s*[-a-zA-Z0-9]\++hs=s+1 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster 38syn match htmlTagN contained +</\s*[-a-zA-Z0-9]\++hs=s+2 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster 39syn match htmlTagError contained "[^>]<"ms=s+1 40 41 42" tag names 43syn keyword htmlTagName contained address applet area a base basefont 44syn keyword htmlTagName contained big blockquote br caption center 45syn keyword htmlTagName contained cite code dd dfn dir div dl dt font 46syn keyword htmlTagName contained form hr html img 47syn keyword htmlTagName contained input isindex kbd li link map menu 48syn keyword htmlTagName contained meta ol option param pre p samp span 49syn keyword htmlTagName contained select small sub sup 50syn keyword htmlTagName contained table td textarea th tr tt ul var xmp 51syn match htmlTagName contained "\<\(b\|i\|u\|h[1-6]\|em\|strong\|head\|body\|title\)\>" 52 53" new html 4.0 tags 54syn keyword htmlTagName contained abbr acronym bdo button col label 55syn keyword htmlTagName contained colgroup fieldset iframe ins legend 56syn keyword htmlTagName contained object optgroup q s tbody tfoot thead 57 58" new html 5 tags 59syn keyword htmlTagName contained article aside audio bdi canvas data 60syn keyword htmlTagName contained datalist details embed figcaption figure 61syn keyword htmlTagName contained footer header hgroup keygen main mark 62syn keyword htmlTagName contained menuitem meter nav output picture 63syn keyword htmlTagName contained progress rb rp rt rtc ruby section 64syn keyword htmlTagName contained slot source template time track video wbr 65 66" legal arg names 67syn keyword htmlArg contained action 68syn keyword htmlArg contained align alink alt archive background bgcolor 69syn keyword htmlArg contained border bordercolor cellpadding 70syn keyword htmlArg contained cellspacing checked class clear code codebase color 71syn keyword htmlArg contained cols colspan content coords enctype face 72syn keyword htmlArg contained gutter height hspace id 73syn keyword htmlArg contained link lowsrc marginheight 74syn keyword htmlArg contained marginwidth maxlength method name prompt 75syn keyword htmlArg contained rel rev rows rowspan scrolling selected shape 76syn keyword htmlArg contained size src start target text type url 77syn keyword htmlArg contained usemap ismap valign value vlink vspace width wrap 78syn match htmlArg contained "\<\(http-equiv\|href\|title\)="me=e-1 79 80" Netscape extensions 81syn keyword htmlTagName contained frame noframes frameset nobr blink 82syn keyword htmlTagName contained layer ilayer nolayer spacer 83syn keyword htmlArg contained frameborder noresize pagex pagey above below 84syn keyword htmlArg contained left top visibility clip id noshade 85syn match htmlArg contained "\<z-index\>" 86 87" Microsoft extensions 88syn keyword htmlTagName contained marquee 89 90" html 4.0 arg names 91syn match htmlArg contained "\<\(accept-charset\|label\)\>" 92syn keyword htmlArg contained abbr accept accesskey axis char charoff charset 93syn keyword htmlArg contained cite classid codetype compact data datetime 94syn keyword htmlArg contained declare defer dir disabled for frame 95syn keyword htmlArg contained headers hreflang lang language longdesc 96syn keyword htmlArg contained multiple nohref nowrap object profile readonly 97syn keyword htmlArg contained rules scheme scope span standby style 98syn keyword htmlArg contained summary tabindex valuetype version 99 100" html 5 arg names 101syn keyword htmlArg contained allowfullscreen async autocomplete autofocus 102syn keyword htmlArg contained autoplay challenge contenteditable contextmenu 103syn keyword htmlArg contained controls crossorigin default dialog dirname 104syn keyword htmlArg contained download draggable dropzone form formaction 105syn keyword htmlArg contained formenctype formmethod formnovalidate formtarget 106syn keyword htmlArg contained hidden high icon inputmode keytype kind list loop 107syn keyword htmlArg contained low max min minlength muted nonce novalidate open 108syn keyword htmlArg contained optimum pattern placeholder poster preload 109syn keyword htmlArg contained radiogroup required reversed sandbox spellcheck 110syn keyword htmlArg contained sizes srcset srcdoc srclang step title translate 111syn keyword htmlArg contained typemustmatch 112 113" special characters 114syn match htmlSpecialChar "&#\=[0-9A-Za-z]\{1,8};" 115 116" Comments (the real ones or the old netscape ones) 117if exists("html_wrong_comments") 118 syn region htmlComment start=+<!--+ end=+--\s*>+ contains=@Spell 119else 120 syn region htmlComment start=+<!+ end=+>+ contains=htmlCommentPart,htmlCommentError,@Spell 121 syn match htmlCommentError contained "[^><!]" 122 syn region htmlCommentPart contained start=+--+ end=+--\s*+ contains=@htmlPreProc,@Spell 123endif 124syn region htmlComment start=+<!DOCTYPE+ keepend end=+>+ 125 126" server-parsed commands 127syn region htmlPreProc start=+<!--#+ end=+-->+ contains=htmlPreStmt,htmlPreError,htmlPreAttr 128syn match htmlPreStmt contained "<!--#\(config\|echo\|exec\|fsize\|flastmod\|include\|printenv\|set\|if\|elif\|else\|endif\|geoguide\)\>" 129syn match htmlPreError contained "<!--#\S*"ms=s+4 130syn match htmlPreAttr contained "\w\+=[^"]\S\+" contains=htmlPreProcAttrError,htmlPreProcAttrName 131syn region htmlPreAttr contained start=+\w\+="+ skip=+\\\\\|\\"+ end=+"+ contains=htmlPreProcAttrName keepend 132syn match htmlPreProcAttrError contained "\w\+="he=e-1 133syn match htmlPreProcAttrName contained "\(expr\|errmsg\|sizefmt\|timefmt\|var\|cgi\|cmd\|file\|virtual\|value\)="he=e-1 134 135if !exists("html_no_rendering") 136 " rendering 137 syn cluster htmlTop contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,@htmlPreproc 138 139 syn region htmlStrike start="<del\>" end="</del>"me=e-6 contains=@htmlTop 140 syn region htmlStrike start="<strike\>" end="</strike>"me=e-9 contains=@htmlTop 141 142 syn region htmlBold start="<b\>" end="</b>"me=e-4 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic 143 syn region htmlBold start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic 144 syn region htmlBoldUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlBoldUnderlineItalic 145 syn region htmlBoldItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop,htmlBoldItalicUnderline 146 syn region htmlBoldItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop,htmlBoldItalicUnderline 147 syn region htmlBoldUnderlineItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop 148 syn region htmlBoldUnderlineItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop 149 syn region htmlBoldItalicUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlBoldUnderlineItalic 150 151 syn region htmlUnderline start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlUnderlineBold,htmlUnderlineItalic 152 syn region htmlUnderlineBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop,htmlUnderlineBoldItalic 153 syn region htmlUnderlineBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop,htmlUnderlineBoldItalic 154 syn region htmlUnderlineItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop,htmlUnderlineItalicBold 155 syn region htmlUnderlineItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop,htmlUnderlineItalicBold 156 syn region htmlUnderlineItalicBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop 157 syn region htmlUnderlineItalicBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop 158 syn region htmlUnderlineBoldItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop 159 syn region htmlUnderlineBoldItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop 160 161 syn region htmlItalic start="<i\>" end="</i>"me=e-4 contains=@htmlTop,htmlItalicBold,htmlItalicUnderline 162 syn region htmlItalic start="<em\>" end="</em>"me=e-5 contains=@htmlTop 163 syn region htmlItalicBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop,htmlItalicBoldUnderline 164 syn region htmlItalicBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop,htmlItalicBoldUnderline 165 syn region htmlItalicBoldUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop 166 syn region htmlItalicUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlItalicUnderlineBold 167 syn region htmlItalicUnderlineBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop 168 syn region htmlItalicUnderlineBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop 169 170 syn match htmlLeadingSpace "^\s\+" contained 171 syn region htmlLink start="<a\>\_[^>]*\<href\>" end="</a>"me=e-4 contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLeadingSpace,javaScript,@htmlPreproc 172 syn region htmlH1 start="<h1\>" end="</h1>"me=e-5 contains=@htmlTop 173 syn region htmlH2 start="<h2\>" end="</h2>"me=e-5 contains=@htmlTop 174 syn region htmlH3 start="<h3\>" end="</h3>"me=e-5 contains=@htmlTop 175 syn region htmlH4 start="<h4\>" end="</h4>"me=e-5 contains=@htmlTop 176 syn region htmlH5 start="<h5\>" end="</h5>"me=e-5 contains=@htmlTop 177 syn region htmlH6 start="<h6\>" end="</h6>"me=e-5 contains=@htmlTop 178 syn region htmlHead start="<head\>" end="</head>"me=e-7 end="<body\>"me=e-5 end="<h[1-6]\>"me=e-3 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,htmlTitle,javaScript,cssStyle,@htmlPreproc 179 syn region htmlTitle start="<title\>" end="</title>"me=e-8 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,javaScript,@htmlPreproc 180endif 181 182syn keyword htmlTagName contained noscript 183syn keyword htmlSpecialTagName contained script style 184if main_syntax != 'java' || exists("java_javascript") 185 " JAVA SCRIPT 186 syn include @htmlJavaScript syntax/javascript.vim 187 unlet b:current_syntax 188 syn region javaScript start=+<script\_[^>]*>+ keepend end=+</script\_[^>]*>+me=s-1 contains=@htmlJavaScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc 189 syn region htmlScriptTag contained start=+<script+ end=+>+ fold contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent 190 hi def link htmlScriptTag htmlTag 191 192 " html events (i.e. arguments that include javascript commands) 193 if exists("html_extended_events") 194 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*'+ end=+'+ contains=htmlEventSQ 195 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ contains=htmlEventDQ 196 else 197 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*'+ end=+'+ keepend contains=htmlEventSQ 198 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ keepend contains=htmlEventDQ 199 endif 200 syn region htmlEventSQ contained start=+'+ms=s+1 end=+'+me=s-1 contains=@htmlJavaScript 201 syn region htmlEventDQ contained start=+"+ms=s+1 end=+"+me=s-1 contains=@htmlJavaScript 202 hi def link htmlEventSQ htmlEvent 203 hi def link htmlEventDQ htmlEvent 204 205 " a javascript expression is used as an arg value 206 syn region javaScriptExpression contained start=+&{+ keepend end=+};+ contains=@htmlJavaScript,@htmlPreproc 207endif 208 209if main_syntax != 'java' || exists("java_vb") 210 " VB SCRIPT 211 syn include @htmlVbScript syntax/vb.vim 212 unlet b:current_syntax 213 syn region javaScript start=+<script \_[^>]*language *=\_[^>]*vbscript\_[^>]*>+ keepend end=+</script\_[^>]*>+me=s-1 contains=@htmlVbScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc 214endif 215 216syn cluster htmlJavaScript add=@htmlPreproc 217 218if main_syntax != 'java' || exists("java_css") 219 " embedded style sheets 220 syn keyword htmlArg contained media 221 syn include @htmlCss syntax/css.vim 222 unlet b:current_syntax 223 syn region cssStyle start=+<style+ keepend end=+</style>+ contains=@htmlCss,htmlTag,htmlEndTag,htmlCssStyleComment,@htmlPreproc 224 syn match htmlCssStyleComment contained "\(<!--\|-->\)" 225 syn region htmlCssDefinition matchgroup=htmlArg start='style="' keepend matchgroup=htmlString end='"' contains=css.*Attr,css.*Prop,cssComment,cssLength,cssColor,cssURL,cssImportant,cssError,cssString,@htmlPreproc 226 hi def link htmlStyleArg htmlString 227endif 228 229if main_syntax == "html" 230 " synchronizing (does not always work if a comment includes legal 231 " html tags, but doing it right would mean to always start 232 " at the first line, which is too slow) 233 syn sync match htmlHighlight groupthere NONE "<[/a-zA-Z]" 234 syn sync match htmlHighlight groupthere javaScript "<script" 235 syn sync match htmlHighlightSkip "^.*['\"].*$" 236 syn sync minlines=10 237endif 238 239" The default highlighting. 240hi def link htmlTag Function 241hi def link htmlEndTag Identifier 242hi def link htmlArg Type 243hi def link htmlTagName htmlStatement 244hi def link htmlSpecialTagName Exception 245hi def link htmlValue String 246hi def link htmlSpecialChar Special 247 248if !exists("html_no_rendering") 249 hi def link htmlH1 Title 250 hi def link htmlH2 htmlH1 251 hi def link htmlH3 htmlH2 252 hi def link htmlH4 htmlH3 253 hi def link htmlH5 htmlH4 254 hi def link htmlH6 htmlH5 255 hi def link htmlHead PreProc 256 hi def link htmlTitle Title 257 hi def link htmlBoldItalicUnderline htmlBoldUnderlineItalic 258 hi def link htmlUnderlineBold htmlBoldUnderline 259 hi def link htmlUnderlineItalicBold htmlBoldUnderlineItalic 260 hi def link htmlUnderlineBoldItalic htmlBoldUnderlineItalic 261 hi def link htmlItalicUnderline htmlUnderlineItalic 262 hi def link htmlItalicBold htmlBoldItalic 263 hi def link htmlItalicBoldUnderline htmlBoldUnderlineItalic 264 hi def link htmlItalicUnderlineBold htmlBoldUnderlineItalic 265 hi def link htmlLink Underlined 266 hi def link htmlLeadingSpace None 267 if !exists("html_my_rendering") 268 hi def htmlBold term=bold cterm=bold gui=bold 269 hi def htmlBoldUnderline term=bold,underline cterm=bold,underline gui=bold,underline 270 hi def htmlBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic 271 hi def htmlBoldUnderlineItalic term=bold,italic,underline cterm=bold,italic,underline gui=bold,italic,underline 272 hi def htmlUnderline term=underline cterm=underline gui=underline 273 hi def htmlUnderlineItalic term=italic,underline cterm=italic,underline gui=italic,underline 274 hi def htmlItalic term=italic cterm=italic gui=italic 275 if v:version > 800 || v:version == 800 && has("patch1038") 276 hi def htmlStrike term=strikethrough cterm=strikethrough gui=strikethrough 277 else 278 hi def htmlStrike term=underline cterm=underline gui=underline 279 endif 280 endif 281endif 282 283hi def link htmlPreStmt PreProc 284hi def link htmlPreError Error 285hi def link htmlPreProc PreProc 286hi def link htmlPreAttr String 287hi def link htmlPreProcAttrName PreProc 288hi def link htmlPreProcAttrError Error 289hi def link htmlSpecial Special 290hi def link htmlSpecialChar Special 291hi def link htmlString String 292hi def link htmlStatement Statement 293hi def link htmlComment Comment 294hi def link htmlCommentPart Comment 295hi def link htmlValue String 296hi def link htmlCommentError htmlError 297hi def link htmlTagError htmlError 298hi def link htmlEvent javaScript 299hi def link htmlError Error 300 301hi def link javaScript Special 302hi def link javaScriptExpression javaScript 303hi def link htmlCssStyleComment Comment 304hi def link htmlCssDefinition Special 305 306let b:current_syntax = "html" 307 308if main_syntax == 'html' 309 unlet main_syntax 310endif 311 312let &cpo = s:cpo_save 313unlet s:cpo_save 314" vim: ts=8 315