# JOE syntax highlight file for Erlang # by Christian Nicolai (http://mycrobase.de) # with contributions from Jonas Rosling and Andrew Lisin # TODO Handle type information :: # TODO implement subroutines for cleaner and more correct implementation. # TODO Probably use less colors to be less distractive. =Idle =Ident =Comment =Constant =String +Constant =String_mod +StringEscape =String_esc +StringEscape =Number +Constant =Keyword =Operator +Keyword =Type =Module +Type =Brace +Control =Bracket +Control =Character +String +Constant =CharacterEscape +StringEscape +Character =Attribute +Preproc =Variable #+DefinedIdent +Ident ?? =Record +Include +Preproc =Macro +Define =Guard +Conditional +Statement +Bif =Bif +DefinedFunction =Fun +Ident =Recatt :idle Idle * idle "A-Z_" variable noeat "%" line_comment noeat "\"" string recolor=-1 "'" quoted_atom mark "0-9" decimal recolor=-1 "[]" brack recolor=-1 "{}" brace recolor=-1 "-" maybe_attribute buffer "a-z" atom buffer mark noeat "#" record recolor=-1 "$" char recolor=-1 "?" is_macro mark "<|" lc buffer :lc Idle * idle noeat strings "<-" kw "||" kw done "-<|" lc :pipe Idle * idle noeat "|" kw recolormark :is_macro Idle * macro recolormark noeat "a-zA-Z0-9_@" is_macro :macro Macro * idle noeat :char Character string * idle "\\" charesc :charesc Character string * idle :line_comment Comment comment * line_comment "@" is_edoc noeat buffer "BFHNTX" line_comment noeat call=comment_todo.comment_todo() "\n" idle :is_edoc Comment comment * line_comment noeat strings "@clear" edoc "@docfile" edoc "@headerfle" edoc "@todo" edoc "@TODO" edoc "@type" edoc "@reference" edoc "@see" edoc "@since" edoc "@deprecated" edoc "@hidden" edoc "@private" edoc "@equiv" edoc "@throws" edoc "@author" edoc "@copyright" edoc "@version" edoc "@title" edoc "@spec" edoc "@doc" edoc "@end" edoc done "A-Za-z@" is_edoc :edoc Keyword * line_comment noeat :variable Variable * idle noeat "a-zA-Z0-9_" variable :record Record * idle noeat "a-z" rec noeat "'" qtrec recolor=-1 :rec Record * idle noeat "a-zA-Z0-9_@" rec "." recatt recolor=-1 :qtrec Record * qtrec "'" rec :recatt Recatt * idle noeat "a-zA-Z_" recatt "#" record # STRINGS :string String string * string "\\" string_escape recolor=-1 "~" string_ mark "\"" idle :string_escape String_esc string * string :string_ String string * string_mod noeat "0-9" string_f "t" string_mod :string_f String string * string_mod noeat "0-9*" string_f "." string_p :string_p String string * string_mod noeat "0-9*" string_p :string_mod String string * string "cfegswpWPBX#bx+ni" string_modifier recolormark noeat :string_modifier String_mod string * string # END STRINGS :decimal Number * idle noeat "0-9" decimal "." float "#" base :float Number * idle noeat "0-9" float "Ee" eintval :base Number * idle noeat "0-9A-Fa-f" base :eintval Number * eint noeat "-" eint :eint Number * idle noeat "0-9" eint :brace Brace * idle noeat :brack Bracket * idle noeat :maybe_attribute Idle * idle noeat strings "-module" attribute "-export" attribute "-import" attribute "-compile" attribute "-ifdef" attribute "-endif" attribute "-define" attribute "-file" attribute "-type" attribute "-opaque" attribute "-export_type" attribute "-spec" attribute "-author" attribute "-copyright" attribute "-include" attribute "-include_lib" attribute "-vsn" attribute "-behaviour" attribute "-behavior" attribute "-record" attribute "-on_load" attribute "-connect_all" attribute "-hidden" attribute "-name" attribute "-setcookie" attribute "-sname" attribute "-mode" attribute done "a-z_" maybe_attribute :attribute Attribute * idle noeat :no_atom Idle * idle noeat " " no_atom "(" function recolormark noeat ":" module recolormark noeat "/" funarity :module Module * idle noeat :function Fun * idle noeat :funarity Fun * function recolormark noeat "0-9" idle :kw Keyword * idle noeat :guard Guard * idle noeat :rterr Guard * idle noeat :bif Bif * idle recolormark noeat " " bif "(" idle noeat :type Type * idle recolormark noeat "(" idle noeat ":" module recolormark noeat :quoted_atom Idle * quoted_atom "'" no_atom # This implementation is sort of funky. # Most of the cases it's correct but some highlighting may be wrong. # Should be looked over... :atom Ident * no_atom noeat strings "after" kw "and" kw "andalso" kw "band" kw "begin" kw "bnot" kw "bor" kw "bsl" kw "bsr" kw "bxor" kw "case" kw "catch" kw "cond" kw "div" kw "end" kw "fun" kw "if" kw "let" kw "not" kw "of" kw "or" kw "orelse" kw "query" kw "receive" kw "rem" kw "try" kw "when" kw "xor" kw "any" type "none" type "pid" type "port" type "reference" type "float" type "atom" type "binary" type "integer" type "list" type "improper_list" type "maybe_improper_list" type "tuple" type "term" type "boolean" type "byte" type "char" type "non_neg_integer" type "pos_integer" type "neg_integer" type "number" type "string" type "nonempty_string" type "iolist" type "module" type "mfa" type #interfears with the bif "node" type "timeout" type "no_return" type "badarg" rterr "badarith" rterr "badmatch" rterr "function_clause" rterr "case_clause" rterr "if_clause" rterr "try_clause" rterr "undef" rterr "badfun" rterr "badarity" rterr "timeout_value" rterr "noproc" rterr "nocatch" rterr "system_limit" rterr "is_atom" guard "is_binary" guard "is_bitstream" guard "is_boolean" guard "is_float" guard "is_function" guard "is_integer" guard "is_list" guard "is_number" guard "is_pid" guard "is_port" guard "is_record" guard "is_reference" guard "is_tuple" guard "abs" bif "adler32" bif "adler32_combine" bif "append_element" bif "apply" bif "atom_to_binary" bif "atom_to_list" bif "binary_part" bif "binary_to_atom" bif "binary_to_existing_atom" bif "binary_to_list" bif "bitstring_to_list" bif "binary_to_term" bif "bit_size" bif "bump_reductions" bif "byte_size" bif "cancel_timer" bif "check_old_code" bif "check_process_code" bif "crc32" bif "crc32_combine" bif "date" bif "decode_packet" bif "delete_module" bif "demonitor" bif "disconnect_node" bif "display" bif "element" bif "erase" bif "error" bif "exit" bif "external_size" bif "float" bif "float_to_list" bif "fun_info" bif "fun_to_list" bif "function_exported" bif "garbage_collect" bif "get" bif "get_cookie" bif "get_keys" bif "get_stacktrace" bif "group_leader" bif "halt" bif "hash" bif "hd" bif "hibernate" bif "integer_to_list" bif "iolist_to_binary" bif "iolist_size" bif "is_alive" bif "is_builtin" bif "is_process_alive" bif "length" bif "link" bif "list_to_atom" bif "list_to_binary" bif "list_to_bitstring" bif "list_to_existing_atom" bif "list_to_float" bif "list_to_integer" bif "list_to_pid" bif "list_to_tuple" bif "load_module" bif "load_nif" bif "loaded" bif "local_time" bif "local_time_to_universaltime" bif "make_ref" bif "make_tuple" bif "max" bif "md5" bif "md5_final" bif "md5_init" bif "md5_update" bif "memory" bif "min" bif "module_loaded" bif "monitor" bif "monitor_node" bif "nif_error" bif "node" bif "nodes" bif "now" bif "open_port" bif "phash" bif "phash2" bif "pid_to_list" bif "port_close" bif "port_command" bif "port_connect" bif "port_control" bif "port_call" bif "port_info" bif "port_to_list" bif "ports" bif "pre_loaded" bif "process_display" bif "process_flag" bif "process_info" bif "processes" bif "purge_module" bif "put" bif "raise" bif "read_timer" bif "ref_to_list" bif "register" bif "registered" bif "resume_process" bif "round" bif "self" bif "send" bif "send_after" bif "send_nosuspend" bif "set_cookie" bif "setelement" bif "size" bif "spawn" bif "spawn_link" bif "spawn_monitor" bif "spawn_opt" bif "split_binary" bif "start_timer" bif "statistics" bif "suspended_process" bif "system_flag" bif "system_info" bif "system_monitor" bif "system_profile" bif "term_to_binary" bif "throw" bif "time" bif "tl" bif "trace" bif "trace_deliviered" bif "trace_info" bif "trace_pattern" bif "trunc" bif "tuple_size" bif "tuple_to_list" bif "universaltime" bif "universaltime_to_localtime" bif "unlink" bif "unregister" bif "whereis" bif "yield" bif done "a-zA-Z0-9_@" atom