Improve Bash syntax highlighting (#25324)
chbk
created
Release Notes:
- Improved Bash syntax highlighting
| Zed 0.174.6 | With this PR |
| --- | --- |
|

|

|
- `string`: `string`
- `variable`: `property` -> `variable`
- `number`: `number`
- `regex`: `string.regex`
- `>&`, `>&-`, `:`, `//`, `/`, `%`, `%%`, `#`, `##`, `=`, `==`:
`operator`
- `-lt`, `-le`, `-gt`, `-ge`, `-eq`, `-ne`, `-z`, `-n`:
`keyword.operator`
- `;`: `punctuation.delimiter`
- `(`, `)`, `{`, `}`, `[`, `]`: `punctuation.bracket`
- `$`, `${ }`, `$( )`: `punctuation.special`, as defined in other
languages
```bash
variable=I\ like\ Zed
function my_function() {
echo "Hello world, ${variable//regex/string}" > file
}
if [ $(uid) -lt 600 ]; then
my_function;
cat file | grep hello >&3
fi
```
Change summary
crates/languages/src/bash/highlights.scm | 52 +++++++++++++++++++++++--
1 file changed, 47 insertions(+), 5 deletions(-)
Detailed changes
@@ -4,11 +4,10 @@
(heredoc_body)
(heredoc_start)
(ansi_c_string)
+ (word)
] @string
-(command_name) @function
-
-(variable_name) @property
+(variable_name) @variable
[
"case"
@@ -35,24 +34,67 @@
(comment) @comment
(function_definition name: (word) @function)
+(command_name (word) @function)
+
+[
+ (file_descriptor)
+ (number)
+] @number
-(file_descriptor) @number
+(regex) @string.regex
[
(command_substitution)
(process_substitution)
(expansion)
-]@embedded
+] @embedded
+
[
"$"
"&&"
">"
">>"
+ ">&"
+ ">&-"
"<"
"|"
+ ":"
+ "//"
+ "/"
+ "%"
+ "%%"
+ "#"
+ "##"
+ "="
+ "=="
] @operator
+(test_operator) @keyword.operator
+
+[
+ ";"
+] @punctuation.delimiter
+
+[
+ "("
+ ")"
+ "{"
+ "}"
+ "["
+ "]"
+] @punctuation.bracket
+
+(simple_expansion
+ "$" @punctuation.special)
+(expansion
+ "${" @punctuation.special
+ "}" @punctuation.special) @embedded
+
+(command_substitution
+ "$(" @punctuation.special
+ ")" @punctuation.special)
+
(
(command (_) @constant)
(#match? @constant "^-")