What is vscode-languageserver?
The vscode-languageserver package is designed to help developers create language servers for the Visual Studio Code editor. It provides the necessary APIs to implement language features such as auto-completion, go-to definition, or linting. This package is part of the Language Server Protocol (LSP), which standardizes the communication between editors or IDEs and language servers.
What are vscode-languageserver's main functionalities?
Initialization and Connection Setup
This feature allows the language server to establish a connection with the client (e.g., VS Code). The server listens for messages from the client to start providing language services.
{"createConnection": "require('vscode-languageserver').createConnection", "listen": "connection.listen()"}
Document Synchronization
Keeps the language server's document model in sync with the changes made in the editor. This is crucial for providing accurate language features.
{"onDidChangeTextDocument": "connection.onDidChangeTextDocument((change) => {})"}
Providing Completion Items
Enables the language server to provide context-aware completion suggestions (e.g., code snippets, method names) to the user.
{"onCompletion": "connection.onCompletion((textDocumentPosition) => { return [{ label: 'TypeScript', kind: CompletionItemKind.Text }]; })"}
Diagnostics
Allows the language server to send issues in the code (e.g., syntax errors, lint warnings) to the client, which can then display them to the user.
{"sendDiagnostics": "connection.sendDiagnostics({ uri: document.uri, diagnostics: [] })"}
Other packages similar to vscode-languageserver
monaco-languageclient
Provides similar functionalities as vscode-languageserver but targets the Monaco editor, which is the code editor that powers VS Code. It allows developers to integrate language features into web applications.
atom-languageclient
A library that helps developers integrate language servers with the Atom editor. It mirrors many of the capabilities of vscode-languageserver, adapting them for the Atom environment.
VSCode Language Server
Npm module to implement a VSCode language server using Node.js as a runtime.
Click here for a detailed document on how to use this npm module
to implement language servers for VSCode.
History
For the history please see the main repository
License
MIT