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++;

-- 


Reply via email to