From bab44ff37c248a593199d9b3e69700800a49fbd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Mon, 15 Sep 2014 15:06:59 +0200 Subject: More efficient syntax highlighting, first match wins --- editor.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'editor.c') diff --git a/editor.c b/editor.c index e892c09..8a578d5 100644 --- a/editor.c +++ b/editor.c @@ -200,20 +200,20 @@ static void editor_windows_invalidate(Editor *ed, size_t start, size_t end) { bool editor_syntax_load(Editor *ed, Syntax *syntaxes, Color *colors) { bool success = true; ed->syntaxes = syntaxes; + + for (Color *color = colors; color && color->fg; color++) { + if (color->attr == 0) + color->attr = A_NORMAL; + color->attr |= COLOR_PAIR(editor_color_get(color->fg, color->bg)); + } + for (Syntax *syn = syntaxes; syn && syn->name; syn++) { if (regcomp(&syn->file_regex, syn->file, REG_EXTENDED|REG_NOSUB|REG_ICASE|REG_NEWLINE)) success = false; - Color *color = colors; for (int j = 0; j < LENGTH(syn->rules); j++) { SyntaxRule *rule = &syn->rules[j]; if (!rule->rule) break; - if (rule->color.fg == 0 && color && color->fg != 0) - rule->color = *color++; - if (rule->color.attr == 0) - rule->color.attr = A_NORMAL; - if (rule->color.fg != 0) - rule->color.attr |= COLOR_PAIR(editor_color_get(rule->color.fg, rule->color.bg)); if (regcomp(&rule->regex, rule->rule, REG_EXTENDED|rule->cflags)) success = false; } -- cgit v1.2.3