dradtke / vala-language-server

Code Intelligence for Vala

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Vala Language Server

Gitter

Installation

We recommend using VSCode with the Vala plugin.

  • Guix: guix install vala-language-server

  • Arch Linux (via AUR): yay -S vala-language-server or yay -S vala-language-server-git

  • Alpine Linux Edge: apk add vala-language-server

  • Ubuntu 18.04, 20.04 and elementaryOS

    In order to install VLS, you need Vala 0.48 or later, which is only available by default on Ubuntu 20.04. You can get an up-to-date version of Vala from the Vala Team's Vala-Next repository. First you need to remove older Vala components:

    sudo apt-add-repository ppa:vala-team/next
    # If you have 0.40 and 0.48, there may be random issues popping out
    sudo apt-get remove valac-0.40-vapi "libvala.*-0.40-0"
    sudo apt-get install valac-0.48 valac-bin

    Now you can install the Vala Language Server:

    sudo add-apt-repository ppa:prince781/vala-language-server
    sudo apt-get update
    sudo apt-get install vala-language-server
  • Fedora 32:

    sudo dnf copr enable prince781/vala-language-server
    sudo dnf -y install vala-language-server

vls-vscode vls-vim vls-gb

Table of Contents

Features

  • diagnostics
  • code completion
    • basic (member access and scope-visible completion)
    • advanced (context-sensitive suggestions)
  • document symbol outline
  • goto definition
  • symbol references
  • goto implementation
  • signature help
    • active parameter support requires upstream changes in vala and is disabled by default. use meson -Dactive_parameter=true to enable. see this MR. VLS by default uses a workaround that should satisfy 90% of cases.
  • hover
  • symbol documentation
    • basic (from comments)
    • advanced (from GIR and VAPI files)
      • this feature may be a bit unstable. If it breaks things, use meson -Dparse_system_girs=false to disable
  • search for symbols in workspace
  • highlight active symbol in document
  • rename symbols
  • snippets
  • code actions
  • workspaces
  • supported IDEs (see Setup below):
    • vim with vim-lsp plugin installed
    • Visual Studio Code
    • GNOME Builder >= 3.36 with custom VLS plugin enabled (see below)
    • IntelliJ
  • supported project build systems
    • meson
    • compile_commands.json
    • autotoools
    • cmake

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
  • libvala-0.48 / vala-0.48 latest bugfix release
  • you also need the posix VAPI, which should come preinstalled

Install dependencies with Guix

To launch a shell with build dependencies satisfied:

guix environment vala-language-server

Setup

Building from Source

meson -Dprefix=$PREFIX build
ninja -C build
sudo ninja -C build install

This will install vala-language-server to $PREFIX/bin

With Vim

Once you have VLS installed, you can use it with vim.

coc.nvim

  1. Make sure coc.nvim is installed.
  2. After successful installation, in Vim run :CocConfig and add a new custom entry for VLS like below:
{
    ...

    "vala": {
        "command": "vala-language-server",
        "filetypes": ["vala", "genie"]
    },

    ...
}

vim-lsp

  1. Make sure vim-lsp is installed
  2. 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

With Visual Studio Code

With GNOME Builder

  • Support is currently available with Builder 3.35 and up
  • Running ninja -C build install should install the plugin to $PREFIX/lib/gnome-builder/plugins. Make sure you disable the GVLS plugin.

Contributing

Want to help out? Here are some helpful resources:

About

Code Intelligence for Vala

License:GNU Lesser General Public License v2.1


Languages

Language:Vala 97.2%Language:Python 2.0%Language:Meson 0.9%Language:Shell 0.0%