285 lines
5.0 KiB
Plaintext
285 lines
5.0 KiB
Plaintext
|
# Improved XML highlighter by: Brian Candler <B.Candler@pobox.com>
|
||
|
|
||
|
# Define no. sync lines
|
||
|
# You can say:
|
||
|
# -200 means 200 lines
|
||
|
# - means always start parsing from beginning of file when we lose sync
|
||
|
# if nothing is specified, the default is -50
|
||
|
|
||
|
-
|
||
|
|
||
|
# Define colors
|
||
|
#
|
||
|
# bold inverse blink dim underline
|
||
|
# white cyan magenta blue yellow green red black
|
||
|
# bg_white bg_cyan bg_magenta bg_blue bg_yellow bg_green bg_red bg_black
|
||
|
|
||
|
# The underlines are here right now just because I want to distinguish which
|
||
|
# bits have been coloured (say) CdataStart, CdataBody, CdataEnd. And that's
|
||
|
# because I think it may be useful to make that distinction for some people.
|
||
|
|
||
|
=Idle
|
||
|
=Error red bold
|
||
|
=Tag blue
|
||
|
=Attr cyan
|
||
|
=Constant blue bold
|
||
|
=EntityRef magenta
|
||
|
=Decl cyan
|
||
|
=CommentStart green
|
||
|
=CommentBody green
|
||
|
=CommentEnd green
|
||
|
=PIStart magenta bold
|
||
|
=PIBody magenta
|
||
|
=PIEnd magenta bold
|
||
|
=CdataStart blue bold
|
||
|
=CdataBody bold
|
||
|
=CdataEnd blue bold
|
||
|
|
||
|
# http://www.w3.org/TR/2004/REC-xml-20040204/
|
||
|
#
|
||
|
# NOTE: For UNICODE compatibility, the ranges
|
||
|
# "A-Za-z_:" -- first character of Name
|
||
|
# "A-Za-z0-9._:-" -- subsequent characters of Name
|
||
|
# ought to be replaced with some appropriate Unicode character classes
|
||
|
|
||
|
:content Idle
|
||
|
* content
|
||
|
"<" tag recolor=-1
|
||
|
"&" entityref recolor=-1
|
||
|
|
||
|
# > is allowed
|
||
|
# ">" error noeat recolor=-1
|
||
|
|
||
|
|
||
|
# In several contexts a space is an error, and since a coloured space is
|
||
|
# not visible, we colour the next non-space character as well.
|
||
|
|
||
|
:error Error
|
||
|
* error_visible noeat recolor=-1
|
||
|
" \t\r\n" error
|
||
|
|
||
|
:error_visible Error
|
||
|
* content
|
||
|
|
||
|
# Matched: &
|
||
|
|
||
|
:entityref EntityRef
|
||
|
* error noeat recolor=-1
|
||
|
"A-Za-z0-9._:-" entityref
|
||
|
"#" entityref
|
||
|
";" content
|
||
|
|
||
|
# Matched: <
|
||
|
|
||
|
:tag Tag
|
||
|
* error noeat recolor=-1
|
||
|
"/" end_tag
|
||
|
"A-Za-z_:" start_or_empty_tag
|
||
|
"?" pi_start recolor=-2
|
||
|
"!" decl recolor=-2 buffer
|
||
|
|
||
|
# Matched: </
|
||
|
|
||
|
:end_tag Tag
|
||
|
* error noeat recolor=-1
|
||
|
"A-Za-z_:" end_tag2
|
||
|
|
||
|
:end_tag2 Tag
|
||
|
* error noeat recolor=-1
|
||
|
"A-Za-z0-9._:-" end_tag2
|
||
|
" \t\r\n" end_tag2_sp recolor=-1
|
||
|
">" content
|
||
|
|
||
|
:end_tag2_sp Idle
|
||
|
* end_tag3 noeat
|
||
|
|
||
|
:end_tag3 Tag
|
||
|
* error noeat recolor=-1
|
||
|
" \t\r\n" end_tag3_sp recolor=-1
|
||
|
">" content
|
||
|
|
||
|
:end_tag3_sp Idle
|
||
|
* end_tag_3 noeat
|
||
|
|
||
|
# Matched: <tag
|
||
|
|
||
|
:start_or_empty_tag Tag
|
||
|
* error noeat recolor=-1
|
||
|
"A-Za-z0-9._:-" start_or_empty_tag
|
||
|
"/" empty_tag
|
||
|
" \t\r\n" start_or_empty_tag_sp recolor=-1
|
||
|
">" content
|
||
|
|
||
|
:start_or_empty_tag_sp Idle
|
||
|
* tag_space noeat
|
||
|
|
||
|
# Matched: <tag/
|
||
|
|
||
|
:empty_tag Tag
|
||
|
* error noeat recolor=-1
|
||
|
">" content
|
||
|
|
||
|
# Matched: <tag SPACE
|
||
|
|
||
|
:tag_space Attr
|
||
|
* error noeat recolor=-1
|
||
|
" \t\r\n" tag_space_sp recolor=-1
|
||
|
"A-Za-z_:" attr
|
||
|
"/" empty_tag recolor=-1
|
||
|
">" close_tag recolor=-1
|
||
|
|
||
|
:tag_space_sp Idle
|
||
|
* tag_space noeat
|
||
|
|
||
|
# Matched: <tag attr
|
||
|
|
||
|
:attr Attr
|
||
|
* error noeat recolor=-1
|
||
|
"A-Za-z0-9._:-" attr
|
||
|
" \t\r\n" attr_sp recolor=-1
|
||
|
"=" string
|
||
|
|
||
|
:attr_sp Idle
|
||
|
* attr_before noeat
|
||
|
|
||
|
:attr_before Attr
|
||
|
* error noeat recolor=-1
|
||
|
" \t\r\n" attr_sp recolor=-1
|
||
|
"=" string
|
||
|
|
||
|
# Matched: <tag attr=
|
||
|
|
||
|
:string Attr
|
||
|
* error noeat recolor=-1
|
||
|
" \t\r\n" string_sp recolor=-1
|
||
|
"\"" astring recolor=-1
|
||
|
"'" bstring recolor=-1
|
||
|
|
||
|
:string_sp Idle
|
||
|
* string noeat
|
||
|
|
||
|
# Matched: <tag attr="
|
||
|
|
||
|
:astring Constant
|
||
|
* astring
|
||
|
"<" error noeat recolor=-1
|
||
|
"&" achar recolor=-1
|
||
|
"\"" endstring
|
||
|
|
||
|
# ">" error noeat recolor=-1
|
||
|
|
||
|
|
||
|
:bstring Constant
|
||
|
* bstring
|
||
|
"<" error noeat recolor=-1
|
||
|
"&" bchar recolor=-1
|
||
|
"'" endstring
|
||
|
|
||
|
# ">" error noeat recolor=-1
|
||
|
|
||
|
|
||
|
:achar EntityRef
|
||
|
* error noeat recolor=-1
|
||
|
"A-Za-z0-9._:-" achar
|
||
|
"#" achar
|
||
|
";" astring
|
||
|
|
||
|
:bchar EntityRef
|
||
|
* error noeat recolor=-1
|
||
|
"A-Za-z0-9._:-" bchar
|
||
|
"#" bchar
|
||
|
";" bstring
|
||
|
|
||
|
# Matched: <tag attr="foo"
|
||
|
|
||
|
:endstring Attr
|
||
|
* error noeat recolor=-1
|
||
|
" \t\r\n" tag_space_sp
|
||
|
"/" empty_tag recolor=-1
|
||
|
">" close_tag recolor=-1
|
||
|
|
||
|
# This state is just to recolor the final ">" at the end of <tag attr="val">
|
||
|
|
||
|
:close_tag Tag
|
||
|
* content noeat
|
||
|
|
||
|
# Matched: <?
|
||
|
|
||
|
:pi_start PIStart
|
||
|
* pi noeat recolor=-1
|
||
|
|
||
|
:pi PIBody
|
||
|
* pi
|
||
|
"?" pi2
|
||
|
|
||
|
:pi2 PIBody
|
||
|
* pi
|
||
|
">" pi_end recolor=-2
|
||
|
|
||
|
:pi_end PIEnd
|
||
|
* content noeat recolor=-1
|
||
|
|
||
|
# Matched: <!
|
||
|
|
||
|
:decl Decl
|
||
|
* decl strings
|
||
|
"!--" comment_start recolor=-5
|
||
|
"![CDATA[" cdata_start recolor=-10
|
||
|
done
|
||
|
"<" decl_nest
|
||
|
">" content
|
||
|
|
||
|
# We allow one level of <...> nesting within declarations
|
||
|
|
||
|
:decl_nest Decl
|
||
|
* decl_nest
|
||
|
">" decl
|
||
|
|
||
|
# Matched: <!--
|
||
|
|
||
|
:comment_start CommentStart
|
||
|
* comment noeat
|
||
|
|
||
|
:comment CommentBody
|
||
|
* comment
|
||
|
"-" comment2
|
||
|
|
||
|
:comment2 CommentBody
|
||
|
* comment
|
||
|
"-" comment3
|
||
|
|
||
|
:comment3 CommentBody
|
||
|
* comment_error noeat recolor=-3
|
||
|
">" comment_end recolor=-3
|
||
|
|
||
|
:comment_end CommentEnd
|
||
|
* content noeat recolor=-1
|
||
|
|
||
|
# For compatibility, the string "--" (double-hyphen) MUST NOT occur within
|
||
|
# comments. [http://www.w3.org/TR/REC-xml/ section 2.5]
|
||
|
|
||
|
:comment_error Error
|
||
|
* comment
|
||
|
"-" comment_error
|
||
|
">" comment_end recolor=-3
|
||
|
|
||
|
# Matched: <![CDATA[
|
||
|
|
||
|
:cdata_start CdataStart
|
||
|
* cdata noeat
|
||
|
|
||
|
:cdata CdataBody
|
||
|
* cdata
|
||
|
"]" cdata2
|
||
|
|
||
|
:cdata2 CdataBody
|
||
|
* cdata
|
||
|
"]" cdata3
|
||
|
|
||
|
:cdata3 CdataBody
|
||
|
* cdata
|
||
|
">" cdata_end recolor=-3
|
||
|
|
||
|
:cdata_end CdataEnd
|
||
|
* content noeat recolor=-1
|