color-words: make regex configurable via attributes
[gitweb.git] / diff.c
diff --git a/diff.c b/diff.c
index 00c661f82e744b3114db6cbd4a94d9c44d10a564..9fcde963dbc6b2951ef3c5adca9f8ddb46023b8c 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -1380,6 +1380,12 @@ static const struct userdiff_funcname *diff_funcname_pattern(struct diff_filespe
        return one->driver->funcname.pattern ? &one->driver->funcname : NULL;
 }
 
+static const char *userdiff_word_regex(struct diff_filespec *one)
+{
+       diff_filespec_load_driver(one);
+       return one->driver->word_regex;
+}
+
 void diff_set_mnemonic_prefix(struct diff_options *options, const char *a, const char *b)
 {
        if (!options->a_prefix)
@@ -1540,6 +1546,10 @@ static void builtin_diff(const char *name_a,
                        ecbdata.diff_words =
                                xcalloc(1, sizeof(struct diff_words_data));
                        ecbdata.diff_words->file = o->file;
+                       if (!o->word_regex)
+                               o->word_regex = userdiff_word_regex(one);
+                       if (!o->word_regex)
+                               o->word_regex = userdiff_word_regex(two);
                        if (o->word_regex) {
                                ecbdata.diff_words->word_regex = (regex_t *)
                                        xmalloc(sizeof(regex_t));