yuyi98 / vls

V language server

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

NOTE!: You are reading a developmental branch of VLS, that uses the Tree-sitter Parser. This is not meant for the general public as it does not do any language features at this moment.

VLS is a work-in-progress, pre-alpha language server. It may not be guaranteed to work reliably on your system due to memory management issues and other factors.



VLS (V Language Server) is a LSP v3.15-compatible language server for the V programming language.


You need to have Git and V installed before compiling the language server. You need to execute the following:

## Install the tree-sitter grammar for V first:
git clone https://github.com/nedpals/tree-sitter-v ~/.vmodules/tree_sitter_v

## Clone the project at the use-tree-sitter branch:
git clone https://github.com/vlang/vls.git --branch use-tree-sitter vls && cd vls/

## Build the project
v cmd/vls
# The binary will be created in the subfolder `cmd/vls` by default.


NOTE: VLS only officially supports VSCode for now (vls#52).

In order to use the language server, you need to have a text editor with support for LSP. In this case, the recommended editor for testing (for now) is to have Visual Studio Code and the vscode-vlang extension version 0.1.4 or above installed.


Afterwards, go to your editor's configuration and scroll to the V extension section. From there, enable VLS by checking the box and input the absolute path of the vls language server executable. If you cloned the repository and compiled it from source, the executable will be in the cmd/vls directory. So make to add cmd/vls/vls.


  • Queue support (support for cancelling requests)


  • initialize (Activates features based on VSCode's capabilities for now.)
  • initialized
  • shutdown
  • exit
  • $/cancelRequest


  • showMessage
  • showMessageRequest
  • logMessage
  • progress/create
  • progress/cancel


  • event (Implemented but not usable)


  • registerCapability
  • unregisterCapability


  • workspaceFolders
  • didChangeWorkspaceFolder
  • didChangeConfiguration
  • configuration
  • didChangeWatchedFiles
  • symbol
  • executeCommand
  • applyEdit

Text Synchronization

  • didOpen
  • didChange
  • willSave
  • willSaveWaitUntil
  • didSave
  • didClose


  • publishDiagnostics

Language Features

  • completion
  • completion resolve
  • hover
  • signatureHelp
  • declaration
  • definition
  • typeDefinition
  • implementation
  • references
  • documentHighlight
  • documentSymbol
  • codeAction
  • codeLens
  • codeLens resolve
  • documentLink
  • documentLink resolve
  • documentColor
  • colorPresentation
  • formatting
  • rangeFormatting
  • onTypeFormatting
  • rename
  • prepareRename
  • foldingRange


By default, log can only be accessed and saved on server crash. To save the log on exit, pass the --debug flag to the language server CLI.

VLS provides a log file (${workspacePath}/vls.log) for debugging language server for certain situations (e.g unexpected crash). To read the contents of the vls.log file, simply upload the file to the LSP Inspector and select vls.log.

LSP Inspector

Error Reporting

If you encounter a crash in the language server, be sure to attach the vls.log file when submitting an issue.


Submitting a pull request

  • Fork it (https://github.com/vlang/vls/fork)
  • Create your feature branch (git checkout -b my-new-feature)
  • Commit your changes (git commit -am 'Add some feature')
  • Push to the branch (git push origin my-new-feature)
  • Create a new Pull Request


ezoic increase your site revenue


V language server


Language:C 68.3%Language:V 30.4%Language:C++ 1.3%Language:AMPL 0.0%