hermet pushed a commit to branch master. http://git.enlightenment.org/tools/enventor.git/commit/?id=a9aa904b633b23b6c6c6c5b58bdcc43d8e043d1b
commit a9aa904b633b23b6c6c6c5b58bdcc43d8e043d1b Author: ChunEon Park <her...@hermet.pe.kr> Date: Tue May 20 20:09:14 2014 +0900 syntax_color - apply an additional color to strings --- data/color/color.src | 5 ++++- src/bin/syntax_color.c | 45 ++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 44 insertions(+), 6 deletions(-) diff --git a/data/color/color.src b/data/color/color.src index c0df40c..4a2672f 100644 --- a/data/color/color.src +++ b/data/color/color.src @@ -1,4 +1,5 @@ group "syntax_color_group" struct { + value "string" string: "999999"; value "comment" string: "00B000"; value "define" string: "D42A2A"; group "colors" array { @@ -43,6 +44,7 @@ group "syntax_color_group" struct { value "key" string: "styles"; value "key" string: "size "; value "key" string: "text "; + value "key" string: "text."; } } group "color" struct { @@ -95,7 +97,8 @@ group "syntax_color_group" struct { value "key" string: "size"; value "key" string: "tag"; value "key" string: "target"; - value "key" string: "text"; + value "key" string: "text:"; + value "key" string: "text_class"; value "key" string: "to_x"; value "key" string: "to_y"; value "key" string: "to"; diff --git a/src/bin/syntax_color.c b/src/bin/syntax_color.c index 9913572..a35e609 100644 --- a/src/bin/syntax_color.c +++ b/src/bin/syntax_color.c @@ -19,6 +19,7 @@ typedef struct syntax_color_group { char *comment; char *define; + char *string; color colors[COL_NUM]; } syntax_color_group; @@ -27,6 +28,7 @@ struct syntax_color_s Eina_Strbuf *strbuf; Eina_Strbuf *cachebuf; Eina_Hash *color_hash; + Eina_Stringshare *col_string; Eina_Stringshare *col_comment; Eina_Stringshare *col_define; Eina_Stringshare *cols[COL_NUM]; @@ -62,6 +64,8 @@ eddc_init() sizeof(color)); edd_color = eet_data_descriptor_stream_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(edd_scg, syntax_color_group, "string", + string, EET_T_STRING); EET_DATA_DESCRIPTOR_ADD_BASIC(edd_scg, syntax_color_group, "comment", comment, EET_T_STRING); EET_DATA_DESCRIPTOR_ADD_BASIC(edd_scg, syntax_color_group, "define", @@ -110,6 +114,8 @@ color_table_init(color_data *cd) if (!scg) return; + cd->col_string = eina_stringshare_add(scg->string); + //free(scg->define); cd->col_comment = eina_stringshare_add(scg->comment); //free(scg->comment); cd->col_define = eina_stringshare_add(scg->define); @@ -180,6 +186,7 @@ color_term(color_data *cd) eina_hash_free(cd->color_hash); eina_strbuf_free(cd->cachebuf); + eina_stringshare_del(cd->col_string); eina_stringshare_del(cd->col_comment); eina_stringshare_del(cd->col_define); @@ -377,6 +384,36 @@ comment2_apply(Eina_Strbuf *strbuf, const char **src, int length, char **cur, } static int +string_apply(Eina_Strbuf *strbuf, char **cur, char **prev, + const Eina_Stringshare *color, Eina_Bool inside_string) +{ + //escape string: " ~ " + if ((*cur)[0] != QUOT_C) return 0; + + char buf[128]; + + if (!inside_string) + { + snprintf(buf, sizeof(buf), "<color=#%s>", color); + eina_strbuf_append(strbuf, buf); + } + + eina_strbuf_append_length(strbuf, *prev, *cur - *prev); + eina_strbuf_append_char(strbuf, QUOT_C); + + if (inside_string) + { + snprintf(buf, sizeof(buf), "</color>"); + eina_strbuf_append(strbuf, buf); + } + + (*cur)++; + *prev = *cur; + + return 1; +} + +static int sharp_apply(Eina_Strbuf *strbuf, const char **src, int length, char **cur, char **prev, const Eina_Stringshare *color) { @@ -543,15 +580,13 @@ color_apply(color_data *cd, const char *src, int length) else if (ret == -1) goto finished; //escape string: " ~ " - if (cur[0] == QUOT_C) + ret = string_apply(strbuf, &cur, &prev, cd->col_string, inside_string); + if (ret == 1) { - eina_strbuf_append_length(strbuf, prev, cur - prev); - eina_strbuf_append_char(strbuf, QUOT_C); - cur++; - prev = cur; inside_string = !inside_string; continue; } + if (inside_string || inside_comment) { cur++; --