diff --git a/src/bin/syntax_color.c b/src/bin/syntax_color.c index 8dc0e9f..ff589b0 100644 --- a/src/bin/syntax_color.c +++ b/src/bin/syntax_color.c @@ -17,6 +17,7 @@ struct syntax_color_s Eina_Stringshare *col3; Eina_Stringshare *col4; Eina_Stringshare *col5; + Eina_Stringshare *col6; }; color_data * @@ -29,6 +30,7 @@ color_init(Eina_Strbuf *strbuf) cd->col3 = eina_stringshare_add("0000a0"); cd->col4 = eina_stringshare_add("969600"); cd->col5 = eina_stringshare_add("009600"); + cd->col6 = eina_stringshare_add("00C0C0"); return cd; } @@ -41,6 +43,7 @@ color_term(color_data *cd) eina_stringshare_del(cd->col3); eina_stringshare_del(cd->col4); eina_stringshare_del(cd->col5); + eina_stringshare_del(cd->col6); free(cd); } @@ -236,6 +239,63 @@ comment2_apply(Eina_Strbuf *strbuf, const char **src, int length, char **cur, return -1; } +static int +sharp_apply(Eina_Strbuf *strbuf, const char **src, int length, char **cur, + char **prev, const Eina_Stringshare *color, + Eina_Bool *inside_comment) +{ + if (*inside_comment) return 0; + if ((*cur)[0] != '#') return 0; + + eina_strbuf_append_length(strbuf, *prev, (*cur - *prev)); + + char buf[128]; + snprintf(buf, sizeof(buf), "#", color); + eina_strbuf_append(strbuf, buf); + + int cmp_size = 1; //strlen("#"); + *cur += cmp_size; + + if (*cur > (*src + length)) + { + eina_strbuf_append(strbuf, ""); + return -1; + } + + *prev = *cur; + + char *space = strstr(*prev, " "); + char *eol = strstr(*prev, "
"); + + if (space < eol) + { + *cur = space; + cmp_size = strlen(" "); + } + else + { + *cur = eol; + cmp_size = strlen("
"); + } + + if (*cur) + { + eina_strbuf_append_length(strbuf, *prev, (*cur - *prev)); + if (space < eol) eina_strbuf_append(strbuf, " "); + else eina_strbuf_append(strbuf, "
"); + *cur += cmp_size; + *prev = *cur; + return 1; + } + + eina_strbuf_append(strbuf, *prev); + *prev = *cur; + + eina_strbuf_append(strbuf, ""); + return -1; +} + + const char * color_cancel(color_data *cd, const char *src, int length) { @@ -322,6 +382,12 @@ color_apply(color_data *cd, const char *src, int length) if (ret == 1) continue; else if (ret == -1) goto finished; + //handle comment: # + ret = sharp_apply(strbuf, &src, length, &cur, &prev, cd->col6, + &inside_comment); + if (ret == 1) continue; + else if (ret == -1) goto finished; + //escape string: " ~ " if (cur[0] == QUOT_C) {