You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

302 lines
5.1 KiB

# JOE syntax highlight file for Ant's build scripts
# http://ant.apache.org/
# using the XML highlighter with better colors since
# ant scripts heavily rely on the tags (blue is a bad color here)
# instead of their contents
# Improved XML highlighter by: Brian Candler <B.Candler@pobox.com>
=Idle
=Bad red bold
=Tag bold
=Attr
=Constant cyan
=Escape bold cyan
=EntityRef magenta
=Decl cyan
=CommentStart green
=CommentBody green
=CommentEnd green
=PIStart yellow bold
=PIBody yellow
=PIEnd yellow bold
=CdataStart blue bold
=CdataBody bold
=CdataEnd blue bold
=Keytag bold magenta #fg_310 # brown
# 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 Bad
* error_visible noeat recolor=-1
" \t\r\n" error
:error_visible Bad
* 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 buffer
"?" 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
# compare tag name of start/empty tags with a list
# of Ant specific keywords
:start_or_empty_tag Tag
* decide_tag_type noeat strings
"target" kw
done
"A-Za-z0-9._:-" start_or_empty_tag
:kw Keytag
* decide_tag_type noeat
:decide_tag_type Tag
* error noeat recolor=-1
"/" empty_tag
" \t\r\n" start_or_empty_tag_sp
">" 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
"\"" string_dq recolor=-1
"'" string_sq recolor=-1
:string_sp Idle
* string noeat
# Matched: <tag attr="
:string_dq Constant
* string_dq
"<" error noeat recolor=-1
"&" char_dq recolor=-1
"\"" endstring
"$" string_dq call=.antvar()
# ">" error noeat recolor=-1
:string_sq Constant
* string_sq
"<" error noeat recolor=-1
"&" char_sq recolor=-1
"'" endstring
"$" string_sq call=.maybe_antvar()
# ">" error noeat recolor=-1
:char_dq EntityRef
* error noeat recolor=-1
"A-Za-z0-9._:-" char_dq
"#" char_dq
";" string_dq
:char_sq EntityRef
* error noeat recolor=-1
"A-Za-z0-9._:-" char_sq
"#" char_sq
";" string_sq
.subr maybe_antvar
# initial state
:maybe_antvar Constant
* NULL return
"{" antvar recolor=-2
:antvar Escape
* antvar
"}" NULL return
.end
# 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 Bad
* 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