1" Vim syntax file 2" Language: HMTL Tidy Configuration 3" Maintainer: Doug Kearns <[email protected]> 4" Last Change: 2020 Sep 4 5 6" Preamble {{{1 7if exists("b:current_syntax") 8 finish 9endif 10 11let s:cpo_save = &cpo 12set cpo&vim 13 14syn iskeyword @,48-57,-,_ 15 16" Values {{{1 17syn match tidyWordSeparator contained ",\|\s" nextgroup=tidyWord skipwhite skipnl 18syn match tidyMuteIDSeparator contained ",\|\s" nextgroup=tidyMuteID skipwhite skipnl 19 20syn case ignore 21syn keyword tidyBoolean contained t[rue] f[alse] y[es] n[o] 1 0 22syn keyword tidyAutoBoolean contained t[rue] f[alse] y[es] n[o] 1 0 auto 23syn case match 24syn keyword tidyCustomTags contained no blocklevel empty inline pre 25syn keyword tidyDoctype contained html5 omit auto strict loose transitional user 26syn keyword tidyEncoding contained raw ascii latin0 latin1 utf8 iso2022 mac win1252 ibm858 utf16le utf16be utf16 big5 shiftjis 27syn keyword tidyNewline contained LF CRLF CR 28syn match tidyNumber contained "\<\d\+\>" 29syn keyword tidyRepeat contained keep-first keep-last 30syn keyword tidySorter contained alpha none 31syn region tidyString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ oneline 32syn region tidyString contained start=+'+ skip=+\\\\\|\\'+ end=+'+ oneline 33" Tag and attribute lists 34syn match tidyWord contained "\<\k\+\>:\@!" nextgroup=tidyWordSeparator skipwhite skipnl 35 36" Mute Message IDs {{{2 37syn keyword tidyMuteID ADDED_MISSING_CHARSET ANCHOR_DUPLICATED 38 \ ANCHOR_NOT_UNIQUE APOS_UNDEFINED APPLET_MISSING_ALT AREA_MISSING_ALT 39 \ ASCII_REQUIRES_DESCRIPTION ASSOCIATE_LABELS_EXPLICITLY 40 \ ASSOCIATE_LABELS_EXPLICITLY_FOR ASSOCIATE_LABELS_EXPLICITLY_ID 41 \ ATTRIBUTE_IS_NOT_ALLOWED ATTRIBUTE_VALUE_REPLACED 42 \ ATTR_VALUE_NOT_LCASE AUDIO_MISSING_TEXT_AIFF AUDIO_MISSING_TEXT_AU 43 \ AUDIO_MISSING_TEXT_RA AUDIO_MISSING_TEXT_RM AUDIO_MISSING_TEXT_SND 44 \ AUDIO_MISSING_TEXT_WAV BACKSLASH_IN_URI BAD_ATTRIBUTE_VALUE 45 \ BAD_ATTRIBUTE_VALUE_REPLACED BAD_CDATA_CONTENT BAD_SUMMARY_HTML5 46 \ BAD_SURROGATE_LEAD BAD_SURROGATE_PAIR BAD_SURROGATE_TAIL 47 \ CANT_BE_NESTED COERCE_TO_ENDTAG COLOR_CONTRAST_ACTIVE_LINK 48 \ COLOR_CONTRAST_LINK COLOR_CONTRAST_TEXT COLOR_CONTRAST_VISITED_LINK 49 \ CONTENT_AFTER_BODY CUSTOM_TAG_DETECTED DATA_TABLE_MISSING_HEADERS 50 \ DATA_TABLE_MISSING_HEADERS_COLUMN DATA_TABLE_MISSING_HEADERS_ROW 51 \ DATA_TABLE_REQUIRE_MARKUP_COLUMN_HEADERS 52 \ DATA_TABLE_REQUIRE_MARKUP_ROW_HEADERS DISCARDING_UNEXPECTED 53 \ DOCTYPE_AFTER_TAGS DOCTYPE_MISSING DUPLICATE_FRAMESET 54 \ ELEMENT_NOT_EMPTY ELEMENT_VERS_MISMATCH_ERROR 55 \ ELEMENT_VERS_MISMATCH_WARN ENCODING_MISMATCH 56 \ ENSURE_PROGRAMMATIC_OBJECTS_ACCESSIBLE_APPLET 57 \ ENSURE_PROGRAMMATIC_OBJECTS_ACCESSIBLE_EMBED 58 \ ENSURE_PROGRAMMATIC_OBJECTS_ACCESSIBLE_OBJECT 59 \ ENSURE_PROGRAMMATIC_OBJECTS_ACCESSIBLE_SCRIPT ESCAPED_ILLEGAL_URI 60 \ FILE_CANT_OPEN FILE_CANT_OPEN_CFG FILE_NOT_FILE FIXED_BACKSLASH 61 \ FOUND_STYLE_IN_BODY FRAME_MISSING_LONGDESC FRAME_MISSING_NOFRAMES 62 \ FRAME_MISSING_TITLE FRAME_SRC_INVALID FRAME_TITLE_INVALID_NULL 63 \ FRAME_TITLE_INVALID_SPACES HEADERS_IMPROPERLY_NESTED 64 \ HEADER_USED_FORMAT_TEXT ID_NAME_MISMATCH ILLEGAL_NESTING 65 \ ILLEGAL_URI_CODEPOINT ILLEGAL_URI_REFERENCE 66 \ IMAGE_MAP_SERVER_SIDE_REQUIRES_CONVERSION 67 \ IMG_ALT_SUSPICIOUS_FILENAME IMG_ALT_SUSPICIOUS_FILE_SIZE 68 \ IMG_ALT_SUSPICIOUS_PLACEHOLDER IMG_ALT_SUSPICIOUS_TOO_LONG 69 \ IMG_BUTTON_MISSING_ALT IMG_MAP_CLIENT_MISSING_TEXT_LINKS 70 \ IMG_MAP_SERVER_REQUIRES_TEXT_LINKS IMG_MISSING_ALT IMG_MISSING_DLINK 71 \ IMG_MISSING_LONGDESC IMG_MISSING_LONGDESC_DLINK 72 \ INFORMATION_NOT_CONVEYED_APPLET INFORMATION_NOT_CONVEYED_IMAGE 73 \ INFORMATION_NOT_CONVEYED_INPUT INFORMATION_NOT_CONVEYED_OBJECT 74 \ INFORMATION_NOT_CONVEYED_SCRIPT INSERTING_AUTO_ATTRIBUTE 75 \ INSERTING_TAG INVALID_ATTRIBUTE INVALID_NCR INVALID_SGML_CHARS 76 \ INVALID_UTF16 INVALID_UTF8 INVALID_XML_ID JOINING_ATTRIBUTE 77 \ LANGUAGE_INVALID LANGUAGE_NOT_IDENTIFIED 78 \ LAYOUT_TABLES_LINEARIZE_PROPERLY LAYOUT_TABLE_INVALID_MARKUP 79 \ LINK_TEXT_MISSING LINK_TEXT_NOT_MEANINGFUL 80 \ LINK_TEXT_NOT_MEANINGFUL_CLICK_HERE LINK_TEXT_TOO_LONG 81 \ LIST_USAGE_INVALID_LI LIST_USAGE_INVALID_OL LIST_USAGE_INVALID_UL 82 \ MALFORMED_COMMENT MALFORMED_COMMENT_DROPPING MALFORMED_COMMENT_EOS 83 \ MALFORMED_COMMENT_WARN MALFORMED_DOCTYPE METADATA_MISSING 84 \ METADATA_MISSING_REDIRECT_AUTOREFRESH MISMATCHED_ATTRIBUTE_ERROR 85 \ MISMATCHED_ATTRIBUTE_WARN MISSING_ATTRIBUTE MISSING_ATTR_VALUE 86 \ MISSING_DOCTYPE MISSING_ENDTAG_BEFORE MISSING_ENDTAG_FOR 87 \ MISSING_ENDTAG_OPTIONAL MISSING_IMAGEMAP MISSING_QUOTEMARK 88 \ MISSING_QUOTEMARK_OPEN MISSING_SEMICOLON MISSING_SEMICOLON_NCR 89 \ MISSING_STARTTAG MISSING_TITLE_ELEMENT MOVED_STYLE_TO_HEAD 90 \ MULTIMEDIA_REQUIRES_TEXT NESTED_EMPHASIS NESTED_QUOTATION 91 \ NEWLINE_IN_URI NEW_WINDOWS_REQUIRE_WARNING_BLANK 92 \ NEW_WINDOWS_REQUIRE_WARNING_NEW NOFRAMES_CONTENT 93 \ NOFRAMES_INVALID_CONTENT NOFRAMES_INVALID_LINK 94 \ NOFRAMES_INVALID_NO_VALUE NON_MATCHING_ENDTAG OBJECT_MISSING_ALT 95 \ OBSOLETE_ELEMENT OPTION_REMOVED OPTION_REMOVED_APPLIED 96 \ OPTION_REMOVED_UNAPPLIED POTENTIAL_HEADER_BOLD 97 \ POTENTIAL_HEADER_ITALICS POTENTIAL_HEADER_UNDERLINE 98 \ PREVIOUS_LOCATION PROGRAMMATIC_OBJECTS_REQUIRE_TESTING_APPLET 99 \ PROGRAMMATIC_OBJECTS_REQUIRE_TESTING_EMBED 100 \ PROGRAMMATIC_OBJECTS_REQUIRE_TESTING_OBJECT 101 \ PROGRAMMATIC_OBJECTS_REQUIRE_TESTING_SCRIPT PROPRIETARY_ATTRIBUTE 102 \ PROPRIETARY_ATTR_VALUE PROPRIETARY_ELEMENT REMOVED_HTML5 103 \ REMOVE_AUTO_REDIRECT REMOVE_AUTO_REFRESH REMOVE_BLINK_MARQUEE 104 \ REMOVE_FLICKER_ANIMATED_GIF REMOVE_FLICKER_APPLET 105 \ REMOVE_FLICKER_EMBED REMOVE_FLICKER_OBJECT REMOVE_FLICKER_SCRIPT 106 \ REPEATED_ATTRIBUTE REPLACE_DEPRECATED_HTML_APPLET 107 \ REPLACE_DEPRECATED_HTML_BASEFONT REPLACE_DEPRECATED_HTML_CENTER 108 \ REPLACE_DEPRECATED_HTML_DIR REPLACE_DEPRECATED_HTML_FONT 109 \ REPLACE_DEPRECATED_HTML_ISINDEX REPLACE_DEPRECATED_HTML_MENU 110 \ REPLACE_DEPRECATED_HTML_S REPLACE_DEPRECATED_HTML_STRIKE 111 \ REPLACE_DEPRECATED_HTML_U REPLACING_ELEMENT REPLACING_UNEX_ELEMENT 112 \ SCRIPT_MISSING_NOSCRIPT SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_CLICK 113 \ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_DOWN 114 \ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_MOVE 115 \ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_OUT 116 \ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_OVER 117 \ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_UP SKIPOVER_ASCII_ART 118 \ SPACE_PRECEDING_XMLDECL STRING_ARGUMENT_BAD STRING_CONTENT_LOOKS 119 \ STRING_DOCTYPE_GIVEN STRING_MISSING_MALFORMED STRING_MUTING_TYPE 120 \ STRING_NO_SYSID STRING_UNKNOWN_OPTION 121 \ STYLESHEETS_REQUIRE_TESTING_LINK 122 \ STYLESHEETS_REQUIRE_TESTING_STYLE_ATTR 123 \ STYLESHEETS_REQUIRE_TESTING_STYLE_ELEMENT 124 \ STYLE_SHEET_CONTROL_PRESENTATION SUSPECTED_MISSING_QUOTE 125 \ TABLE_MAY_REQUIRE_HEADER_ABBR TABLE_MAY_REQUIRE_HEADER_ABBR_NULL 126 \ TABLE_MAY_REQUIRE_HEADER_ABBR_SPACES TABLE_MISSING_CAPTION 127 \ TABLE_MISSING_SUMMARY TABLE_SUMMARY_INVALID_NULL 128 \ TABLE_SUMMARY_INVALID_PLACEHOLDER TABLE_SUMMARY_INVALID_SPACES 129 \ TAG_NOT_ALLOWED_IN TEXT_EQUIVALENTS_REQUIRE_UPDATING_APPLET 130 \ TEXT_EQUIVALENTS_REQUIRE_UPDATING_OBJECT 131 \ TEXT_EQUIVALENTS_REQUIRE_UPDATING_SCRIPT TOO_MANY_ELEMENTS 132 \ TOO_MANY_ELEMENTS_IN TRIM_EMPTY_ELEMENT UNESCAPED_AMPERSAND 133 \ UNEXPECTED_ENDTAG UNEXPECTED_ENDTAG_ERR UNEXPECTED_ENDTAG_IN 134 \ UNEXPECTED_END_OF_FILE UNEXPECTED_END_OF_FILE_ATTR 135 \ UNEXPECTED_EQUALSIGN UNEXPECTED_GT UNEXPECTED_QUOTEMARK 136 \ UNKNOWN_ELEMENT UNKNOWN_ELEMENT_LOOKS_CUSTOM UNKNOWN_ENTITY 137 \ USING_BR_INPLACE_OF VENDOR_SPECIFIC_CHARS WHITE_IN_URI 138 \ XML_DECLARATION_DETECTED XML_ID_SYNTAX 139 \ contained nextgroup=tidyMuteIDSeparator skipwhite skipnl 140 141" Options {{{1 142syn keyword tidyCustomTagsOption custom-tags contained nextgroup=tidyCustomTagsDelimiter 143syn match tidyCustomTagsDelimiter ":" nextgroup=tidyCustomTags contained skipwhite 144 145syn keyword tidyBooleanOption add-meta-charset add-xml-decl 146 \ add-xml-pi add-xml-space anchor-as-name ascii-chars 147 \ assume-xml-procins bare break-before-br clean coerce-endtags 148 \ decorate-inferred-ul drop-empty-paras drop-empty-elements 149 \ drop-font-tags drop-proprietary-attributes enclose-block-text 150 \ enclose-text escape-cdata escape-scripts fix-backslash 151 \ fix-style-tags fix-uri force-output gdoc gnu-emacs hide-comments 152 \ hide-endtags indent-attributes indent-cdata indent-with-tabs 153 \ input-xml join-classes join-styles keep-tabs keep-time language 154 \ literal-attributes logical-emphasis lower-literals markup 155 \ merge-emphasis mute-id ncr numeric-entities omit-optional-tags 156 \ output-html output-xhtml output-xml preserve-entities 157 \ punctuation-wrap quiet quote-ampersand quote-marks quote-nbsp raw 158 \ replace-color show-filename show-info show-meta-change show-warnings 159 \ skip-nested split strict-tags-attributes tidy-mark 160 \ uppercase-attributes uppercase-tags warn-proprietary-attributes 161 \ word-2000 wrap-asp wrap-attributes wrap-jste wrap-php 162 \ wrap-script-literals wrap-sections write-back 163 \ contained nextgroup=tidyBooleanDelimiter 164 165syn match tidyBooleanDelimiter ":" nextgroup=tidyBoolean contained skipwhite 166 167syn keyword tidyAutoBooleanOption fix-bad-comments indent merge-divs merge-spans output-bom show-body-only vertical-space contained nextgroup=tidyAutoBooleanDelimiter 168syn match tidyAutoBooleanDelimiter ":" nextgroup=tidyAutoBoolean contained skipwhite 169 170syn keyword tidyCSSSelectorOption css-prefix contained nextgroup=tidyCSSSelectorDelimiter 171syn match tidyCSSSelectorDelimiter ":" nextgroup=tidyCSSSelector contained skipwhite 172 173syn keyword tidyDoctypeOption doctype contained nextgroup=tidyDoctypeDelimiter 174syn match tidyDoctypeDelimiter ":" nextgroup=tidyDoctype,tidyString contained skipwhite 175 176syn keyword tidyEncodingOption char-encoding input-encoding output-encoding contained nextgroup=tidyEncodingDelimiter 177syn match tidyEncodingDelimiter ":" nextgroup=tidyEncoding contained skipwhite 178 179syn keyword tidyIntegerOption accessibility-check doctype-mode indent-spaces show-errors tab-size wrap contained nextgroup=tidyIntegerDelimiter 180syn match tidyIntegerDelimiter ":" nextgroup=tidyNumber contained skipwhite 181 182syn keyword tidyNameOption slide-style contained nextgroup=tidyNameDelimiter 183syn match tidyNameDelimiter ":" nextgroup=tidyName contained skipwhite 184 185syn keyword tidyNewlineOption newline contained nextgroup=tidyNewlineDelimiter 186syn match tidyNewlineDelimiter ":" nextgroup=tidyNewline contained skipwhite 187 188syn keyword tidyAttributesOption priority-attributes contained nextgroup=tidyAttributesDelimiter 189syn match tidyAttributesDelimiter ":" nextgroup=tidyWord contained skipwhite 190 191syn keyword tidyTagsOption new-blocklevel-tags new-empty-tags new-inline-tags new-pre-tags contained nextgroup=tidyTagsDelimiter 192syn match tidyTagsDelimiter ":" nextgroup=tidyWord contained skipwhite 193 194syn keyword tidyRepeatOption repeated-attributes contained nextgroup=tidyRepeatDelimiter 195syn match tidyRepeatDelimiter ":" nextgroup=tidyRepeat contained skipwhite 196 197syn keyword tidySorterOption sort-attributes contained nextgroup=tidySorterDelimiter 198syn match tidySorterDelimiter ":" nextgroup=tidySorter contained skipwhite 199 200syn keyword tidyStringOption alt-text error-file gnu-emacs-file output-file contained nextgroup=tidyStringDelimiter 201syn match tidyStringDelimiter ":" nextgroup=tidyString contained skipwhite 202 203syn keyword tidyMuteOption mute contained nextgroup=tidyMuteDelimiter 204syn match tidyMuteDelimiter ":" nextgroup=tidyMuteID contained skipwhite 205 206syn cluster tidyOptions contains=tidy.*Option 207 208" Option line anchor {{{1 209syn match tidyStart "^" nextgroup=@tidyOptions 210" Long standing bug - option lines (except the first) with leading whitespace 211" are silently ignored. 212syn match tidyErrorStart '^\s\+\ze\S' 213 214" Comments {{{1 215syn match tidyComment "^\s*//.*$" contains=tidyTodo 216syn match tidyComment "^\s*#.*$" contains=tidyTodo 217syn keyword tidyTodo TODO NOTE FIXME XXX contained 218 219" Default highlighting {{{1 220hi def link tidyAttributesOption Identifier 221hi def link tidyAutoBooleanOption Identifier 222hi def link tidyBooleanOption Identifier 223hi def link tidyCSSSelectorOption Identifier 224hi def link tidyCustomTagsOption Identifier 225hi def link tidyDoctypeOption Identifier 226hi def link tidyEncodingOption Identifier 227hi def link tidyIntegerOption Identifier 228hi def link tidyMuteOption Identifier 229hi def link tidyNameOption Identifier 230hi def link tidyNewlineOption Identifier 231hi def link tidyRepeatOption Identifier 232hi def link tidySorterOption Identifier 233hi def link tidyStringOption Identifier 234hi def link tidyTagsOption Identifier 235 236hi def link tidyAttributesDelimiter Special 237hi def link tidyAutoBooleanDelimiter Special 238hi def link tidyBooleanDelimiter Special 239hi def link tidyCSSSelectorDelimiter Special 240hi def link tidyCustomTagsDelimiter Special 241hi def link tidyDoctypeDelimiter Special 242hi def link tidyEncodingDelimiter Special 243hi def link tidyIntegerDelimiter Special 244hi def link tidyMuteDelimiter Special 245hi def link tidyNameDelimiter Special 246hi def link tidyNewlineDelimiter Special 247hi def link tidyRepeatDelimiter Special 248hi def link tidySorterDelimiter Special 249hi def link tidyStringDelimiter Special 250hi def link tidyTagsDelimiter Special 251 252hi def link tidyAutoBoolean Boolean 253hi def link tidyBoolean Boolean 254hi def link tidyCustomTags Constant 255hi def link tidyDoctype Constant 256hi def link tidyEncoding Constant 257hi def link tidyMuteID Constant 258hi def link tidyNewline Constant 259hi def link tidyNumber Number 260hi def link tidyRepeat Constant 261hi def link tidySorter Constant 262hi def link tidyString String 263hi def link tidyWord Constant 264 265hi def link tidyComment Comment 266hi def link tidyTodo Todo 267 268hi def link tidyErrorStart Error 269 270" Postscript {{{1 271let b:current_syntax = "tidy" 272 273let &cpo = s:cpo_save 274unlet s:cpo_save 275 276" vim: ts=8 fdm=marker 277