|
|
@@ -220,6 +220,9 @@ void render_string(const char * const string, |
|
|
|
token_t * t = *(token_t**)vector_get(&token_table, |
|
|
|
i); |
|
|
|
match_t * match = regex_match(t->syntax, string, true); |
|
|
|
for(match_t * m = match; m->position != -1; m++){ |
|
|
|
printf("%s: %d %d\n", t->syntax->str, m->position, m->width); |
|
|
|
} |
|
|
|
if (match->position == -1) { |
|
|
|
free(match); |
|
|
|
continue; |
|
|
@@ -248,16 +251,17 @@ void render_string(const char * const string, |
|
|
|
} |
|
|
|
} |
|
|
|
if (max != &sentinel) { |
|
|
|
const int padding = max->m[max->i].position - (s - string); |
|
|
|
const match_t * mymatch = &(max->m[max->i]); |
|
|
|
const int padding = mymatch->position - (s - string); |
|
|
|
if (padding) { |
|
|
|
display->callback(s, |
|
|
|
padding, |
|
|
|
NULL); |
|
|
|
} |
|
|
|
display->callback(s + padding, |
|
|
|
max->m->width, |
|
|
|
mymatch->width, |
|
|
|
max->t->hl->attributes); |
|
|
|
s += padding + max->m->width; |
|
|
|
s += padding + mymatch->width; |
|
|
|
} else { |
|
|
|
display->callback(s, 1, NULL); |
|
|
|
++s; |
|
|
|