fish-lsp is a language server for the fish shell. Written in typescript, it provides completions, hover information, diagnostics, and many other text-editing features for fish scripts.
This is an ambitious personal project I’ve taken on out of my love for the community and overall language of the fish shell. It contains a relatively large and complex code-base, that anyone is welcome to contribute to (guidelines here).
Dependencies for the project
- vscode-languageserver - the language server protocol
- web-tree-sitter - the tree-sitter library to read the web-assembly
- tree-sitter-fish - builds the AST for fish shell input
- commander - framework for building CLI executables in node
- zod - schema validation for user configuration
- husky - git hooks
- eslint - linting/formatting typescript code throughout the project
- jest - testing for the project
- knip - tree-shaking and other useful development tools
Links
The website’s homepage, fish-lsp.dev, contains up-to-date links to the information below.
- github - entire project’s source code
- discussions - insightful conversations on the project
- contributing - guidelines for how to contribute
- roadmap - future goals and milestones
- wiki - more info to the project
- npm - node packaged release
- fish-lsp-language-clients - implementing the language server in various clients