xref: /vim-8.2.3635/runtime/syntax/tidy.vim (revision e0e39175)
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