Language Server Protocol for Vala

Language Server Protocol Specification provides the structures clients can understand, so servers should provide and response on requests and notifications interchange.

Vala Server Configuration

This is the first proposal of a LSP server for Vala. Client should return a configuration object with the following content:

{
    "initialized":true,
    "defaultNamespaces":true,
    "defaultVapiDirs":true,
    "scanWorkspace":true,
    "addUsingNamespaces":true,
    "mesonBuildSystem":true,
    "libraryVapi":"",
    "systemVapi":"",
    "files":[],
    "packages":[],
    "valaArgs":[],
    "options":[],
    "targets": [],
    "mesonCompileCommands":"",
    "mesonTargetsIntro":""
}

Initialized

Type: bool

This parameters states the configuration has been initialized correctly, when is set to TRUE.

defaultNamespaces

Type: bool

Compiler should add default namespaces (GLib).

defaultVapiDirs

Type: bool

If TRUE,Compiler should seek for VAPI at current installation default dirs.

scanWorkspace

Type: bool

If TRUE, server will scan files and subdirectories for Vala and compabible files, like Genie.

addUsingNamespaces

Type: bool

While parsing files, if TRUE, any using directive will be used to add all symbols in the given namespace, by searching in the defaultVapiDirs the VAPI providing it.

mesonBuildSystem

Type: bool

If TRUE, the build system is using Meson Build System, so server can scan meson build files, for targets.

libraryVapi

Type: string

A path to the default library for VAPI files, to seek in. This is useful when using an IED in a sanboxing environment, because the guest SDK could provide Vala, but the project will use the host installed Vala version or other SDK.

The path looks like /usr/share/libvala-??/vapi, where ?? is the Vala API version.

systemVapi

Type: string

A path to the system installed VAPI files, to seek in. This is useful when using an IED in a sanboxing environment, because the guest SDK could provide Vala, but the project will use the host installed Vala version or other SDK.

The path looks like /usr/share/vala/vapi.

systemVapi

Type: string

A path to the system installed VAPI files, to seek in. This is useful when using an IED in a sanboxing environment, because the guest SDK could provide Vala, but the project will use the host installed Vala version or other SDK.

The path looks like /usr/share/vala/vapi.

mesonTargetsIntro

The contents of meson-info/targets-intro.json, as the prefered way to get target's introspection information

mesonCompileCommands

The contents of compile_commands.json, as a way to know targets introspection, but is preferred to provide mesonTargetsIntro.

Deprecated configuration

files

Type: [s]

An array of strings, with the URI of each file to be used by the diagnostics. Typically, the project's files.

packages

Type: [s]

An array of strings, the name of the packages to be used by diagnostics. Examples are: glib-2.0 and gtk-3.0.

valaArgs

Type: [s]

An array of strings, the switches to be used by diagnostics when compiling sources. Example are: --abi-compatibility

options

Type: [s]

An array of dictionary entries, with a name as a key and its value, useful to configure the server. The options are out of the scope of this specification.

targets

Type: [{ "name": "", "files":[], "packages":[], "valaArgs":[]}]

An array of dictionaries, with the configuration per target where:

Per target definition

A target is a dictionary with the following, entries:

name

Type: string

Target's name from the build system, normally an executable or library.

files

Type: [s]

An array of strings, with the URI of each file to be used by the diagnostics. This is the target's files.

packages

Type: [s]

An array of strings, the name of the packages to be used by diagnostics per target. Examples are: glib-2.0 and gtk-3.0.

valaArgs

Type: [s]

An array of strings, the switches to be used by diagnostics when compiling sources per target. Example are: --abi-compatibility

Projects/Vala/LanguageServerSpecifications (last edited 2020-08-01 21:40:18 by DanielEspinosaOrtiz)