]> git.ipfire.org Git - thirdparty/git.git/blobdiff - userdiff.c
Merge branch 'dl/merge-autostash-rebase-quit-fix'
[thirdparty/git.git] / userdiff.c
index e187d356f6fff746547f14129cbe7668e11b4adb..30ab42df8ef2b0a93b007b5afb484ccd4102c3b0 100644 (file)
@@ -32,6 +32,19 @@ PATTERNS("dts",
         /* Property names and math operators */
         "[a-zA-Z0-9,._+?#-]+"
         "|[-+*/%&^|!~]|>>|<<|&&|\\|\\|"),
+PATTERNS("elixir",
+        "^[ \t]*((def(macro|module|impl|protocol|p)?|test)[ \t].*)$",
+        /* -- */
+        /* Atoms, names, and module attributes */
+        "[@:]?[a-zA-Z0-9@_?!]+"
+        /* Numbers with specific base */
+        "|[-+]?0[xob][0-9a-fA-F]+"
+        /* Numbers */
+        "|[-+]?[0-9][0-9_.]*([eE][-+]?[0-9_]+)?"
+        /* Operators and atoms that represent them */
+        "|:?(\\+\\+|--|\\.\\.|~~~|<>|\\^\\^\\^|<?\\|>|<<<?|>?>>|<<?~|~>?>|<~>|<=|>=|===?|!==?|=~|&&&?|\\|\\|\\|?|=>|<-|\\\\\\\\|->)"
+        /* Not real operators, but should be grouped */
+        "|:?%[A-Za-z0-9_.]\\{\\}?"),
 IPATTERN("fortran",
         "!^([C*]|[ \t]*!)\n"
         "!^[ \t]*MODULE[ \t]+PROCEDURE[ \t]\n"
@@ -133,7 +146,7 @@ PATTERNS("php",
         "[a-zA-Z_][a-zA-Z0-9_]*"
         "|[-+0-9.e]+|0[xXbB]?[0-9a-fA-F]+"
         "|[-+*/<>%&^|=!.]=|--|\\+\\+|<<=?|>>=?|===|&&|\\|\\||::|->"),
-PATTERNS("python", "^[ \t]*((class|def)[ \t].*)$",
+PATTERNS("python", "^[ \t]*((class|(async[ \t]+)?def)[ \t].*)$",
         /* -- */
         "[a-zA-Z_][a-zA-Z0-9_]*"
         "|[-+0-9.e]+[jJlL]?|0[xX]?[0-9a-fA-F]+[lL]?"
@@ -209,7 +222,7 @@ static struct userdiff_driver driver_false = {
        { NULL, 0 }
 };
 
-static struct userdiff_driver *userdiff_find_by_namelen(const char *k, int len)
+static struct userdiff_driver *userdiff_find_by_namelen(const char *k, size_t len)
 {
        int i;
        for (i = 0; i < ndrivers; i++) {
@@ -253,7 +266,7 @@ int userdiff_config(const char *k, const char *v)
 {
        struct userdiff_driver *drv;
        const char *name, *type;
-       int namelen;
+       size_t namelen;
 
        if (parse_config_key(k, "diff", &name, &namelen, &type) || !name)
                return 0;