forked from enlightenment/enventor
syntax_color - apply an additional color to strings
This commit is contained in:
parent
7e27aeead1
commit
a9aa904b63
|
@ -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";
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
@ -376,6 +383,36 @@ comment2_apply(Eina_Strbuf *strbuf, const char **src, int length, char **cur,
|
|||
return -1;
|
||||
}
|
||||
|
||||
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++;
|
||||
|
|
Loading…
Reference in New Issue