Ferret Language Support
Zed language support for the current Ferret language revision.
This extension currently provides:
- Tree-sitter based parsing
- syntax highlighting
- bracket matching
- indentation rules
.ferfile recognition- LSP wiring (
ferret lsp)
LSP command resolution
The extension resolves the language server command in this order:
lsp.ferretls.binary.path(if configured)ferretfrom your PATH (worktree.which("ferret"))
The extension passes lsp as default args. You can override args with lsp.ferretls.binary.arguments.
Example Zed settings:
{
"lsp": {
"ferretls": {
"binary": {
"path": "/home/fuad/Dev/Ferret-Language/Ferret/bin/ferret",
"arguments": ["lsp"]
}
}
}
}LSP settings key
Zed LSP settings are read from ferretls via:
initialization_optionssettings
Command launch configuration is read separately from lsp.ferretls.binary.
The current Ferret-compiler-v2/compiler/cmd CLI exposes an lsp subcommand, so no external server binary is required by default.
Steps to Update an Extension Submodule
1. Check Current Status
git submodule statusThis shows which submodules have updates available.
2. Update the Submodule
git submodule update --remote extensions/ferretThis pulls the latest changes from the submodule's remote repository.
3. Update Version in extensions.toml
If the extension version changed, update the version number in extensions.toml:
[extension-name]
submodule = "extensions/extension-name"
version = "x.x.x" # Update this4. Stage and Commit Changes
git add extensions.toml extensions/[extension-name]
git commit -m "Update [extension-name] extension to version x.x.x"5. Push Changes
git pushExample: Updating Ferret Extension
# Check status
git submodule status
# Update submodule
git submodule update --remote extensions/ferret
# Update version in extensions.toml (if needed)
# Edit extensions.toml to bump version
# Stage and commit
git add extensions.toml extensions/ferret
git commit -m "Update ferret to vX.X.X"
# Push
git pushNotes
- Always check
git submodule statusfirst to see what needs updating - The submodule path is
extensions/[extension-name] - Version numbers should match what's in the extension's own repository
- Test locally before pushing if possible