git-p4: use absolute directory for PWD env var
[gitweb.git] / userdiff.c
index 42b86ac63d734280ac85ea829a910c4aa375dfcd..7c983c14ff2f4bc2aac6e632ccf982ea9589c6e3 100644 (file)
@@ -37,6 +37,9 @@ PATTERNS("java",
         "|[-+0-9.e]+[fFlL]?|0[xXbB]?[0-9a-fA-F]+[lL]?"
         "|[-+*/<>%&^|=!]="
         "|--|\\+\\+|<<=?|>>>?=?|&&|\\|\\|"),
+PATTERNS("matlab",
+        "^[[:space:]]*((classdef|function)[[:space:]].*)$|^%%[[:space:]].*$",
+        "[a-zA-Z_][a-zA-Z0-9_]*|[-+0-9.e]+|[=~<>]=|\\.[*/\\^']|\\|\\||&&"),
 PATTERNS("objc",
         /* Negate C statements that can look like functions */
         "!^[ \t]*(do|for|if|else|return|switch|while)\n"
@@ -74,7 +77,7 @@ PATTERNS("perl",
                "(:[^;#]*)?"
                "(\\{[ \t]*)?" /* brace can come here or on the next line */
                "(#.*)?$\n" /* comment */
-        "^[A-Z]+[ \t]*"        /* BEGIN, END, ... */
+        "^(BEGIN|END|INIT|CHECK|UNITCHECK|AUTOLOAD|DESTROY)[ \t]*"
                "(\\{[ \t]*)?" /* brace can come here or on the next line */
                "(#.*)?$\n"
         "^=head[0-9] .*",      /* POD */
@@ -270,7 +273,7 @@ struct userdiff_driver *userdiff_find_by_path(const char *path)
 
        if (!path)
                return NULL;
-       if (git_checkattr(path, 1, &check))
+       if (git_check_attr(path, 1, &check))
                return NULL;
 
        if (ATTR_TRUE(check.value))
@@ -281,3 +284,20 @@ struct userdiff_driver *userdiff_find_by_path(const char *path)
                return NULL;
        return userdiff_find_by_name(check.value);
 }
+
+struct userdiff_driver *userdiff_get_textconv(struct userdiff_driver *driver)
+{
+       if (!driver->textconv)
+               return NULL;
+
+       if (driver->textconv_want_cache && !driver->textconv_cache) {
+               struct notes_cache *c = xmalloc(sizeof(*c));
+               struct strbuf name = STRBUF_INIT;
+
+               strbuf_addf(&name, "textconv/%s", driver->name);
+               notes_cache_init(c, name.buf, driver->textconv);
+               driver->textconv_cache = c;
+       }
+
+       return driver;
+}