Skip to content

Language server code structure

The diagram below shows how the server code is organized within the project:

flowchart LR
    E[Language Server code] --> P
    E --> S
    E --> I

P("`**Providers**
Language features such as diagnostics, completion, hover, go-to definition`")
S("`**Services**
Ansible binary executions used as services for various language features`")
I("`**Interfaces**
Additional code and configurations require for the services`")

Note

The diagram does not include: - server.ts file - This the entry point is always at the root of src folder (Refer to the project structure). - test files - Tests are organized differently and are explained later (Refer to test structure).

The server code is divided into 3 parts and the explanation is mentioned below.

Providers

The implementation of all the language features for Ansible, such as semantics, auto-completion, validation, hover, and go-to definition, are in this sub-folder.

Services

The language features use various Ansible binaries behind the scenes. Implementations and runners for these binaries are located in this sub-folder.

Interfaces

This sub-folder contains types and configurations used for different features across the extension.