Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
html.vim415 linesDownload Raw Back to syntax
1" Vim syntax file2" Language:		HTML3" 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 287" 2024 Jul 30 by Vim Project: increase syn-sync-minlines to 2508" 2025 May 10 by Vim Project: update comment9 10" See :help html.vim for some comments and a description of the options11 12" quit when a syntax file was already loaded13if !exists("main_syntax")14  if exists("b:current_syntax")15    finish16  endif17  let main_syntax = 'html'18endif19 20let s:cpo_save = &cpo21set cpo&vim22 23syntax spell toplevel24 25syn include @htmlXml syntax/xml.vim26unlet b:current_syntax27 28syn case ignore29 30" mark illegal characters31syn match htmlError "[<>&]"32 33" tags34syn region  htmlString	 contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc35syn region  htmlString	 contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc36syn match   htmlValue	 contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1   contains=javaScriptExpression,@htmlPreproc37syn region  htmlEndTag		   start=+</+	   end=+>+ contains=htmlTagN,htmlTagError38syn region  htmlTag		   start=+<[^/]+   end=+>+ fold contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster39syn match   htmlTagN	 contained +<\s*[-a-zA-Z0-9]\++hs=s+1 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster40syn match   htmlTagN	 contained +</\s*[-a-zA-Z0-9]\++hs=s+2 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster41syn match   htmlTagError contained "[^>]<"ms=s+142 43" tag names44syn keyword htmlTagName contained address applet area a base basefont45syn keyword htmlTagName contained big blockquote br caption center46syn keyword htmlTagName contained cite code dd dfn dir div dl dt font47syn keyword htmlTagName contained form hr html img48syn keyword htmlTagName contained input isindex kbd li link map menu49syn keyword htmlTagName contained meta ol option param pre p samp span50syn keyword htmlTagName contained select small strike sub sup51syn keyword htmlTagName contained table td textarea th tr tt ul var xmp52syn match   htmlTagName contained "\<\%(b\|i\|u\|h[1-6]\|em\|strong\|head\|body\|title\)\>"53 54" new html 4.0 tags55syn keyword htmlTagName contained abbr acronym bdo button col colgroup56syn keyword htmlTagName contained del fieldset iframe ins label legend57syn keyword htmlTagName contained object optgroup q s tbody tfoot thead58 59" new html 5 tags60syn keyword htmlTagName contained article aside audio bdi canvas data61syn keyword htmlTagName contained datalist details dialog embed figcaption62syn keyword htmlTagName contained figure footer header hgroup keygen main63syn keyword htmlTagName contained mark menuitem meter nav output picture64syn keyword htmlTagName contained progress rb rp rt rtc ruby search section65syn keyword htmlTagName contained slot source summary template time track66syn keyword htmlTagName contained video wbr67 68" svg and math tags69syn keyword htmlMathTagName contained math70syn keyword htmlSvgTagName  contained svg71 72syn region  htmlMath start="<math>" end="</math>" contains=@htmlXml transparent keepend73syn region  htmlSvg  start="<svg>"  end="</svg>"  contains=@htmlXml transparent keepend74 75syn cluster xmlTagHook	add=htmlMathTagName,htmlSvgTagName76 77" legal arg names78syn keyword htmlArg contained action79syn keyword htmlArg contained align alink alt archive background bgcolor80syn keyword htmlArg contained border bordercolor cellpadding81syn keyword htmlArg contained cellspacing checked class clear code codebase color82syn keyword htmlArg contained cols colspan content coords enctype face83syn keyword htmlArg contained gutter height hspace id84syn keyword htmlArg contained link lowsrc marginheight85syn keyword htmlArg contained marginwidth maxlength method name prompt86syn keyword htmlArg contained rel rev rows rowspan scrolling selected shape87syn keyword htmlArg contained size src start target text type url88syn keyword htmlArg contained usemap ismap valign value vlink vspace width wrap89syn match   htmlArg contained "\<\%(http-equiv\|href\|title\)="me=e-190 91syn keyword htmlArg contained role92 93" ARIA attributes {{{194let s:aria =<< trim END95  activedescendant96  atomic97  autocomplete98  braillelabel99  brailleroledescription100  busy101  checked102  colcount103  colindex104  colindextext105  colspan106  controls107  current108  describedby109  description110  details111  disabled112  errormessage113  expanded114  flowto115  haspopup116  hidden117  invalid118  keyshortcuts119  label120  labelledby121  level122  live123  modal124  multiline125  multiselectable126  orientation127  owns128  placeholder129  posinset130  pressed131  readonly132  relevant133  required134  roledescription135  rowcount136  rowindex137  rowindextext138  rowspan139  selected140  setsize141  sort142  valuemax143  valuemin144  valuenow145  valuetext146END147let s:aria_deprecated =<< trim END148  dropeffect149  grabbed150END151 152call extend(s:aria, s:aria_deprecated)153exe 'syn match htmlArg contained "\%#=1\<aria-\%(' .. s:aria->join('\|') .. '\)\>"'154unlet s:aria s:aria_deprecated155" }}}156 157" Netscape extensions158syn keyword htmlTagName contained frame noframes frameset nobr blink159syn keyword htmlTagName contained layer ilayer nolayer spacer160syn keyword htmlArg	contained frameborder noresize pagex pagey above below161syn keyword htmlArg	contained left top visibility clip id noshade162syn match   htmlArg	contained "\<z-index\>"163 164" Microsoft extensions165syn keyword htmlTagName contained marquee166 167" html 4.0 arg names168syn match   htmlArg contained "\<\%(accept-charset\|label\)\>"169syn keyword htmlArg contained abbr accept accesskey axis char charoff charset170syn keyword htmlArg contained cite classid codetype compact data datetime171syn keyword htmlArg contained declare defer dir disabled for frame172syn keyword htmlArg contained headers hreflang lang language longdesc173syn keyword htmlArg contained multiple nohref nowrap object profile readonly174syn keyword htmlArg contained rules scheme scope span standby style175syn keyword htmlArg contained summary tabindex valuetype version176 177" html 5 arg names178syn keyword htmlArg contained allow autocapitalize as blocking decoding179syn keyword htmlArg contained enterkeyhint imagesizes imagesrcset inert180syn keyword htmlArg contained integrity is itemid itemprop itemref itemscope181syn keyword htmlArg contained itemtype loading nomodule ping playsinline182syn keyword htmlArg contained referrerpolicy slot allowfullscreen async183syn keyword htmlArg contained autocomplete autofocus autoplay challenge184syn keyword htmlArg contained contenteditable contextmenu controls crossorigin185syn keyword htmlArg contained default dirname download draggable dropzone form186syn keyword htmlArg contained formaction formenctype formmethod formnovalidate187syn keyword htmlArg contained formtarget hidden high icon inputmode keytype188syn keyword htmlArg contained kind list loop low max min minlength muted nonce189syn keyword htmlArg contained novalidate open optimum pattern placeholder190syn keyword htmlArg contained poster preload radiogroup required reversed191syn keyword htmlArg contained sandbox spellcheck sizes srcset srcdoc srclang192syn keyword htmlArg contained step title translate typemustmatch193syn match   htmlArg contained "\<data-\h\%(\w\|[-.]\)*\%(\_s*=\)\@="194 195" special characters196syn match htmlSpecialChar "&#\=[0-9A-Za-z]\{1,32};"197 198" Comments (the real ones or the old netscape ones)199if exists("html_wrong_comments")200  syn region htmlComment	start=+<!--+	end=+--\s*>+	contains=@Spell201else202  " The HTML 5.2 syntax 8.2.4.41: bogus comment is parser error; browser skips until next &gt203  syn region htmlComment	start=+<!+	end=+>+		contains=htmlCommentError keepend204  " Idem 8.2.4.42,51: Comment starts with <!-- and ends with -->205  " Idem 8.2.4.43,44: Except <!--> and <!---> are parser errors206  " Idem 8.2.4.52: dash-dash-bang (--!>) is error ignored by parser, also closes comment207  syn region htmlComment matchgroup=htmlComment start=+<!--\%(-\?>\)\@!+	end=+--!\?>+	contains=htmlCommentNested,@htmlPreProc,@Spell keepend208  " Idem 8.2.4.49: nested comment is parser error, except <!--> is all right209  syn match htmlCommentNested contained "<!-->\@!"210  syn match htmlCommentError  contained "[^><!]"211endif212syn region htmlComment	start=+<!DOCTYPE+	end=+>+ keepend213 214" server-parsed commands215syn region htmlPreProc start=+<!--#+ end=+-->+ contains=htmlPreStmt,htmlPreError,htmlPreAttr216syn match htmlPreStmt contained "<!--#\%(config\|echo\|exec\|fsize\|flastmod\|include\|printenv\|set\|if\|elif\|else\|endif\|geoguide\)\>"217syn match htmlPreError contained "<!--#\S*"ms=s+4218syn match htmlPreAttr contained "\w\+=[^"]\S\+" contains=htmlPreProcAttrError,htmlPreProcAttrName219syn region htmlPreAttr contained start=+\w\+="+ skip=+\\\\\|\\"+ end=+"+ contains=htmlPreProcAttrName keepend220syn match htmlPreProcAttrError contained "\w\+="he=e-1221syn match htmlPreProcAttrName contained "\%(expr\|errmsg\|sizefmt\|timefmt\|var\|cgi\|cmd\|file\|virtual\|value\)="he=e-1222 223if !exists("html_no_rendering")224  " rendering225  syn cluster htmlTop contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,@htmlPreproc226 227  syn region htmlStrike start="<del\>" end="</del\_s*>"me=s-1 contains=@htmlTop228  syn region htmlStrike start="<s\>" end="</s\_s*>"me=s-1 contains=@htmlTop229  syn region htmlStrike start="<strike\>" end="</strike\_s*>"me=s-1 contains=@htmlTop230 231  syn region htmlBold start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic232  syn region htmlBold start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic233  syn region htmlBoldUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderlineItalic234  syn region htmlBoldItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop,htmlBoldItalicUnderline235  syn region htmlBoldItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop,htmlBoldItalicUnderline236  syn region htmlBoldUnderlineItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop237  syn region htmlBoldUnderlineItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop238  syn region htmlBoldItalicUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderlineItalic239 240  syn region htmlUnderline start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineBold,htmlUnderlineItalic241  syn region htmlUnderlineBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineBoldItalic242  syn region htmlUnderlineBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineBoldItalic243  syn region htmlUnderlineItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineItalicBold244  syn region htmlUnderlineItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineItalicBold245  syn region htmlUnderlineItalicBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop246  syn region htmlUnderlineItalicBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop247  syn region htmlUnderlineBoldItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop248  syn region htmlUnderlineBoldItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop249 250  syn region htmlItalic start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop,htmlItalicBold,htmlItalicUnderline251  syn region htmlItalic start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop252  syn region htmlItalicBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop,htmlItalicBoldUnderline253  syn region htmlItalicBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop,htmlItalicBoldUnderline254  syn region htmlItalicBoldUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop255  syn region htmlItalicUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlItalicUnderlineBold256  syn region htmlItalicUnderlineBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop257  syn region htmlItalicUnderlineBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop258 259  syn match htmlLeadingSpace "^\s\+" contained260  syn region htmlLink start="<a\>\_[^>]*\<href\>" end="</a\_s*>"me=s-1 contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLeadingSpace,javaScript,@htmlPreproc261  syn region htmlH1 start="<h1\>" end="</h1\_s*>"me=s-1 contains=@htmlTop262  syn region htmlH2 start="<h2\>" end="</h2\_s*>"me=s-1 contains=@htmlTop263  syn region htmlH3 start="<h3\>" end="</h3\_s*>"me=s-1 contains=@htmlTop264  syn region htmlH4 start="<h4\>" end="</h4\_s*>"me=s-1 contains=@htmlTop265  syn region htmlH5 start="<h5\>" end="</h5\_s*>"me=s-1 contains=@htmlTop266  syn region htmlH6 start="<h6\>" end="</h6\_s*>"me=s-1 contains=@htmlTop267  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,@htmlPreproc268  syn region htmlTitle start="<title\>" end="</title\_s*>"me=s-1 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,javaScript,@htmlPreproc269endif270 271syn keyword htmlTagName		contained noscript272syn keyword htmlSpecialTagName	contained script style273if main_syntax != 'java' || exists("java_javascript")274  " JAVA SCRIPT275  syn include @htmlJavaScript syntax/javascript.vim276  unlet b:current_syntax277  syn region  javaScript start=+<script\>\_[^>]*>+ keepend end=+</script\_[^>]*>+me=s-1 contains=@htmlJavaScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc278  syn region  htmlScriptTag	contained start=+<script+ end=+>+ fold contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent279  hi def link htmlScriptTag htmlTag280 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=htmlEventSQ284    syn region htmlEvent	contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ contains=htmlEventDQ285  else286    syn region htmlEvent	contained start=+\<on\a\+\s*=[\t ]*'+ end=+'+ keepend contains=htmlEventSQ287    syn region htmlEvent	contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ keepend contains=htmlEventDQ288  endif289  syn region htmlEventSQ	contained start=+'+ms=s+1 end=+'+me=s-1 contains=@htmlJavaScript290  syn region htmlEventDQ	contained start=+"+ms=s+1 end=+"+me=s-1 contains=@htmlJavaScript291  hi def link htmlEventSQ htmlEvent292  hi def link htmlEventDQ htmlEvent293 294  " a javascript expression is used as an arg value295  syn region  javaScriptExpression contained start=+&{+ keepend end=+};+ contains=@htmlJavaScript,@htmlPreproc296endif297 298if main_syntax != 'java' || exists("java_vb")299  " VB SCRIPT300  syn include @htmlVbScript syntax/vb.vim301  unlet b:current_syntax302  syn region  javaScript start=+<script \_[^>]*language *=\_[^>]*vbscript\_[^>]*>+ keepend end=+</script\_[^>]*>+me=s-1 contains=@htmlVbScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc303endif304 305syn cluster htmlJavaScript	add=@htmlPreproc306 307if main_syntax != 'java' || exists("java_css")308  " embedded style sheets309  syn keyword htmlArg		contained media310  syn include @htmlCss syntax/css.vim311  unlet b:current_syntax312  syn region cssStyle start=+<style+ keepend end=+</style>+ contains=@htmlCss,htmlTag,htmlEndTag,htmlCssStyleComment,@htmlPreproc313  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,@htmlPreproc315  hi def link htmlStyleArg htmlString316endif317 318if main_syntax == "html"319  " synchronizing (does not always work if a comment includes legal320  " html tags, but doing it right would mean to always start321  " 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)326endif327 328" Folding329" (Originally written by Ingo Karkat and Marcus Zanona; see330" https://vi.stackexchange.com/questions/2306/html-syntax-folding-in-vim .)331if 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\d333  " 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 fold336  endif337endif338 339" The default highlighting.340hi def link htmlTag			Function341hi def link htmlEndTag			Identifier342hi def link htmlArg			Type343hi def link htmlTagName			htmlStatement344hi def link htmlSpecialTagName		Exception345hi def link htmlMathTagName		htmlTagName346hi def link htmlSvgTagName		htmlTagName347hi def link htmlValue			String348hi def link htmlSpecialChar		Special349 350if !exists("html_no_rendering")351  hi def link htmlH1			  Title352  hi def link htmlH2			  htmlH1353  hi def link htmlH3			  htmlH2354  hi def link htmlH4			  htmlH3355  hi def link htmlH5			  htmlH4356  hi def link htmlH6			  htmlH5357  hi def link htmlHead			  PreProc358  hi def link htmlTitle			  Title359  hi def link htmlBoldItalicUnderline	  htmlBoldUnderlineItalic360  hi def link htmlUnderlineBold		  htmlBoldUnderline361  hi def link htmlUnderlineItalicBold	  htmlBoldUnderlineItalic362  hi def link htmlUnderlineBoldItalic	  htmlBoldUnderlineItalic363  hi def link htmlItalicUnderline	  htmlUnderlineItalic364  hi def link htmlItalicBold		  htmlBoldItalic365  hi def link htmlItalicBoldUnderline	  htmlBoldUnderlineItalic366  hi def link htmlItalicUnderlineBold	  htmlBoldUnderlineItalic367  hi def link htmlLink			  Underlined368  hi def link htmlLeadingSpace		  None369  if !exists("html_my_rendering")370    hi def htmlBold		   term=bold cterm=bold gui=bold371    hi def htmlBoldUnderline	   term=bold,underline cterm=bold,underline gui=bold,underline372    hi def htmlBoldItalic	   term=bold,italic cterm=bold,italic gui=bold,italic373    hi def htmlBoldUnderlineItalic term=bold,italic,underline cterm=bold,italic,underline gui=bold,italic,underline374    hi def htmlUnderline	   term=underline cterm=underline gui=underline375    hi def htmlUnderlineItalic	   term=italic,underline cterm=italic,underline gui=italic,underline376    hi def htmlItalic		   term=italic cterm=italic gui=italic377    if v:version > 800 || v:version == 800 && has("patch1038")378      hi def htmlStrike	term=strikethrough cterm=strikethrough gui=strikethrough379    else380      hi def htmlStrike	term=underline cterm=underline gui=underline381    endif382  endif383endif384 385hi def link htmlPreStmt		   PreProc386hi def link htmlPreError	   Error387hi def link htmlPreProc		   PreProc388hi def link htmlPreAttr		   String389hi def link htmlPreProcAttrName    PreProc390hi def link htmlPreProcAttrError   Error391hi def link htmlString		   String392hi def link htmlStatement	   Statement393hi def link htmlComment		   Comment394hi def link htmlCommentNested	   htmlError395hi def link htmlCommentError	   htmlError396hi def link htmlTagError	   htmlError397hi def link htmlEvent		   javaScript398hi def link htmlError		   Error399 400hi def link javaScript		   Special401hi def link javaScriptExpression   javaScript402hi def link htmlCssStyleComment    Comment403hi def link htmlCssDefinition	   Special404 405let b:current_syntax = "html"406 407if main_syntax == 'html'408  unlet main_syntax409endif410 411let &cpo = s:cpo_save412unlet s:cpo_save413 414" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker:415 
codekingpro/portable-devtools · Team Ai