A language server implementing the Microsoft Language Server Protocol for Ada, SPARK, and GPR project files.
The Ada Language Server is an open-source server that implements the Microsoft Language Server Protocol (LSP) for the Ada and SPARK programming languages. It provides core IDE features such as code completion, navigation, refactoring, and symbol search directly within code editors that support LSP. It solves the problem of fragmented tooling by offering a standardized, editor-agnostic intelligence layer for Ada/SPARK development.
Ada and SPARK developers using editors like VS Code, Vim, Neovim, or Emacs who want modern IDE features like go-to-definition and refactoring. It is also for teams managing projects with GNAT project files (GPR).
Developers choose the Ada Language Server because it brings a consistent, feature-rich development experience across virtually any code editor via the standard LSP protocol. It is maintained by AdaCore, ensuring deep integration with the Ada/SPARK toolchain and GNAT project ecosystem.
Server implementing the Microsoft Language Protocol for Ada and SPARK
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Works with any LSP-compatible editor like VS Code, Vim, Neovim, and Emacs, providing detailed integration examples in the README for a consistent cross-platform experience.
Offers comprehensive language-specific features such as code completion for aggregates, go-to-definition, and automated refactoring like inserting named associations, tailored for Ada and SPARK.
Integrates seamlessly with GNAT project files for project-aware analysis and provides LSP features for GPR files themselves, enhancing project management and configuration.
Includes specialized refactorings such as auto-adding 'with'-clauses, which are documented in the refactoring tools section to streamline common Ada development tasks.
Consumes approximately 300MB per 100,000 lines of code plus 450MB runtime, with increased usage for generics and tagged types, as explicitly warned in the Memory Consumption section.
Requires running two separate server instances to support both Ada/SPARK and GPR files simultaneously, as stated when using the --language-gpr option, adding complexity.
Known problems with Property_Error exceptions can block analysis across entire projects, necessitating workarounds like excluding files, as admitted in the Known Problems section.