Files
git/t/t4034/bash/expect
Moumita Dhar ea8a71b40d userdiff: extend Bash pattern to cover more shell function forms
The previous function regex required explicit matching of function
bodies using `{`, `(`, `((`, or `[[`, which caused several issues:

- It failed to capture valid functions where `{` was on the next line
  due to line continuation (`\`).
- It did not recognize functions with single  command body, such as
  `x () echo hello`.

Replacing the function body matching logic with `.*$`, ensures
that everything on the function definition line is captured.

Additionally, the word regex is refined to better recognize shell
syntax, including additional parameter expansion operators and
command-line options.

Signed-off-by: Moumita Dhar <dhar61595@gmail.com>
Acked-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2025-05-16 11:52:41 -07:00

37 lines
1.2 KiB
Plaintext

<BOLD>diff --git a/pre b/post<RESET>
<BOLD>index 09ac008..60ba6a2 100644<RESET>
<BOLD>--- a/pre<RESET>
<BOLD>+++ b/post<RESET>
<CYAN>@@ -1,31 +1,31 @@<RESET>
<RED>my_var<RESET><GREEN>new_var<RESET>=10
x=<RED>123<RESET><GREEN>456<RESET>
echo <RED>$1<RESET><GREEN>$2<RESET>
echo <RED>$USER<RESET><GREEN>$USERNAME<RESET>
${<RED>HOME<RESET><GREEN>HOMEDIR<RESET>}
((a<RED>+<RESET><GREEN>+=<RESET>b))
((a<RED>*<RESET><GREEN>*=<RESET>b))
((a<RED>/<RESET><GREEN>/=<RESET>b))
((a<RED>%<RESET><GREEN>%=<RESET>b))
((a<RED>|<RESET><GREEN>|=<RESET>b))
((a<RED>^<RESET><GREEN>^=<RESET>b))
((a<RED>=<RESET><GREEN>==<RESET>b))
((a<RED>!<RESET><GREEN>!=<RESET>b))
((a<RED><<RESET><GREEN><=<RESET>b))
((a<RED>><RESET><GREEN>>=<RESET>b))
$((a<RED><<RESET><GREEN><<<RESET>b))
$((a<RED>><RESET><GREEN>>><RESET>b))
$((a<RED>&<RESET><GREEN>&&<RESET>b))
$((a<RED>|<RESET><GREEN>||<RESET>b))
${a<RED>:<RESET><GREEN>:-<RESET>b}
${a<RED>:<RESET><GREEN>:=<RESET>b}
${a<RED>:<RESET><GREEN>:+<RESET>b}
${a<RED>:<RESET><GREEN>:?<RESET>b}
${a<RED>#<RESET><GREEN>##<RESET>*/}
${a<RED>%<RESET><GREEN>%%<RESET>.*}
${a<RED>^<RESET><GREEN>^^<RESET>}
${a<RED>,<RESET><GREEN>,,<RESET>}
${<GREEN>!<RESET>a}
${a[<RED>*<RESET><GREEN>@<RESET>]}
ls <RED>-a<RESET><GREEN>-x<RESET>
ls <RED>--all<RESET><GREEN>--color<RESET>