neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

html.vim (19729B)


      1 " Vim syntax file
      2 " Language:		HTML
      3 " Maintainer:		Doug Kearns <dougkearns@gmail.com>
      4 " Previous Maintainers: Jorge Maldonado Ventura <jorgesumle@freakspot.net>
      5 "			Claudio Fleiner <claudio@fleiner.com>
      6 " Last Change:		2023 Nov 28
      7 " 2024 Jul 30 by Vim Project: increase syn-sync-minlines to 250
      8 " 2025 May 10 by Vim Project: update comment
      9 
     10 " See :help html.vim for some comments and a description of the options
     11 
     12 " quit when a syntax file was already loaded
     13 if !exists("main_syntax")
     14  if exists("b:current_syntax")
     15    finish
     16  endif
     17  let main_syntax = 'html'
     18 endif
     19 
     20 let s:cpo_save = &cpo
     21 set cpo&vim
     22 
     23 syntax spell toplevel
     24 
     25 syn include @htmlXml syntax/xml.vim
     26 unlet b:current_syntax
     27 
     28 syn case ignore
     29 
     30 " mark illegal characters
     31 syn match htmlError "[<>&]"
     32 
     33 " tags
     34 syn region  htmlString	 contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc
     35 syn region  htmlString	 contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc
     36 syn match   htmlValue	 contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1   contains=javaScriptExpression,@htmlPreproc
     37 syn region  htmlEndTag		   start=+</+	   end=+>+ contains=htmlTagN,htmlTagError
     38 syn region  htmlTag		   start=+<[^/]+   end=+>+ fold contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster
     39 syn match   htmlTagN	 contained +<\s*[-a-zA-Z0-9]\++hs=s+1 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster
     40 syn match   htmlTagN	 contained +</\s*[-a-zA-Z0-9]\++hs=s+2 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster
     41 syn match   htmlTagError contained "[^>]<"ms=s+1
     42 
     43 " tag names
     44 syn keyword htmlTagName contained address applet area a base basefont
     45 syn keyword htmlTagName contained big blockquote br caption center
     46 syn keyword htmlTagName contained cite code dd dfn dir div dl dt font
     47 syn keyword htmlTagName contained form hr html img
     48 syn keyword htmlTagName contained input isindex kbd li link map menu
     49 syn keyword htmlTagName contained meta ol option param pre p samp span
     50 syn keyword htmlTagName contained select small strike sub sup
     51 syn keyword htmlTagName contained table td textarea th tr tt ul var xmp
     52 syn match   htmlTagName contained "\<\%(b\|i\|u\|h[1-6]\|em\|strong\|head\|body\|title\)\>"
     53 
     54 " new html 4.0 tags
     55 syn keyword htmlTagName contained abbr acronym bdo button col colgroup
     56 syn keyword htmlTagName contained del fieldset iframe ins label legend
     57 syn keyword htmlTagName contained object optgroup q s tbody tfoot thead
     58 
     59 " new html 5 tags
     60 syn keyword htmlTagName contained article aside audio bdi canvas data
     61 syn keyword htmlTagName contained datalist details dialog embed figcaption
     62 syn keyword htmlTagName contained figure footer header hgroup keygen main
     63 syn keyword htmlTagName contained mark menuitem meter nav output picture
     64 syn keyword htmlTagName contained progress rb rp rt rtc ruby search section
     65 syn keyword htmlTagName contained slot source summary template time track
     66 syn keyword htmlTagName contained video wbr
     67 
     68 " svg and math tags
     69 syn keyword htmlMathTagName contained math
     70 syn keyword htmlSvgTagName  contained svg
     71 
     72 syn region  htmlMath start="<math>" end="</math>" contains=@htmlXml transparent keepend
     73 syn region  htmlSvg  start="<svg>"  end="</svg>"  contains=@htmlXml transparent keepend
     74 
     75 syn cluster xmlTagHook	add=htmlMathTagName,htmlSvgTagName
     76 
     77 " legal arg names
     78 syn keyword htmlArg contained action
     79 syn keyword htmlArg contained align alink alt archive background bgcolor
     80 syn keyword htmlArg contained border bordercolor cellpadding
     81 syn keyword htmlArg contained cellspacing checked class clear code codebase color
     82 syn keyword htmlArg contained cols colspan content coords enctype face
     83 syn keyword htmlArg contained gutter height hspace id
     84 syn keyword htmlArg contained link lowsrc marginheight
     85 syn keyword htmlArg contained marginwidth maxlength method name prompt
     86 syn keyword htmlArg contained rel rev rows rowspan scrolling selected shape
     87 syn keyword htmlArg contained size src start target text type url
     88 syn keyword htmlArg contained usemap ismap valign value vlink vspace width wrap
     89 syn match   htmlArg contained "\<\%(http-equiv\|href\|title\)="me=e-1
     90 
     91 syn keyword htmlArg contained role
     92 
     93 " ARIA attributes {{{1
     94 let s:aria =<< trim END
     95  activedescendant
     96  atomic
     97  autocomplete
     98  braillelabel
     99  brailleroledescription
    100  busy
    101  checked
    102  colcount
    103  colindex
    104  colindextext
    105  colspan
    106  controls
    107  current
    108  describedby
    109  description
    110  details
    111  disabled
    112  errormessage
    113  expanded
    114  flowto
    115  haspopup
    116  hidden
    117  invalid
    118  keyshortcuts
    119  label
    120  labelledby
    121  level
    122  live
    123  modal
    124  multiline
    125  multiselectable
    126  orientation
    127  owns
    128  placeholder
    129  posinset
    130  pressed
    131  readonly
    132  relevant
    133  required
    134  roledescription
    135  rowcount
    136  rowindex
    137  rowindextext
    138  rowspan
    139  selected
    140  setsize
    141  sort
    142  valuemax
    143  valuemin
    144  valuenow
    145  valuetext
    146 END
    147 let s:aria_deprecated =<< trim END
    148  dropeffect
    149  grabbed
    150 END
    151 
    152 call extend(s:aria, s:aria_deprecated)
    153 exe 'syn match htmlArg contained "\%#=1\<aria-\%(' .. s:aria->join('\|') .. '\)\>"'
    154 unlet s:aria s:aria_deprecated
    155 " }}}
    156 
    157 " Netscape extensions
    158 syn keyword htmlTagName contained frame noframes frameset nobr blink
    159 syn keyword htmlTagName contained layer ilayer nolayer spacer
    160 syn keyword htmlArg	contained frameborder noresize pagex pagey above below
    161 syn keyword htmlArg	contained left top visibility clip id noshade
    162 syn match   htmlArg	contained "\<z-index\>"
    163 
    164 " Microsoft extensions
    165 syn keyword htmlTagName contained marquee
    166 
    167 " html 4.0 arg names
    168 syn match   htmlArg contained "\<\%(accept-charset\|label\)\>"
    169 syn keyword htmlArg contained abbr accept accesskey axis char charoff charset
    170 syn keyword htmlArg contained cite classid codetype compact data datetime
    171 syn keyword htmlArg contained declare defer dir disabled for frame
    172 syn keyword htmlArg contained headers hreflang lang language longdesc
    173 syn keyword htmlArg contained multiple nohref nowrap object profile readonly
    174 syn keyword htmlArg contained rules scheme scope span standby style
    175 syn keyword htmlArg contained summary tabindex valuetype version
    176 
    177 " html 5 arg names
    178 syn keyword htmlArg contained allow autocapitalize as blocking decoding
    179 syn keyword htmlArg contained enterkeyhint imagesizes imagesrcset inert
    180 syn keyword htmlArg contained integrity is itemid itemprop itemref itemscope
    181 syn keyword htmlArg contained itemtype loading nomodule ping playsinline
    182 syn keyword htmlArg contained referrerpolicy slot allowfullscreen async
    183 syn keyword htmlArg contained autocomplete autofocus autoplay challenge
    184 syn keyword htmlArg contained contenteditable contextmenu controls crossorigin
    185 syn keyword htmlArg contained default dirname download draggable dropzone form
    186 syn keyword htmlArg contained formaction formenctype formmethod formnovalidate
    187 syn keyword htmlArg contained formtarget hidden high icon inputmode keytype
    188 syn keyword htmlArg contained kind list loop low max min minlength muted nonce
    189 syn keyword htmlArg contained novalidate open optimum pattern placeholder
    190 syn keyword htmlArg contained poster preload radiogroup required reversed
    191 syn keyword htmlArg contained sandbox spellcheck sizes srcset srcdoc srclang
    192 syn keyword htmlArg contained step title translate typemustmatch
    193 syn match   htmlArg contained "\<data-\h\%(\w\|[-.]\)*\%(\_s*=\)\@="
    194 
    195 " special characters
    196 syn match htmlSpecialChar "&#\=[0-9A-Za-z]\{1,32};"
    197 
    198 " Comments (the real ones or the old netscape ones)
    199 if exists("html_wrong_comments")
    200  syn region htmlComment	start=+<!--+	end=+--\s*>+	contains=@Spell
    201 else
    202  " The HTML 5.2 syntax 8.2.4.41: bogus comment is parser error; browser skips until next &gt
    203  syn region htmlComment	start=+<!+	end=+>+		contains=htmlCommentError keepend
    204  " Idem 8.2.4.42,51: Comment starts with <!-- and ends with -->
    205  " Idem 8.2.4.43,44: Except <!--> and <!---> are parser errors
    206  " Idem 8.2.4.52: dash-dash-bang (--!>) is error ignored by parser, also closes comment
    207  syn region htmlComment matchgroup=htmlComment start=+<!--\%(-\?>\)\@!+	end=+--!\?>+	contains=htmlCommentNested,@htmlPreProc,@Spell keepend
    208  " Idem 8.2.4.49: nested comment is parser error, except <!--> is all right
    209  syn match htmlCommentNested contained "<!-->\@!"
    210  syn match htmlCommentError  contained "[^><!]"
    211 endif
    212 syn region htmlComment	start=+<!DOCTYPE+	end=+>+ keepend
    213 
    214 " server-parsed commands
    215 syn region htmlPreProc start=+<!--#+ end=+-->+ contains=htmlPreStmt,htmlPreError,htmlPreAttr
    216 syn match htmlPreStmt contained "<!--#\%(config\|echo\|exec\|fsize\|flastmod\|include\|printenv\|set\|if\|elif\|else\|endif\|geoguide\)\>"
    217 syn match htmlPreError contained "<!--#\S*"ms=s+4
    218 syn match htmlPreAttr contained "\w\+=[^"]\S\+" contains=htmlPreProcAttrError,htmlPreProcAttrName
    219 syn region htmlPreAttr contained start=+\w\+="+ skip=+\\\\\|\\"+ end=+"+ contains=htmlPreProcAttrName keepend
    220 syn match htmlPreProcAttrError contained "\w\+="he=e-1
    221 syn match htmlPreProcAttrName contained "\%(expr\|errmsg\|sizefmt\|timefmt\|var\|cgi\|cmd\|file\|virtual\|value\)="he=e-1
    222 
    223 if !exists("html_no_rendering")
    224  " rendering
    225  syn cluster htmlTop contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,@htmlPreproc
    226 
    227  syn region htmlStrike start="<del\>" end="</del\_s*>"me=s-1 contains=@htmlTop
    228  syn region htmlStrike start="<s\>" end="</s\_s*>"me=s-1 contains=@htmlTop
    229  syn region htmlStrike start="<strike\>" end="</strike\_s*>"me=s-1 contains=@htmlTop
    230 
    231  syn region htmlBold start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic
    232  syn region htmlBold start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic
    233  syn region htmlBoldUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderlineItalic
    234  syn region htmlBoldItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop,htmlBoldItalicUnderline
    235  syn region htmlBoldItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop,htmlBoldItalicUnderline
    236  syn region htmlBoldUnderlineItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop
    237  syn region htmlBoldUnderlineItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop
    238  syn region htmlBoldItalicUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderlineItalic
    239 
    240  syn region htmlUnderline start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineBold,htmlUnderlineItalic
    241  syn region htmlUnderlineBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineBoldItalic
    242  syn region htmlUnderlineBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineBoldItalic
    243  syn region htmlUnderlineItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineItalicBold
    244  syn region htmlUnderlineItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineItalicBold
    245  syn region htmlUnderlineItalicBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop
    246  syn region htmlUnderlineItalicBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop
    247  syn region htmlUnderlineBoldItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop
    248  syn region htmlUnderlineBoldItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop
    249 
    250  syn region htmlItalic start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop,htmlItalicBold,htmlItalicUnderline
    251  syn region htmlItalic start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop
    252  syn region htmlItalicBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop,htmlItalicBoldUnderline
    253  syn region htmlItalicBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop,htmlItalicBoldUnderline
    254  syn region htmlItalicBoldUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop
    255  syn region htmlItalicUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlItalicUnderlineBold
    256  syn region htmlItalicUnderlineBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop
    257  syn region htmlItalicUnderlineBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop
    258 
    259  syn match htmlLeadingSpace "^\s\+" contained
    260  syn region htmlLink start="<a\>\_[^>]*\<href\>" end="</a\_s*>"me=s-1 contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLeadingSpace,javaScript,@htmlPreproc
    261  syn region htmlH1 start="<h1\>" end="</h1\_s*>"me=s-1 contains=@htmlTop
    262  syn region htmlH2 start="<h2\>" end="</h2\_s*>"me=s-1 contains=@htmlTop
    263  syn region htmlH3 start="<h3\>" end="</h3\_s*>"me=s-1 contains=@htmlTop
    264  syn region htmlH4 start="<h4\>" end="</h4\_s*>"me=s-1 contains=@htmlTop
    265  syn region htmlH5 start="<h5\>" end="</h5\_s*>"me=s-1 contains=@htmlTop
    266  syn region htmlH6 start="<h6\>" end="</h6\_s*>"me=s-1 contains=@htmlTop
    267  syn region htmlHead start="<head\>" end="</head\_s*>"me=s-1 end="<body\>"me=s-1 end="<h[1-6]\>"me=s-1 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,htmlTitle,javaScript,cssStyle,@htmlPreproc
    268  syn region htmlTitle start="<title\>" end="</title\_s*>"me=s-1 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,javaScript,@htmlPreproc
    269 endif
    270 
    271 syn keyword htmlTagName		contained noscript
    272 syn keyword htmlSpecialTagName	contained script style
    273 if main_syntax != 'java' || exists("java_javascript")
    274  " JAVA SCRIPT
    275  syn include @htmlJavaScript syntax/javascript.vim
    276  unlet b:current_syntax
    277  syn region  javaScript start=+<script\>\_[^>]*>+ keepend end=+</script\_[^>]*>+me=s-1 contains=@htmlJavaScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc
    278  syn region  htmlScriptTag	contained start=+<script+ end=+>+ fold contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent
    279  hi def link htmlScriptTag htmlTag
    280 
    281  " html events (i.e. arguments that include javascript commands)
    282  if exists("html_extended_events")
    283    syn region htmlEvent	contained start=+\<on\a\+\s*=[\t ]*'+ end=+'+ contains=htmlEventSQ
    284    syn region htmlEvent	contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ contains=htmlEventDQ
    285  else
    286    syn region htmlEvent	contained start=+\<on\a\+\s*=[\t ]*'+ end=+'+ keepend contains=htmlEventSQ
    287    syn region htmlEvent	contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ keepend contains=htmlEventDQ
    288  endif
    289  syn region htmlEventSQ	contained start=+'+ms=s+1 end=+'+me=s-1 contains=@htmlJavaScript
    290  syn region htmlEventDQ	contained start=+"+ms=s+1 end=+"+me=s-1 contains=@htmlJavaScript
    291  hi def link htmlEventSQ htmlEvent
    292  hi def link htmlEventDQ htmlEvent
    293 
    294  " a javascript expression is used as an arg value
    295  syn region  javaScriptExpression contained start=+&{+ keepend end=+};+ contains=@htmlJavaScript,@htmlPreproc
    296 endif
    297 
    298 if main_syntax != 'java' || exists("java_vb")
    299  " VB SCRIPT
    300  syn include @htmlVbScript syntax/vb.vim
    301  unlet b:current_syntax
    302  syn region  javaScript start=+<script \_[^>]*language *=\_[^>]*vbscript\_[^>]*>+ keepend end=+</script\_[^>]*>+me=s-1 contains=@htmlVbScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc
    303 endif
    304 
    305 syn cluster htmlJavaScript	add=@htmlPreproc
    306 
    307 if main_syntax != 'java' || exists("java_css")
    308  " embedded style sheets
    309  syn keyword htmlArg		contained media
    310  syn include @htmlCss syntax/css.vim
    311  unlet b:current_syntax
    312  syn region cssStyle start=+<style+ keepend end=+</style>+ contains=@htmlCss,htmlTag,htmlEndTag,htmlCssStyleComment,@htmlPreproc
    313  syn match htmlCssStyleComment contained "\%(<!--\|-->\)"
    314  syn region htmlCssDefinition matchgroup=htmlArg start='style="' keepend matchgroup=htmlString end='"' contains=css.*Attr,css.*Prop,cssComment,cssLength,cssColor,cssURL,cssImportant,cssError,cssString,@htmlPreproc
    315  hi def link htmlStyleArg htmlString
    316 endif
    317 
    318 if main_syntax == "html"
    319  " synchronizing (does not always work if a comment includes legal
    320  " html tags, but doing it right would mean to always start
    321  " at the first line, which is too slow)
    322  syn sync match htmlHighlight groupthere NONE "<[/a-zA-Z]"
    323  syn sync match htmlHighlight groupthere javaScript "<script"
    324  syn sync match htmlHighlightSkip "^.*['\"].*$"
    325  exe "syn sync minlines=" . get(g:, 'html_minlines', 250)
    326 endif
    327 
    328 " Folding
    329 " (Originally written by Ingo Karkat and Marcus Zanona; see
    330 " https://vi.stackexchange.com/questions/2306/html-syntax-folding-in-vim .)
    331 if get(g:, "html_syntax_folding", 0)
    332  syn region htmlFold start="<\z(\<\%(area\|base\|br\|col\|command\|embed\|hr\|img\|input\|keygen\|link\|meta\|param\|source\|track\|wbr\>\)\@![a-z-]\+\>\)\%(\_s*\_[^/]\?>\|\_s\_[^>]*\_[^>/]>\)" end="</\z1\_s*>" fold transparent keepend extend containedin=htmlHead,htmlH\d
    333  " fold comments (the real ones and the old Netscape ones)
    334  if exists("html_wrong_comments")
    335    syn region htmlComment start=+<!--+ end=+--\s*>\%(\n\s*<!--\)\@!+ contains=@Spell fold
    336  endif
    337 endif
    338 
    339 " The default highlighting.
    340 hi def link htmlTag			Function
    341 hi def link htmlEndTag			Identifier
    342 hi def link htmlArg			Type
    343 hi def link htmlTagName			htmlStatement
    344 hi def link htmlSpecialTagName		Exception
    345 hi def link htmlMathTagName		htmlTagName
    346 hi def link htmlSvgTagName		htmlTagName
    347 hi def link htmlValue			String
    348 hi def link htmlSpecialChar		Special
    349 
    350 if !exists("html_no_rendering")
    351  hi def link htmlH1			  Title
    352  hi def link htmlH2			  htmlH1
    353  hi def link htmlH3			  htmlH2
    354  hi def link htmlH4			  htmlH3
    355  hi def link htmlH5			  htmlH4
    356  hi def link htmlH6			  htmlH5
    357  hi def link htmlHead			  PreProc
    358  hi def link htmlTitle			  Title
    359  hi def link htmlBoldItalicUnderline	  htmlBoldUnderlineItalic
    360  hi def link htmlUnderlineBold		  htmlBoldUnderline
    361  hi def link htmlUnderlineItalicBold	  htmlBoldUnderlineItalic
    362  hi def link htmlUnderlineBoldItalic	  htmlBoldUnderlineItalic
    363  hi def link htmlItalicUnderline	  htmlUnderlineItalic
    364  hi def link htmlItalicBold		  htmlBoldItalic
    365  hi def link htmlItalicBoldUnderline	  htmlBoldUnderlineItalic
    366  hi def link htmlItalicUnderlineBold	  htmlBoldUnderlineItalic
    367  hi def link htmlLink			  Underlined
    368  hi def link htmlLeadingSpace		  None
    369  if !exists("html_my_rendering")
    370    hi def htmlBold		   term=bold cterm=bold gui=bold
    371    hi def htmlBoldUnderline	   term=bold,underline cterm=bold,underline gui=bold,underline
    372    hi def htmlBoldItalic	   term=bold,italic cterm=bold,italic gui=bold,italic
    373    hi def htmlBoldUnderlineItalic term=bold,italic,underline cterm=bold,italic,underline gui=bold,italic,underline
    374    hi def htmlUnderline	   term=underline cterm=underline gui=underline
    375    hi def htmlUnderlineItalic	   term=italic,underline cterm=italic,underline gui=italic,underline
    376    hi def htmlItalic		   term=italic cterm=italic gui=italic
    377    if v:version > 800 || v:version == 800 && has("patch1038")
    378      hi def htmlStrike	term=strikethrough cterm=strikethrough gui=strikethrough
    379    else
    380      hi def htmlStrike	term=underline cterm=underline gui=underline
    381    endif
    382  endif
    383 endif
    384 
    385 hi def link htmlPreStmt		   PreProc
    386 hi def link htmlPreError	   Error
    387 hi def link htmlPreProc		   PreProc
    388 hi def link htmlPreAttr		   String
    389 hi def link htmlPreProcAttrName    PreProc
    390 hi def link htmlPreProcAttrError   Error
    391 hi def link htmlString		   String
    392 hi def link htmlStatement	   Statement
    393 hi def link htmlComment		   Comment
    394 hi def link htmlCommentNested	   htmlError
    395 hi def link htmlCommentError	   htmlError
    396 hi def link htmlTagError	   htmlError
    397 hi def link htmlEvent		   javaScript
    398 hi def link htmlError		   Error
    399 
    400 hi def link javaScript		   Special
    401 hi def link javaScriptExpression   javaScript
    402 hi def link htmlCssStyleComment    Comment
    403 hi def link htmlCssDefinition	   Special
    404 
    405 let b:current_syntax = "html"
    406 
    407 if main_syntax == 'html'
    408  unlet main_syntax
    409 endif
    410 
    411 let &cpo = s:cpo_save
    412 unlet s:cpo_save
    413 
    414 " vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker: