" Vim syntax file " Language: HTML " Previous Maintainer: Jorge Maldonado Ventura " Previous Maintainer: Claudio Fleiner " Repository: https://notabug.org/jorgesumle/vim-html-syntax " Last Change: 2021 Mar 02 " Included patch #7900 to fix comments " Included patch #7916 to fix a few more things " " Please check :help html.vim for some comments and a description of the options " quit when a syntax file was already loaded if !exists("main_syntax") if exists("b:current_syntax") finish endif let main_syntax = 'html' endif let s:cpo_save = &cpo set cpo&vim syntax spell toplevel syn case ignore " mark illegal characters syn match htmlError "[<>&]" " tags syn region htmlString contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc syn region htmlString contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc syn match htmlValue contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1 contains=javaScriptExpression,@htmlPreproc syn region htmlEndTag start=++ contains=htmlTagN,htmlTagError syn region htmlTag start=+<[^/]+ end=+>+ fold contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster syn match htmlTagN contained +<\s*[-a-zA-Z0-9]\++hs=s+1 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster syn match htmlTagN contained +]<"ms=s+1 " tag names syn keyword htmlTagName contained address applet area a base basefont syn keyword htmlTagName contained big blockquote br caption center syn keyword htmlTagName contained cite code dd dfn dir div dl dt font syn keyword htmlTagName contained form hr html img syn keyword htmlTagName contained input isindex kbd li link map menu syn keyword htmlTagName contained meta ol option param pre p samp span syn keyword htmlTagName contained select small sub sup syn keyword htmlTagName contained table td textarea th tr tt ul var xmp syn match htmlTagName contained "\<\(b\|i\|u\|h[1-6]\|em\|strong\|head\|body\|title\)\>" " new html 4.0 tags syn keyword htmlTagName contained abbr acronym bdo button col label syn keyword htmlTagName contained colgroup fieldset iframe ins legend syn keyword htmlTagName contained object optgroup q s tbody tfoot thead " new html 5 tags syn keyword htmlTagName contained article aside audio bdi canvas data syn keyword htmlTagName contained datalist details dialog embed figcaption syn keyword htmlTagName contained figure footer header hgroup keygen main syn keyword htmlTagName contained mark menuitem meter nav output picture syn keyword htmlTagName contained progress rb rp rt rtc ruby section syn keyword htmlTagName contained slot source summary template time track syn keyword htmlTagName contained video wbr " legal arg names syn keyword htmlArg contained action syn keyword htmlArg contained align alink alt archive background bgcolor syn keyword htmlArg contained border bordercolor cellpadding syn keyword htmlArg contained cellspacing checked class clear code codebase color syn keyword htmlArg contained cols colspan content coords enctype face syn keyword htmlArg contained gutter height hspace id syn keyword htmlArg contained link lowsrc marginheight syn keyword htmlArg contained marginwidth maxlength method name prompt syn keyword htmlArg contained rel rev rows rowspan scrolling selected shape syn keyword htmlArg contained size src start target text type url syn keyword htmlArg contained usemap ismap valign value vlink vspace width wrap syn match htmlArg contained "\<\(http-equiv\|href\|title\)="me=e-1 " aria attributes exe 'syn match htmlArg contained "\"' syn keyword htmlArg contained role " Netscape extensions syn keyword htmlTagName contained frame noframes frameset nobr blink syn keyword htmlTagName contained layer ilayer nolayer spacer syn keyword htmlArg contained frameborder noresize pagex pagey above below syn keyword htmlArg contained left top visibility clip id noshade syn match htmlArg contained "\" " Microsoft extensions syn keyword htmlTagName contained marquee " html 4.0 arg names syn match htmlArg contained "\<\(accept-charset\|label\)\>" syn keyword htmlArg contained abbr accept accesskey axis char charoff charset syn keyword htmlArg contained cite classid codetype compact data datetime syn keyword htmlArg contained declare defer dir disabled for frame syn keyword htmlArg contained headers hreflang lang language longdesc syn keyword htmlArg contained multiple nohref nowrap object profile readonly syn keyword htmlArg contained rules scheme scope span standby style syn keyword htmlArg contained summary tabindex valuetype version " html 5 arg names syn keyword htmlArg contained allowfullscreen async autocomplete autofocus syn keyword htmlArg contained autoplay challenge contenteditable contextmenu syn keyword htmlArg contained controls crossorigin default dirname download syn keyword htmlArg contained draggable dropzone form formaction formenctype syn keyword htmlArg contained formmethod formnovalidate formtarget hidden syn keyword htmlArg contained high icon inputmode keytype kind list loop low syn keyword htmlArg contained max min minlength muted nonce novalidate open syn keyword htmlArg contained optimum pattern placeholder poster preload syn keyword htmlArg contained radiogroup required reversed sandbox spellcheck syn keyword htmlArg contained sizes srcset srcdoc srclang step title translate syn keyword htmlArg contained typemustmatch " special characters syn match htmlSpecialChar "&#\=[0-9A-Za-z]\{1,8};" " Comments (the real ones or the old netscape ones) if exists("html_wrong_comments") syn region htmlComment start=+ " Idem 8.2.4.43,44: Except and are parser errors " Idem 8.2.4.52: dash-dash-bang (--!>) is error ignored by parser, also closes comment syn region htmlComment matchgroup=htmlComment start=+ is all right syn match htmlCommentNested contained "\@!" syn match htmlCommentError contained "[^>+ keepend " server-parsed commands syn region htmlPreProc start=++ contains=htmlPreStmt,htmlPreError,htmlPreAttr syn match htmlPreStmt contained "\)" syn region htmlCssDefinition matchgroup=htmlArg start='style="' keepend matchgroup=htmlString end='"' contains=css.*Attr,css.*Prop,cssComment,cssLength,cssColor,cssURL,cssImportant,cssError,cssString,@htmlPreproc hi def link htmlStyleArg htmlString endif if main_syntax == "html" " synchronizing (does not always work if a comment includes legal " html tags, but doing it right would mean to always start " at the first line, which is too slow) syn sync match htmlHighlight groupthere NONE "<[/a-zA-Z]" syn sync match htmlHighlight groupthere javaScript " 800 || v:version == 800 && has("patch1038") hi def htmlStrike term=strikethrough cterm=strikethrough gui=strikethrough else hi def htmlStrike term=underline cterm=underline gui=underline endif endif endif hi def link htmlPreStmt PreProc hi def link htmlPreError Error hi def link htmlPreProc PreProc hi def link htmlPreAttr String hi def link htmlPreProcAttrName PreProc hi def link htmlPreProcAttrError Error hi def link htmlString String hi def link htmlStatement Statement hi def link htmlComment Comment hi def link htmlCommentNested htmlError hi def link htmlCommentError htmlError hi def link htmlTagError htmlError hi def link htmlEvent javaScript hi def link htmlError Error hi def link javaScript Special hi def link javaScriptExpression javaScript hi def link htmlCssStyleComment Comment hi def link htmlCssDefinition Special let b:current_syntax = "html" if main_syntax == 'html' unlet main_syntax endif let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8