Skip to content

Files

Latest commit

May 5, 2025
61352c0 · May 5, 2025

History

History
81 lines (56 loc) · 2.61 KB

README.md

File metadata and controls

81 lines (56 loc) · 2.61 KB

Bash for Zed

Tree Sitter: https://github.com/tree-sitter/tree-sitter-bash

Language Server: https://github.com/bash-lsp/bash-language-server

image.png

shellcheck

The bash-language-server support shellcheck. But you need to install it manually

brew install shellcheck         # macOS
sudo apt-get install shellcheck # ubuntu/debian
sudo pacman -S shellcheck       # Arch Linux
choco install shellcheck        # Windows (chocolatey)

Shellcheck ignores

If you wish to ignore certain ShellCheck warnings in your files you can add an inline comment # shellcheck disable=SC0000 specifying the warning/error.

Alternatively, if you'd like to ignore something for an entire file, put the comment at the top of the file. For example to ignore SC2034 foo appears unused. Verify it or export it. in an .env file it would look like so:

# shellcheck disable=SC2034
FOO=123
BAR="something"
DATABASE_URL="postgres://something"

shfmt

bash-language-server can support formatting using shfmt if it is available in your path. Install with:

brew install shfmt         # macOS
sudo apt-get install shfmt # ubuntu/debian
sudo pacman -S shfmt       # Arch Linux
choco install shfmt        # Windows (chocolatey)

To control automatic formatting, in your Zed settings use format_on_save or manually invoke editor: format document from the command palette.

tldr vs man

bash-language-server use man to show document 👀

The markdown rendering is completely bad

So, let's just use the documentation provided by tldr (it's really a markdown display!)

github: https://github.com/d1ylab/bash-language-server

npm: https://www.npmjs.com/package/neo-bash-ls

After Before
image.png image.png

Apply the patch

diff --git a/src/bash.rs b/src/bash.rs
index d9cdd6b..d8fc8f5 100644
--- a/src/bash.rs
+++ b/src/bash.rs
@@ -1,8 +1,8 @@
 use std::{env, fs};
 use zed_extension_api::{self as zed, Result};

-const SERVER_PATH: &str = "node_modules/bash-language-server/out/cli.js";
-const PACKAGE_NAME: &str = "bash-language-server";
+const SERVER_PATH: &str = "node_modules/neo-bash-ls/out/cli.js";
+const PACKAGE_NAME: &str = "neo-bash-ls";

 struct BashExtension {
     did_find_server: bool,