Beacon Language Server
Beacon's Language Server Protocol (LSP) implementation bridges the Rust-based analyzer with editors such as Zed, VSCode/VSCodium, Neovim, and Helix. This chapter documents the system from high-level goals to feature-by-feature behaviour.
LSP Capabilities Quick Reference
Beacon implements the following LSP features:
- Diagnostics: Real-time syntax, semantic, and type error reporting
- Hover: Context-sensitive type information and documentation
- Completion: Symbol table-based completions
- Navigation: Go to definition, find references, document highlights
- Symbols: Document outline and workspace fuzzy search
- Semantic tokens and inlay hints
- Refactoring: Rename, code actions, quick fixes
See Feature Providers for detailed implementation.
Documentation Overview
Use the sidebar to jump into any topic, or start with the sections below:
- Goals And Scope - what the server delivers today and what is intentionally out of scope.
- Architecture Overview - how shared state, concurrency, and feature wiring are structured.
- Document Pipeline - how file contents become parse trees, ASTs, and symbol tables.
- Caching - multi-layer cache architecture and invalidation strategies for fast incremental updates.
- Feature Providers - the capabilities exposed via LSP requests and notifications.
- Request Lifecycles - end-to-end flows for initialization, diagnostics, completions, and more.
- Workspace Services - cross-file features and emerging workspace indexing plans.
- Testing Strategy - automated coverage for providers and backend flows.
- Current Limitations - known gaps and trade-offs in the current implementation.
- Next Steps - near-term improvements on the roadmap.
If you are new to the Language Server Protocol itself, read the primer in Learn → Language Server Protocol before diving into these implementation details.