vala-language-server
vala-language-server copied to clipboard
Code Intelligence for Vala & Genie
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-serveroryay -S vala-language-server-git -
Ubuntu, Fedora, Debian, openSUSE, and Mageia: install from the OBS repo
-
elementaryOS:
sudo apt install vala-language-server -
Alpine Linux:
apk add vala-language-server -
Guix:
guix install vala-language-server

Table of Contents
- Vala Language Server
- Table of Contents
- Features
- Dependencies
- Building from Source
- Editors
- Vim and Neovim
- Visual Studio Code
- GNOME Builder
- Kate
- Emacs
- Sublime Text
- Contributing
Features
- [x] diagnostics
- [x] code completion
- [x] member access and scope-visible completion
- [x] context-sensitive suggestions
- completions for abstract methods/properties to implement
- [x] symbol outline
- [x] goto definition
- [x] symbol references
- [x] goto implementation
- [x] signature help
- [x] hover
- [x] symbol documentation
- [x] from comments in source code
- [x] from GIR and VAPI files
- [x] search for symbols in workspace
- [x] highlight active symbol in document
- [x] rename
- [x] snippets
- for implementing abstract methods/properties
- [x] code lenses
- [x] code actions / quick fixes
- [x] code formatting
- [x] call hierarchy
- [x] inlay hints
- [ ] workspaces
- [ ] supported projects
- [x] meson
- [x]
compile_commands.json - [x] Vala script (file beginning with
#!/usr/bin/env -S valashebang) - [ ] cmake
- [ ] autotools
Dependencies
glib-2.0gobject-2.0gio-2.0and eithergio-unix-2.0orgio-windows-2.0gee-0.8json-glib-1.0jsonrpc-glib-1.0 >= 3.28libvala >= 0.48.12- you also need the
posixVAPI, which should come preinstalled
Uncrustify is required for formatting.
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
:CocConfigand add a new entry for VLS to thelanguageserverproperty 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
- For Neovim 0.5.0
- see
CONFIG.mdin that project
Visual Studio Code
GNOME Builder
- requires GNOME Builder >= 3.35
- Running
ninja -C build installshould install the third-party plugin to$PREFIX/lib/gnome-builder/plugins. EnableValaand disableGNOME Vala Language Server.
Kate
- officially supported in Kate git master
Emacs
- supported with the lsp-mode plugin
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
Contributing
Want to help out? Here are some helpful resources:
- Help is wanted on these issues
#valaon gimpnet/IRC is for general discussions about Vala and collaboration with upstream- Discord server is for general discussions about Vala, discussions about this project, and support
- Gitter room is also for project discussions and support, but is less active: https://gitter.im/vala-language-server/community
- Vala wiki: https://wiki.gnome.org/Projects/Vala/
- libvala documentation: https://gnome.pages.gitlab.gnome.org/vala/docs/index.html