# Improved XML highlighter by: Brian Candler # 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 italic # 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: " 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: " content :start_or_empty_tag_sp Idle * tag_space noeat # Matched: " content # Matched: " close_tag recolor=-1 :tag_space_sp Idle * tag_space noeat # Matched: " 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: " close_tag recolor=-1 # This state is just to recolor the final ">" at the end of :close_tag Tag * content noeat # Matched: " pi_end recolor=-2 :pi_end PIEnd * content noeat recolor=-1 # Matched: " content # We allow one level of <...> nesting within declarations :decl_nest Decl * decl_nest ">" decl # Matched: