# -------------------------------
#
# Erlang programming language syntax highlighting
# for CoolEdit
#
# Homepage of Erlang: http://www.erlang.org
#
# Author: Witold Baryluk < baryluk at smp if uj edu pl >
# Date: 07-07-2009, 08-02-2009
#
# -------------------------------
#
# Useful links:
# http://www.erlang.org/doc/doc-5.4.13/doc/reference_manual/part_frame.html
# http://www.erlang.org/doc/reference_manual/data_types.html#2.14
# http://www.regular-expressions.info/reference.html
# gedit: http://martin.ankerl.com/files/erlang.lang
# joe: http://www.straatinvestments.com/~tlack/erlang/joe-editor/erlang.jsf
# geshi: http://www.kreisquadratur.de/blog/?p=305
# vim: http://erlang.org/pipermail/erlang-questions/2006-July/021362.html
# kate: http://bugsfiles.kde.org/attachment.cgi?id=21155
#
# entries for Syntax file:
#
# file ..\*\\.erl$ Erlang\sProgram (-module\\(|#!.*escript)
# include erlang.syntax
#
# file ..\*\\.hrl$ Erlang\sHeader -record\\(
# include erlang.syntax
context default
keyword whole after color19
keyword whole and color30
keyword whole andalso color30
keyword whole band color30
keyword whole begin color19
keyword whole bnot color30
keyword whole bor color30
keyword whole bsl color30
keyword whole bsr color30
keyword whole bxor color30
keyword whole case color19
keyword whole catch color19
keyword whole cond color19
keyword whole div color30
keyword whole end color19
keyword whole fun color19
keyword whole if color19
keyword whole let color19
keyword whole not color30
keyword whole of color19
keyword whole or color30
keyword whole orelse color30
keyword whole query color19
keyword whole receive color19
keyword whole rem color30
keyword whole try color19
keyword whole throw color19
keyword whole xor color30
keyword whole when color19
keyword whole -module color90
keyword whole -compile color90
keyword whole -behaviour color90
keyword whole -record color90
keyword whole -define color90
keyword whole -include color90
keyword whole -include_lib color90
keyword whole -vsn color91
keyword whole -author color91
keyword whole -copyright color91
keyword whole -export color90
keyword whole -\{abcdefghijklmnoprqstuvwxyz\}\[abcdefghijklmnoprqstuvwxyzABCDEFGHIJKLMNOPRQSTVWXYZ0123456789_\] color160
# erlang:*
keyword whole abs color88
keyword whole accept color88
keyword whole alarm color88
keyword whole apply color88
keyword whole atom_to_list color88
keyword whole binary_to_list color88
keyword whole binary_to_term color88
keyword whole check_process_code color88
keyword whole concat_binary color88
keyword whole date color88
keyword whole delete_module color88
keyword whole disconnect_node color88
keyword whole element color88
keyword whole erase color88
keyword whole exit color88
keyword whole float color88
keyword whole float_to_list color88
keyword whole garbage_collect color88
keyword whole get color88
keyword whole get_keys color88
keyword whole group_leader color88
keyword whole halt color88
keyword whole hd color88
keyword whole integer_to_list color88
keyword whole is_alive color88
keyword whole is_atom color88
keyword whole is_binary color88
keyword whole is_boolean color88
keyword whole is_float color88
keyword whole is_function color88
keyword whole is_integer color88
keyword whole is_list color88
keyword whole is_number color88
keyword whole is_pid color88
keyword whole is_port color88
keyword whole is_process_alive color88
keyword whole is_record color88
keyword whole is_reference color88
keyword whole is_tuple color88
keyword whole length color88
keyword whole link color88
keyword whole list_to_atom color88
keyword whole list_to_binary color88
keyword whole list_to_float color88
keyword whole list_to_integer color88
keyword whole list_to_pid color88
keyword whole list_to_tuple color88
keyword whole load_module color88
keyword whole loaded color88
keyword whole localtime color88
keyword whole make_ref color88
keyword whole module_loaded color88
keyword whole node color88
keyword whole nodes color88
keyword whole now color88
keyword whole open_port color88
keyword whole pid_to_list color88
keyword whole port_close color88
keyword whole port_command color88
keyword whole port_connect color88
keyword whole port_control color88
keyword whole ports color88
keyword whole pre_loaded color88
keyword whole process_flag color88
keyword whole process_info color88
keyword whole processes color88
keyword whole purge_module color88
keyword whole put color88
keyword whole register color88
keyword whole registered color88
keyword whole round color88
keyword whole self color88
keyword whole setelement color88
keyword whole size color88
keyword whole spawn color88
keyword whole spawn_link color88
keyword whole spawn_opt color88
keyword whole split_binary color88
keyword whole statistics color88
keyword whole term_to_binary color88
keyword whole throw color88
keyword whole time color88
keyword whole tl color88
keyword whole trunc color88
keyword whole tuple_to_list color88
keyword whole unlink color88
keyword whole unregister color88
keyword whole whereis color88
keyword whole gen_server:cast color88
keyword whole gen_server:call color88
keyword whole gen_server:reply color88
keyword whole gen_server:start_link color88
keyword whole gen_server:start color88
keyword whole io:format color88
keyword whole init color243
keyword whole handle_cast color243
keyword whole handle_call color243
keyword whole handle_info color243
keyword whole handle_event color243
keyword whole handle_sync_event color243
keyword whole terminate color243
keyword whole code_change color243
# list comprehension
keyword <- color19
# clause
keyword -> color19
# guards
keyword =:= color30
keyword == color30
keyword /= color30
keyword =/= color30
# binary
keyword << color17
keyword >> color17
# guards
keyword < color30
keyword =< color30
keyword >= color30
keyword > color30
# ops
keyword - color19
keyword \+ color19
keyword / color19
keyword \* color19
keyword ; color17
keyword , color17
keyword . color17
keyword = color19
keyword % color30
keyword \+\+ color19
keyword -- color19
keyword ! color19
# TODO this does not work for $" or $', use $\" or $\' instead. ?
keyword $\{abcdefghijklmnoprqstuvwxyzABCDEFGHIJKLMNOPRQSTUVWXYZ0123456789_{}[]()(\\/`~!@#$%^&\*+-=;:'"|,./?<>\} color160
keyword $\ color160
# keyword '\\\{0123\}\{01234567\}\{01234567\}' color88
# TODO: integers, inegers of form Base#digits, 2#1010101
# todo: records access via #state{}
keyword whole ?MODULE color160
keyword whole ?LINE color160
keyword whole ?FILE color160
keyword whole ?\[abcdefghijklmnoprqstuvwxyzABCDEFGHIJKLMNOPRQSTUVWXYZ0123456789_@\] color160
# gray operatory
# cyan - moduly
keyword whole true color160
keyword whole false color160
keyword [ color17
keyword || color17
keyword | color17
keyword ] color17
keyword ( color17
keyword ) color17
keyword { color26
keyword } color26
keyword whole lists:seq color240
keyword whole lists:map color240
keyword whole lists:filter color240
keyword whole lists:reduce color240
keyword whole lists:foldl color240
keyword whole lists:foldr color240
keyword whole lists:append color240
keyword whole lists:nth color240
keyword whole behaviour_info color240
keyword whole dict:find color240
keyword whole dict:is_key color240
keyword whole dict:erase color240
keyword whole dict:new color240
keyword whole dict:map color240
keyword whole dict:store color240
keyword whole dict:fetch_keys color240
keyword whole dict:append color240
keyword whole dict:update color240
keyword whole dict:update_counter color240
keyword whole dict:fold color240
keyword whole dict:to_list color240
keyword whole dict:fetch color240
# todo: no more than one dot in atom, and not at the end
keyword whole \{abcdefghijklmnoprqstuvwxyz\}\[abcdefghijklmnoprqstuvwxyzABCDEFGHIJKLMNOPRQSTUVWXYZ0123456789_.@\] color252
keyword whole \{_ABCDEFGHIJKLMNOPRQSTUVWXYZ\}\[abcdefghijklmnoprqstuvwxyzABCDEFGHIJKLMNOPRQSTUVWXYZ0123456789_@\] color243
context exclusive % \n color30
spellcheck
context " " color28
spellcheck
keyword ~p color88
keyword ~n color88
keyword ~w color88
keyword ~~ color88
keyword \\" color88
keyword \\\{0123\}\{01234567\}\{01234567\} color88
keyword \\\{01234567\}\{01234567\} color88
keyword \\\{01234567\} color88
keyword \\x\{0123456789abcdefABCDEF\}\{0123456789abcdefABCDEF\} color88
keyword \\\\ color88
keyword \\' color88
keyword \\\{bdefrstv\} color88
keyword \\^\{abcdefghijklmnoprqstuvwxyzABCDEFGHIJKLMNOPRQSTUVWXYZ\} color88
context ' ' color160
keyword \\" color196
keyword \\\{0123\}\{01234567\}\{01234567\} color196
keyword \\\{01234567\}\{01234567\} color196
keyword \\\{01234567\} color196
keyword \\x\{0123456789abcdefABCDEF\}\{0123456789abcdefABCDEF\} color196
keyword \\\\ color196
keyword \\' color196
keyword \\\{bdefrstv\} color196
keyword \\^\{abcdefghijklmnoprqstuvwxyzABCDEFGHIJKLMNOPRQSTUVWXYZ\} color196