summaryrefslogtreecommitdiff
path: root/userdiff.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2020-11-02 21:17:46 (GMT)
committerJunio C Hamano <gitster@pobox.com>2020-11-02 21:17:46 (GMT)
commit292e53fa9d2cf6d0b6d6adbbdc6dfc665bd4babe (patch)
treec6cf86a42e4386b3c37bd23903c672669e8e8bdf /userdiff.c
parent305fcf42b4dde316ba0b2e6433c1e5a1d6ef864f (diff)
parent2ff6c34612057baccbd841524106c5a05f6be6d6 (diff)
downloadgit-292e53fa9d2cf6d0b6d6adbbdc6dfc665bd4babe.zip
git-292e53fa9d2cf6d0b6d6adbbdc6dfc665bd4babe.tar.gz
git-292e53fa9d2cf6d0b6d6adbbdc6dfc665bd4babe.tar.bz2
Merge branch 've/userdiff-bash'
The userdiff pattern learned to identify the function definition in POSIX shells and bash. * ve/userdiff-bash: userdiff: support Bash
Diffstat (limited to 'userdiff.c')
-rw-r--r--userdiff.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/userdiff.c b/userdiff.c
index 9c63be9..3f81a22 100644
--- a/userdiff.c
+++ b/userdiff.c
@@ -23,6 +23,27 @@ IPATTERN("ada",
"[a-zA-Z][a-zA-Z0-9_]*"
"|[-+]?[0-9][0-9#_.aAbBcCdDeEfF]*([eE][+-]?[0-9_]+)?"
"|=>|\\.\\.|\\*\\*|:=|/=|>=|<=|<<|>>|<>"),
+PATTERNS("bash",
+ /* Optional leading indentation */
+ "^[ \t]*"
+ /* Start of captured text */
+ "("
+ "("
+ /* POSIX identifier with mandatory parentheses */
+ "[a-zA-Z_][a-zA-Z0-9_]*[ \t]*\\([ \t]*\\))"
+ "|"
+ /* Bashism identifier with optional parentheses */
+ "(function[ \t]+[a-zA-Z_][a-zA-Z0-9_]*(([ \t]*\\([ \t]*\\))|([ \t]+))"
+ ")"
+ /* Optional whitespace */
+ "[ \t]*"
+ /* Compound command starting with `{`, `(`, `((` or `[[` */
+ "(\\{|\\(\\(?|\\[\\[)"
+ /* End of captured text */
+ ")",
+ /* -- */
+ /* Characters not in the default $IFS value */
+ "[^ \t]+"),
PATTERNS("dts",
"!;\n"
"!=\n"