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
This commit is contained in:
Junio C Hamano 2020-11-02 13:17:46 -08:00
commit 292e53fa9d
18 changed files with 91 additions and 0 deletions

View File

@ -802,6 +802,9 @@ patterns are available:
- `ada` suitable for source code in the Ada language.
- `bash` suitable for source code in the Bourne-Again SHell language.
Covers a superset of POSIX shell function definitions.
- `bibtex` suitable for files with BibTeX coded references.
- `cpp` suitable for source code in the C and C++ languages.

View File

@ -27,6 +27,7 @@ test_expect_success 'setup' '
diffpatterns="
ada
bash
bibtex
cpp
csharp

View File

@ -0,0 +1,4 @@
RIGHT() ((
ChangeMe = "$x" + "$y"
))

View File

@ -0,0 +1,6 @@
function RIGHT {
function InvalidSyntax{
:
echo 'ChangeMe'
}
}

View File

@ -0,0 +1,4 @@
function RIGHT {
:
echo 'ChangeMe'
}

View File

@ -0,0 +1,4 @@
function RIGHT ( ) {
ChangeMe
}

View File

@ -0,0 +1,4 @@
RIGHT() [[ \
"$a" > "$ChangeMe"
]]

View File

@ -0,0 +1,6 @@
function RIGHT {
functionInvalidSyntax {
:
echo 'ChangeMe'
}
}

View File

@ -0,0 +1,4 @@
function RIGHT(){
:
echo 'ChangeMe'
}

View File

@ -0,0 +1,4 @@
function RIGHT() {
ChangeMe
}

View File

@ -0,0 +1,6 @@
outer() {
RIGHT() {
:
echo 'ChangeMe'
}
}

View File

@ -0,0 +1,4 @@
_RIGHT_0n() {
ChangeMe
}

View File

@ -0,0 +1,4 @@
RIGHT(){
ChangeMe
}

View File

@ -0,0 +1,4 @@
RIGHT() {
ChangeMe
}

View File

@ -0,0 +1,4 @@
RIGHT ( ) {
ChangeMe
}

View File

@ -0,0 +1,4 @@
RIGHT() (
ChangeMe=2
)

View File

@ -0,0 +1,4 @@
RIGHT() { # Comment
ChangeMe
}

View File

@ -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"