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.