Skip to content

mborodin/ada_language_server

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ada Language Server

Build Status Download

This repository contains a prototype implementation of the Microsoft Language Server Protocol for Ada/SPARK.

Current features:

  • GNAT project files
  • Code completion
  • Go to definition
  • Find corresponding references
  • Document symbol search

We also provide Visual Studio Code extension as .vsix file.

Install

You can install binary image or build language server from sources.

To install binary image download an archive corresponding to your OS and unpack it somewhere. You will find ada_language_server inside unpacked folder. We provide binaries for

To build is from source install dependencies and run

make

It will build .obj/server/ada_language_server file.

Dependencies

To build the language server you need at least a version of the GNAT compiler, and the Libadalang library to be built and available via the GPR_PROJECT_PATH.

To run the language server you need gnatls (parts of GNAT installation) somewhere in the path.

Usage

The ada_language_server doesn't require/understand any command line options.

Debugging

You can activate traces that show all the server input/output. This is done by creating a file $HOME/.als/traces.cfg with the following contents:

ALS.IN=yes > in.txt:buffer_size=0
ALS.OUT=yes > out.txt:buffer_size=0

When this is present, the ALS will generate files $HOME/.als/in.txt and $HOME/.als/out.txt which contain, respectively, the JSON received and sent by the ALS.

Supported LSP Server Requests

General Requests

Request Supported
initialize
initialized
shutdown
exit
$/cancelRequest

Workspace Requests

Request Supported
workspace/didChangeWorkspaceFolders
workspace/didChangeConfiguration
workspace/didChangeWatchedFiles
workspace/symbol
workspace/executeCommand

Synchronization Requests

Request Supported
textDocument/didOpen
textDocument/didChange
textDocument/willSave
textDocument/willSaveWaitUntil
textDocument/didSave
textDocument/didClose

Text Document Requests

Request Supported
textDocument/completion
completionItem/resolve
textDocument/hover
textDocument/signatureHelp
textDocument/definition
textDocument/typeDefinition
textDocument/implementation
textDocument/references
textDocument/documentHighlight
textDocument/documentSymbol
textDocument/codeAction
textDocument/codeLens
codeLens/resolve
textDocument/documentLink
documentLink/resolve
textDocument/documentColor
textDocument/colorPresentation
textDocument/formatting
textDocument/rangeFormatting
textDocument/onTypeFormatting
textDocument/rename
textDocument/prepareRename
textDocument/foldingRange

How to use VScode extension

For the moment, this repository includes a vscode extension that is used as the reference extension for this implementation.

You can try it by running:

code --extensionDevelopmentPath=<path_to_this_repo>/integration/vscode/ada <workspace directory>

You can configure the GNAT Project File and scenario variables via the .vscode/settings.json settings file, via the keys "ada.projectFile" and "ada.scenarioVariables".

Here is an example config file from the gnatcov project:

{
    "ada.projectFile": "gnatcov.gpr",
    "ada.scenarioVariables": {
        "BINUTILS_BUILD_DIR": "/null",
        "BINUTILS_SRC_DIR": "/null"
    }
}

Maintainer

@MaximReznik.

Contribute

Feel free to dive in! Open an issue or submit PRs.

License

GPL-3

About

prototype implementation of the Microsoft Language Server Protocol for Ada/SPARK

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Ada 97.8%
  • Other 2.2%