🐟 Language Server Protocol

fish-lsp

Full LSP support for the fish shell — completions, hover docs, go‑to‑definition, rename, and workspace analysis.

Get Started → View Source
Capabilities

What fish-lsp provides

Completions
Context-aware completions with chained flag support and local symbol lookup.
📖
Hover Docs
Inline docs for commands, flags, and functions from ~/.config/fish.
🔍
Go-to Definition
Jump to any symbol definition across your entire workspace.
🔗
Find References
Scope-aware search — locally-shadowed symbols excluded.
✏️
Rename
Safe workspace-wide rename respecting fish scoping rules, contextually infering valid rename ranges preventing incorrect matches
🎨
Formatting & Folding
Full document and range formatting. Formatting on input typing and folding elements supported as well
🎨
Semantic Highlighting
Context-aware syntax highlighting (in supported editors) of semantic tokens.
🧠
Background Analysis
Non-blocking startup analysis to process entire workspace wide documents during server initialization.
🗂️
Document/Workspace Symbols
Symbol recognition infered via definition context, allowing for both local document & full workspace querying
💡
Code Actions & Diagnostics
Linting diagnostics and quick fixes from the language server.
👻
Inlay hints
Virtual hint documentation for special commands.
Playground

Test directly in your web browser

New

Try out the fish-lsp playground in your browser

Powered by Monaco Editor and a live language server — no install required.

Open Playground ↗
Install

Get running in seconds

# install globally
npm install -g fish-lsp
# verify
fish-lsp info

Need more detail? See the full installation guide →

Documentation

Everything you need

Getting Started
Introduction
Explaining and introducing how to properly setup and configure the fish-lsp server for your development environment.
Getting Started
Installation
Install fish-lsp via a package manager, a standalone binary, or from source
Getting Started
Building from Source
Clone the repo and build fish-lsp locally with yarn
Configuration
Client Configurations
Configure fish-lsp with Neovim, VSCode, Emacs, Helix, and other LSP clients
Configuration
Server Configurations
Configure any `fish-lsp` client connection to use default global settings
Reference
Features
Complete list of fish-lsp LSP capabilities and their status
Reference
CLI Commands
Reference for the fish-lsp command, its subcommands, and common flags
Reference
How It Works
Architecture overview — tree-sitter, workspace analysis, and the LSP lifecycle
Reference
Debugging
Troubleshoot fish-lsp installation, startup, and editor connection issues
Reference
Diagnostic Error Codes
fish-lsp diagnostic error codes reference table
Reference
Abbreviations
fish-lsp `abbr` commands to simplify commonly used commands
Reference
Sources
Sources and references that were used to help build the project.