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 {
|
group "syntax_color_group" struct {
|
||||||
|
value "string" string: "999999";
|
||||||
value "comment" string: "00B000";
|
value "comment" string: "00B000";
|
||||||
value "define" string: "D42A2A";
|
value "define" string: "D42A2A";
|
||||||
group "colors" array {
|
group "colors" array {
|
||||||
|
@ -43,6 +44,7 @@ group "syntax_color_group" struct {
|
||||||
value "key" string: "styles";
|
value "key" string: "styles";
|
||||||
value "key" string: "size ";
|
value "key" string: "size ";
|
||||||
value "key" string: "text ";
|
value "key" string: "text ";
|
||||||
|
value "key" string: "text.";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
group "color" struct {
|
group "color" struct {
|
||||||
|
@ -95,7 +97,8 @@ group "syntax_color_group" struct {
|
||||||
value "key" string: "size";
|
value "key" string: "size";
|
||||||
value "key" string: "tag";
|
value "key" string: "tag";
|
||||||
value "key" string: "target";
|
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_x";
|
||||||
value "key" string: "to_y";
|
value "key" string: "to_y";
|
||||||
value "key" string: "to";
|
value "key" string: "to";
|
||||||
|
|
|
@ -19,6 +19,7 @@ typedef struct syntax_color_group
|
||||||
{
|
{
|
||||||
char *comment;
|
char *comment;
|
||||||
char *define;
|
char *define;
|
||||||
|
char *string;
|
||||||
color colors[COL_NUM];
|
color colors[COL_NUM];
|
||||||
} syntax_color_group;
|
} syntax_color_group;
|
||||||
|
|
||||||
|
@ -27,6 +28,7 @@ struct syntax_color_s
|
||||||
Eina_Strbuf *strbuf;
|
Eina_Strbuf *strbuf;
|
||||||
Eina_Strbuf *cachebuf;
|
Eina_Strbuf *cachebuf;
|
||||||
Eina_Hash *color_hash;
|
Eina_Hash *color_hash;
|
||||||
|
Eina_Stringshare *col_string;
|
||||||
Eina_Stringshare *col_comment;
|
Eina_Stringshare *col_comment;
|
||||||
Eina_Stringshare *col_define;
|
Eina_Stringshare *col_define;
|
||||||
Eina_Stringshare *cols[COL_NUM];
|
Eina_Stringshare *cols[COL_NUM];
|
||||||
|
@ -62,6 +64,8 @@ eddc_init()
|
||||||
sizeof(color));
|
sizeof(color));
|
||||||
edd_color = eet_data_descriptor_stream_new(&eddc);
|
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",
|
EET_DATA_DESCRIPTOR_ADD_BASIC(edd_scg, syntax_color_group, "comment",
|
||||||
comment, EET_T_STRING);
|
comment, EET_T_STRING);
|
||||||
EET_DATA_DESCRIPTOR_ADD_BASIC(edd_scg, syntax_color_group, "define",
|
EET_DATA_DESCRIPTOR_ADD_BASIC(edd_scg, syntax_color_group, "define",
|
||||||
|
@ -110,6 +114,8 @@ color_table_init(color_data *cd)
|
||||||
|
|
||||||
if (!scg) return;
|
if (!scg) return;
|
||||||
|
|
||||||
|
cd->col_string = eina_stringshare_add(scg->string);
|
||||||
|
//free(scg->define);
|
||||||
cd->col_comment = eina_stringshare_add(scg->comment);
|
cd->col_comment = eina_stringshare_add(scg->comment);
|
||||||
//free(scg->comment);
|
//free(scg->comment);
|
||||||
cd->col_define = eina_stringshare_add(scg->define);
|
cd->col_define = eina_stringshare_add(scg->define);
|
||||||
|
@ -180,6 +186,7 @@ color_term(color_data *cd)
|
||||||
eina_hash_free(cd->color_hash);
|
eina_hash_free(cd->color_hash);
|
||||||
eina_strbuf_free(cd->cachebuf);
|
eina_strbuf_free(cd->cachebuf);
|
||||||
|
|
||||||
|
eina_stringshare_del(cd->col_string);
|
||||||
eina_stringshare_del(cd->col_comment);
|
eina_stringshare_del(cd->col_comment);
|
||||||
eina_stringshare_del(cd->col_define);
|
eina_stringshare_del(cd->col_define);
|
||||||
|
|
||||||
|
@ -376,6 +383,36 @@ comment2_apply(Eina_Strbuf *strbuf, const char **src, int length, char **cur,
|
||||||
return -1;
|
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
|
static int
|
||||||
sharp_apply(Eina_Strbuf *strbuf, const char **src, int length, char **cur,
|
sharp_apply(Eina_Strbuf *strbuf, const char **src, int length, char **cur,
|
||||||
char **prev, const Eina_Stringshare *color)
|
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;
|
else if (ret == -1) goto finished;
|
||||||
|
|
||||||
//escape string: " ~ "
|
//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;
|
inside_string = !inside_string;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (inside_string || inside_comment)
|
if (inside_string || inside_comment)
|
||||||
{
|
{
|
||||||
cur++;
|
cur++;
|
||||||
|
|
Loading…
Reference in New Issue