From 685fcbb268539acf9fb052adaf76bceaa1999902 Mon Sep 17 00:00:00 2001 From: Jonas Rosling Date: Mon, 9 Jul 2012 15:53:52 +0200 Subject: [PATCH 01/18] improved the md a bit --- md.jsf | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/md.jsf b/md.jsf index a70733e..044de81 100644 --- a/md.jsf +++ b/md.jsf @@ -5,6 +5,7 @@ # bold parsing is not that perfect since this works: **bold__ =Idle +=Tag fg_030 =Escape bold =Bad bold red @@ -12,9 +13,14 @@ :idle Idle * idle + "<" tag recolor=-1 "\\" escape recolor=-1 "*_" maybe_bold1 +:tag Tag + * idle + "a-z0-9 /" tag + ">" idle # do escaping of *_ and so on :escape Escape * idle From e797879412b65d3b7451ab148a9625528b94fed5 Mon Sep 17 00:00:00 2001 From: Jonas Rosling Date: Tue, 10 Jul 2012 14:49:42 +0200 Subject: [PATCH 02/18] added some support for edoc --- erlang.jsf | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/erlang.jsf b/erlang.jsf index 95f395b..be16416 100644 --- a/erlang.jsf +++ b/erlang.jsf @@ -2,6 +2,7 @@ =Idle =Comment fg_030 +=Edoc fg_033 =String fg_110 =String_mod fg_200 bold =String_esc fg_000 bold @@ -32,8 +33,38 @@ :line_comment Comment * line_comment + "@" is_edoc noeat buffer "\n" idle +:is_edoc 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-z@" is_edoc + +:edoc Keyword + * line_comment noeat + :variable Variable * idle noeat "a-zA-Z0-9_" variable @@ -95,7 +126,6 @@ :maybe_attribute Idle * idle noeat "a-z_" maybe_attribute - " " maybe_attribute "(." attribute recolormark noeat :attribute Attribute From a7f19c41447a2eb6642417336dbecc7e74b5fb56 Mon Sep 17 00:00:00 2001 From: Jonas Rosling Date: Tue, 10 Jul 2012 14:52:55 +0200 Subject: [PATCH 03/18] . --- erlang.jsf | 1 - 1 file changed, 1 deletion(-) diff --git a/erlang.jsf b/erlang.jsf index be16416..a3cf18b 100644 --- a/erlang.jsf +++ b/erlang.jsf @@ -2,7 +2,6 @@ =Idle =Comment fg_030 -=Edoc fg_033 =String fg_110 =String_mod fg_200 bold =String_esc fg_000 bold From 3b64e52d7ce9eb1d3878130fd92f10556bf9f3d5 Mon Sep 17 00:00:00 2001 From: Jonas Rosling Date: Tue, 10 Jul 2012 15:27:35 +0200 Subject: [PATCH 04/18] . --- erlang.jsf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erlang.jsf b/erlang.jsf index a3cf18b..b05cfa7 100644 --- a/erlang.jsf +++ b/erlang.jsf @@ -59,7 +59,7 @@ "@doc" edoc "@end" edoc done - "a-z@" is_edoc + "A-Za-z@" is_edoc :edoc Keyword * line_comment noeat From 8c85cc7fd854db7e3c88b1991ad9c27d5e0cfd61 Mon Sep 17 00:00:00 2001 From: Jonas Rosling Date: Tue, 10 Jul 2012 16:32:40 +0200 Subject: [PATCH 05/18] changed color of record attributes --- erlang.jsf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erlang.jsf b/erlang.jsf index b05cfa7..d763f01 100644 --- a/erlang.jsf +++ b/erlang.jsf @@ -7,7 +7,7 @@ =String_esc fg_000 bold =Int fg_033 =Record fg_530 -=Recatt fg_530 +=Recatt =Fun fg_115 =Module fg_101 =Keyword bold From 51459bdec8bdbb77b947ac20fb870f26513939ce Mon Sep 17 00:00:00 2001 From: Raev Date: Sat, 21 Jul 2012 10:38:16 +0200 Subject: [PATCH 06/18] Bit nicer color --- erlang.jsf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erlang.jsf b/erlang.jsf index d763f01..796c71e 100644 --- a/erlang.jsf +++ b/erlang.jsf @@ -11,7 +11,7 @@ =Fun fg_115 =Module fg_101 =Keyword bold -=Brace fg_555 bold +=Brace fg_505 =Brack fg_222 =Variable fg_310 From 360f00e6b67ec490aee67e5e0ae48fe37cfd4ffb Mon Sep 17 00:00:00 2001 From: Jonas Rosling Date: Sat, 21 Jul 2012 15:30:42 +0100 Subject: [PATCH 07/18] color --- erlang.jsf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/erlang.jsf b/erlang.jsf index 796c71e..080d6b2 100644 --- a/erlang.jsf +++ b/erlang.jsf @@ -12,7 +12,7 @@ =Module fg_101 =Keyword bold =Brace fg_505 -=Brack fg_222 +=Brack fg_055 =Variable fg_310 =Attribute fg_505 @@ -59,7 +59,7 @@ "@doc" edoc "@end" edoc done - "A-Za-z@" is_edoc + "A-Za-z@" is_edoc :edoc Keyword * line_comment noeat From 8d1c55bddab666badfea877c6a8a172a67d42039 Mon Sep 17 00:00:00 2001 From: Jonas Rosling Date: Sun, 22 Jul 2012 15:43:24 +0100 Subject: [PATCH 08/18] added "some" bifs and guards to highlighting --- erlang.jsf | 208 ++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 189 insertions(+), 19 deletions(-) diff --git a/erlang.jsf b/erlang.jsf index 080d6b2..2c501a8 100644 --- a/erlang.jsf +++ b/erlang.jsf @@ -11,6 +11,8 @@ =Fun fg_115 =Module fg_101 =Keyword bold +=Guard fg_200 +=Bif fg_501 =Brace fg_505 =Brack fg_055 @@ -130,6 +132,33 @@ done :attribute Attribute * idle noeat +:no_atom Idle + * idle noeat + " " no_atom + "(" function recolormark noeat + ":" module recolormark noeat + +:module Module + * idle noeat + +:function Fun + * idle noeat + +:kw Keyword + * idle noeat + +:guard Guard + * idle noeat + +:bif Bif + * idle recolormark noeat + " " bif + "(" idle noeat + +:quoted_atom Idle + * quoted_atom + "'" idle + :atom Idle * no_atom noeat strings "after" kw @@ -160,24 +189,165 @@ done "try" kw "when" kw "xor" kw + "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 - -:no_atom Idle - * idle noeat - " " no_atom - "(" function recolormark noeat - ":" module recolormark noeat - -:module Module - * idle noeat - -:function Fun - * idle noeat - -:kw Keyword - * idle noeat - -:quoted_atom Idle - * quoted_atom - "'" idle From 24e6e2976b751a8f5656fdf71fe864f5eea9035b Mon Sep 17 00:00:00 2001 From: Jonas Rosling Date: Sun, 22 Jul 2012 18:20:12 +0100 Subject: [PATCH 09/18] added $ syntax and fixed a nicer implementation of attributes --- erlang.jsf | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/erlang.jsf b/erlang.jsf index 2c501a8..e521289 100644 --- a/erlang.jsf +++ b/erlang.jsf @@ -18,6 +18,7 @@ =Variable fg_310 =Attribute fg_505 +=Dunno fg_330 bold :idle Idle * idle @@ -28,9 +29,17 @@ "0-9" decimal recolor=-1 "[]" brack recolor=-1 "{}" brace recolor=-1 - "-" maybe_attribute mark + "-" maybe_attribute buffer "a-z" atom buffer mark noeat "#" record recolor=-1 + "$" dunno recolor=-1 + +:dunno Dunno + * idle + "\\" dunnoesc + +:dunnoesc Dunno + * idle :line_comment Comment * line_comment @@ -113,11 +122,16 @@ done * idle noeat "0-9" decimal "." float + "#" base :float Int * idle noeat "0-9" float +:base Int + * idle noeat + "0-9A-F" base + :brace Brace * idle noeat @@ -125,9 +139,22 @@ done * idle noeat :maybe_attribute Idle - * idle noeat + * idle noeat strings + "-module" attribute + "-export" attribute + "-compile" attribute + "-ifdef" attribute + "-endif" attribute + "-spec" attribute + "-author" attribute + "-copyright" attribute + "-include" attribute + "-include_lib" attribute + "-vsn" attribute + "-behaviour" attribute + "-record" attribute +done "a-z_" maybe_attribute - "(." attribute recolormark noeat :attribute Attribute * idle noeat From 9ac5df58761c459b672cbd2fbcb2ac7bb0b75f94 Mon Sep 17 00:00:00 2001 From: Jonas Rosling Date: Sun, 22 Jul 2012 20:41:03 +0100 Subject: [PATCH 10/18] fixed broken ints --- erlang.jsf | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/erlang.jsf b/erlang.jsf index e521289..77fcf78 100644 --- a/erlang.jsf +++ b/erlang.jsf @@ -18,7 +18,7 @@ =Variable fg_310 =Attribute fg_505 -=Dunno fg_330 bold +=Char fg_330 bold :idle Idle * idle @@ -32,13 +32,13 @@ "-" maybe_attribute buffer "a-z" atom buffer mark noeat "#" record recolor=-1 - "$" dunno recolor=-1 + "$" char recolor=-1 -:dunno Dunno +:char Char * idle - "\\" dunnoesc + "\\" charesc -:dunnoesc Dunno +:charesc Char * idle :line_comment Comment @@ -123,6 +123,7 @@ done "0-9" decimal "." float "#" base + "Ee" eintval :float Int * idle noeat @@ -130,7 +131,16 @@ done :base Int * idle noeat - "0-9A-F" base + "0-9A-Fa-f" base + "Ee" eintval + +:eintval Int + * eint noeat + "-" eint + +:eint Int + * idle noeat + "0-9" eint :brace Brace * idle noeat From 1ec739d9b1a58803d7a500702a2b9aca0f1fbb36 Mon Sep 17 00:00:00 2001 From: Jonas Rosling Date: Sun, 22 Jul 2012 20:48:49 +0100 Subject: [PATCH 11/18] added some more atributes --- erlang.jsf | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/erlang.jsf b/erlang.jsf index 77fcf78..cb4207c 100644 --- a/erlang.jsf +++ b/erlang.jsf @@ -152,9 +152,13 @@ done * idle noeat strings "-module" attribute "-export" attribute + "-import" attribute "-compile" attribute "-ifdef" attribute "-endif" attribute + "-define" attribute + "-file" attribute + "-type" attribute "-spec" attribute "-author" attribute "-copyright" attribute @@ -163,6 +167,7 @@ done "-vsn" attribute "-behaviour" attribute "-record" attribute + "-on_load" attribute done "a-z_" maybe_attribute From 4b7c0974b2ad1c1b816754e0043e81f23e179651 Mon Sep 17 00:00:00 2001 From: Jonas Rosling Date: Sun, 22 Jul 2012 22:29:00 +0100 Subject: [PATCH 12/18] added syntax support for nested records --- erlang.jsf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/erlang.jsf b/erlang.jsf index cb4207c..81822db 100644 --- a/erlang.jsf +++ b/erlang.jsf @@ -87,6 +87,7 @@ done :recatt Recatt * idle noeat "a-zA-Z_" recatt + "#" record # STRINGS :string String @@ -159,6 +160,8 @@ done "-define" attribute "-file" attribute "-type" attribute + "-opaque" attribute + "-export_type" attribute "-spec" attribute "-author" attribute "-copyright" attribute From 04af9f47b39c1159d663c4eafd85dd4e387b57c6 Mon Sep 17 00:00:00 2001 From: Jonas Rosling Date: Sun, 22 Jul 2012 22:40:56 +0100 Subject: [PATCH 13/18] added highlighting for standard errors --- erlang.jsf | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/erlang.jsf b/erlang.jsf index 81822db..a9b58fd 100644 --- a/erlang.jsf +++ b/erlang.jsf @@ -171,6 +171,11 @@ done "-behaviour" attribute "-record" attribute "-on_load" attribute + "-connect_all" attribute + "-hidden" attribute + "-name" attribute + "-setcookie" attribute + "-sname" attribute done "a-z_" maybe_attribute @@ -195,6 +200,9 @@ done :guard Guard * idle noeat +:rterr Guard + * idle noeat + :bif Bif * idle recolormark noeat " " bif @@ -234,6 +242,19 @@ done "try" kw "when" kw "xor" kw + "badarg" rterr + "badarith" rterr + "badmatch" rterr + "function_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 From 9fd5e67846e7b30f2e364b31b47e36da458ca1dc Mon Sep 17 00:00:00 2001 From: Jonas Rosling Date: Sun, 22 Jul 2012 22:52:55 +0100 Subject: [PATCH 14/18] fixed some obvious missing cases --- erlang.jsf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/erlang.jsf b/erlang.jsf index a9b58fd..0aab524 100644 --- a/erlang.jsf +++ b/erlang.jsf @@ -169,6 +169,7 @@ done "-include_lib" attribute "-vsn" attribute "-behaviour" attribute + "-behavior" attribute "-record" attribute "-on_load" attribute "-connect_all" attribute @@ -246,6 +247,7 @@ done "badarith" rterr "badmatch" rterr "function_clause" rterr + "case_clause" rterr "if_clause" rterr "try_clause" rterr "undef" rterr From 02b793c0cae8467a0f3e0b2297b5cc1e3638493b Mon Sep 17 00:00:00 2001 From: Jonas Rosling Date: Tue, 24 Jul 2012 21:05:52 +0100 Subject: [PATCH 15/18] fixed broken records and broken ints --- erlang.jsf | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/erlang.jsf b/erlang.jsf index 0aab524..0ad15f4 100644 --- a/erlang.jsf +++ b/erlang.jsf @@ -5,7 +5,7 @@ =String fg_110 =String_mod fg_200 bold =String_esc fg_000 bold -=Int fg_033 +=Int fg_110 =Record fg_530 =Recatt =Fun fg_115 @@ -13,8 +13,8 @@ =Keyword bold =Guard fg_200 =Bif fg_501 -=Brace fg_505 -=Brack fg_055 +=Brace fg_033 +=Brack fg_033 =Variable fg_310 =Attribute fg_505 @@ -81,9 +81,18 @@ done :record Record * idle noeat - "a-zA-z_" record + "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 @@ -124,16 +133,15 @@ done "0-9" decimal "." float "#" base - "Ee" eintval :float Int * idle noeat "0-9" float + "Ee" eintval :base Int * idle noeat "0-9A-Fa-f" base - "Ee" eintval :eintval Int * eint noeat From 8a6e01676ab96dca22620a5f42746c7eb2733caf Mon Sep 17 00:00:00 2001 From: Jonas Rosling Date: Tue, 24 Jul 2012 21:50:03 +0100 Subject: [PATCH 16/18] colors :) --- erlang.jsf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/erlang.jsf b/erlang.jsf index 0ad15f4..08113b6 100644 --- a/erlang.jsf +++ b/erlang.jsf @@ -5,7 +5,7 @@ =String fg_110 =String_mod fg_200 bold =String_esc fg_000 bold -=Int fg_110 +=Int fg_033 =Record fg_530 =Recatt =Fun fg_115 @@ -13,8 +13,8 @@ =Keyword bold =Guard fg_200 =Bif fg_501 -=Brace fg_033 -=Brack fg_033 +=Brace fg_440 +=Brack fg_311 =Variable fg_310 =Attribute fg_505 From 0499d9027325a5dd2c4ccf5a21da6320a040b77a Mon Sep 17 00:00:00 2001 From: Jonas Rosling Date: Tue, 24 Jul 2012 22:12:33 +0100 Subject: [PATCH 17/18] added types to highlighting --- erlang.jsf | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/erlang.jsf b/erlang.jsf index 08113b6..df07e96 100644 --- a/erlang.jsf +++ b/erlang.jsf @@ -13,6 +13,7 @@ =Keyword bold =Guard fg_200 =Bif fg_501 +=Type fg_141 =Brace fg_440 =Brack fg_311 @@ -217,10 +218,18 @@ done " " bif "(" idle noeat +:type Type + * idle recolormark noeat + "(" idle noeat + ":" module recolormark noeat + :quoted_atom Idle * quoted_atom "'" idle +# This implementation is sort of funky. +# Most of the cases it's correct but some highlighting may be wrong. +# Should be looked over... :atom Idle * no_atom noeat strings "after" kw @@ -251,6 +260,35 @@ done "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 From 9fefb175780093e175b4e54c15edccf22a51be8c Mon Sep 17 00:00:00 2001 From: Jonas Rosling Date: Wed, 1 Aug 2012 22:39:46 +0100 Subject: [PATCH 18/18] Itroduced handeling of Macros, function arety, keywords <- and ||, quoted function and module names and added -mode to attributes --- erlang.jsf | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/erlang.jsf b/erlang.jsf index df07e96..b98ef68 100644 --- a/erlang.jsf +++ b/erlang.jsf @@ -1,4 +1,8 @@ # JOE syntax highlight file for Erlang +# TODO Handle type information :: +# TODO implement subroutines for cleaner and more correct implementation. +# TODO Probably use less colors to be less distractive. + =Idle =Comment fg_030 @@ -16,7 +20,7 @@ =Type fg_141 =Brace fg_440 =Brack fg_311 - +=Macro fg_330 =Variable fg_310 =Attribute fg_505 =Char fg_330 bold @@ -26,7 +30,7 @@ "A-Z_" variable noeat "%" line_comment noeat "\"" string recolor=-1 - "'" quoted_atom recolor=-1 + "'" quoted_atom mark "0-9" decimal recolor=-1 "[]" brack recolor=-1 "{}" brace recolor=-1 @@ -34,6 +38,26 @@ "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 Char * idle @@ -186,6 +210,7 @@ done "-name" attribute "-setcookie" attribute "-sname" attribute + "-mode" attribute done "a-z_" maybe_attribute @@ -197,6 +222,7 @@ done " " no_atom "(" function recolormark noeat ":" module recolormark noeat + "/" funarity :module Module * idle noeat @@ -204,6 +230,10 @@ done :function Fun * idle noeat +:funarity Fun + * function recolormark noeat + "0-9" funtroll + :kw Keyword * idle noeat @@ -225,7 +255,7 @@ done :quoted_atom Idle * quoted_atom - "'" idle + "'" no_atom # This implementation is sort of funky. # Most of the cases it's correct but some highlighting may be wrong.