Vala Language Server
This is a language server for the Vala programming language.
Installation
We recommend using VSCode with the Vala plugin.
-
Arch Linux (via AUR): yay -S vala-language-server
or yay -S vala-language-server-git
-
Fedora (official): sudo dnf install vala-language-server
-
elementaryOS: sudo apt install vala-language-server
-
Alpine Linux: apk add vala-language-server
-
Guix: guix install vala-language-server
-
Void Linux: xbps-install vala-language-server
-
Windows (via MSYS2): pacman -S mingw-w64-x86_64-vala-language-server
…and more. See below:


Table of Contents
Features
Dependencies
glib-2.0
gobject-2.0
gio-2.0 and either gio-unix-2.0 or gio-windows-2.0
gee-0.8
json-glib-1.0
jsonrpc-glib-1.0 >= 3.28
libvala >= 0.48.12
- you also need the
posix VAPI, which should come preinstalled
- uncrustify, for formatting (optional)
Install dependencies with Guix
If you’re using Guix, to launch a shell with build dependencies satisfied:
guix environment vala-language-server
Building from Source
meson -Dprefix=/usr build
ninja -C build
sudo ninja -C build install
This will install vala-language-server to /usr/bin
Editors
An important note: VLS cannot know what arguments are used for the file you are editing unless it can locate a build script, compile commands list, or shebang to analyze. (This is generally true for most language servers of compiled languages.) Before making an issue, check whether you have a build script or shebang for your file.
vim and neovim
coc.nvim
- Make sure coc.nvim is installed.
- After successful installation, in Vim run
:CocConfig and add a new entry
for VLS to the languageserver property like below:
{
"languageserver": {
"vala": {
"command": "vala-language-server",
"filetypes": ["vala", "genie"]
}
}
}
vim-lsp
- Make sure vim-lsp is installed
- Add the following to your
.vimrc:
if executable('vala-language-server')
au User lsp_setup call lsp#register_server({
\ 'name': 'vala-language-server',
\ 'cmd': {server_info->[&shell, &shellcmdflag, 'vala-language-server']},
\ 'whitelist': ['vala', 'genie'],
\ })
endif
nvim-lspconfig
require'lspconfig'.vala_ls.setup {
-- defaults, no need to specify these
cmd = { "vala-language-server" },
filetypes = { "vala", "genie" },
root_dir = root_pattern("meson.build", ".git"),
single_file_support = true,
}
Visual Studio Code
GNOME Builder
- requires GNOME Builder >= 3.35
- Running
ninja -C build install should install the third-party plugin to $PREFIX/lib/gnome-builder/plugins. Enable Vala and disable GNOME Vala Language Server.
Kate
- officially supported in Kate git master
- Warning: Kate will silently fail to find symbols when meson cannot be found in path without notifying the user.
Emacs
Sublime Text
- Install the Vala-TMBundle and LSP packages
- Add this to your
LSP.sublime-settings:
{
"clients": {
"vala-language-server": {
"command": [
"/usr/bin/vala-language-server"
],
"selector": "source.vala | source.genie",
"enabled": true
}
}
}
- Run
Tools > LSP > Enable Language Server Globally... > vala-language-server
Specifying dependencies
If you’re using meson, vala-language-server will automatically detect the packages you depend on.
If you just want to write a quick script without a build system, you can add a shebang line to the top of your .vala file:
#!/usr/bin/env -S vala --pkg gtk4
Contributing
Want to help out? Here are some helpful resources:
评论