docs: Add Shell Script language documentation (#23248)

This commit is contained in:
Peter Tripp 2025-01-16 12:16:38 -05:00 committed by GitHub
parent ffc6b7b102
commit 8e1ad7d475
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 82 additions and 7 deletions

View file

@ -55,6 +55,7 @@ Zed supports hundreds of programming languages and text formats. Some work out-o
- [Rust](./languages/rust.md)
- [Scala](./languages/scala.md)
- [Scheme](./languages/scheme.md)
- [Shell Script](./languages/sh.md)
- [Svelte](./languages/svelte.md)
- [Swift](./languages/swift.md)
- [TailwindCSS](./languages/tailwindcss.md)

View file

@ -8,17 +8,29 @@ Report issues to: [https://github.com/d1y/bash.zed/issues](https://github.com/d1
## Configuration
The bash-language-server support shellcheck. But you need to install it manually:
When `shellcheck` is available `bash-language-server` will use it internally to provide diagnostics.
### Install `shellcheck`:
```sh
# macOS
brew install shellcheck
brew install shellcheck # macOS (HomeBrew)
apt-get install shellcheck # Ubuntu/Debian
pacman -S shellcheck # ArchLinux
dnf install shellcheck # Fedora
yum install shellcheck # CentOS/RHEL
zypper install shellcheck # openSUSE
choco install shellcheck # Windows (Chocolatey)
```
# Ubuntu/Debian
sudo apt-get install shellcheck
And verify it is available from your path:
# Arch Linux
pacman -S shellcheck
```sh
which shellcheck
shellcheck --version
```
If you wish to customize the warnings/errors reported you just need to create a `.shellcheckrc` file. You can do this in the root of your project or in your home directory (`~/.shellcheckrc`). See: [shellcheck documentation](https://github.com/koalaman/shellcheck/wiki/Ignore#ignoring-one-or-more-types-of-errors-forever) for more.
### See also:
- [Zed Docs: Language Support: Shell Scripts](./sh.md)

62
docs/src/languages/sh.md Normal file
View file

@ -0,0 +1,62 @@
# Shell Scripts
Shell Scripts (bash, zsh, dash, sh) are supported natively by Zed.
- Tree Sitter: [tree-sitter/tree-sitter-bash](https://github.com/tree-sitter/tree-sitter-bash)
## Settings
You can configure various settings for Shell Scripts in your Zed User Settings (`~/.config/zed/settings.json`) or Zed Project Settings (`.zed/settings.json`):
```json
"languages": {
"Shell Script": {
"tab_size": 2,
"hard_tabs": false
}
}
```
### Formatting
Zed supports auto-formatting Shell Scripts using external tools like [`shfmt`](https://github.com/patrickvane/shfmt).
1. Install `shfmt`:
```sh
brew install shfmt # macos (homebrew)
sudo apt-get install shfmt # debian/ubuntu
dnf install shfmt # fedora
yum install shfmt # redhat
pacman -Sy shfmt # archlinux
choco install shfmt # windows (chocolatey)
```
2. Ensure `shfmt` is available in your path and check the version:
```sh
which shfmt
shfmt --version
```
3. Configure Zed to automatically format Shell Scripts with `shfmt` on save:
```json
"languages": {
"Shell Script": {
"format_on_save": "on",
"formatter": {
"external": {
"command": "shfmt",
// Change `--indent 2` to match your preferred tab_size
"arguments": ["--filename", "{buffer_path}", "--indent", "2"]
}
}
}
}
```
## See also:
- [Zed Docs: Language Support: Bash](./bash.md)
- [Zed Docs: Language Support: Fish](./fish.md)