Fix aggressive indent in shell scripts (#31973)

Peter Tripp and Ben Kunkle created

Closes: https://github.com/zed-industries/zed/issues/31774

Release Notes:

- N/A

Co-authored-by: Ben Kunkle <ben.kunkle@gmail.com>

Change summary

crates/languages/src/bash.rs          | 8 ++++++++
crates/languages/src/bash/config.toml | 4 ++--
2 files changed, 10 insertions(+), 2 deletions(-)

Detailed changes

crates/languages/src/bash.rs 🔗

@@ -49,6 +49,14 @@ mod tests {
                     assert_eq!(buffer.text(), expected);
                 };
 
+            // Do not indent after shebang
+            expect_indents_to(
+                &mut buffer,
+                cx,
+                "#!/usr/bin/env bash\n#",
+                "#!/usr/bin/env bash\n#",
+            );
+
             // indent function correctly
             expect_indents_to(
                 &mut buffer,

crates/languages/src/bash/config.toml 🔗

@@ -29,6 +29,6 @@ brackets = [
 ###     bar
 ### fi
 ### ```
-increase_indent_pattern = "(\\s*|;)(do|then|in|else|elif)\\b.*$"
-decrease_indent_pattern = "(\\s*|;)\\b(fi|done|esac|else|elif)\\b.*$"
+increase_indent_pattern = "(^|\\s+|;)(do|then|in|else|elif)\\b.*$"
+decrease_indent_pattern = "(^|\\s+|;)(fi|done|esac|else|elif)\\b.*$"
 # make sure to test each line mode & block mode