This repository contains the code for the following npm modules:
- vscode-languageclient: npm module to talk to a VSCode language server from a VSCode extension:
- vscode-languageserver: npm module to implement a VSCode language server using Node.js as a runtime:
- vscode-languageserver-types: data types used by the language server client and server:
- vscode-jsonrpc: the underlying message protocol to communicate between a client and a server:
All four npm modules are built using one travis build. Its status is:
Click here for a detailed document on how to use these npm modules to implement language servers for VSCode.
- 3.0.0-alpha.x: Client, Server and JSON-RPC
- Moved all libraries to TypeScript 2.0.3
- Client and Server are compiled to ES6. JSON-RPC is still compiled to ES5.
- JSON-RPC supports n parameter request and notification invocation
- Breaking changes:
- due to the use of TypeScript 2.0.3 and differences in d.ts generation users of the new version need to move to TypeScript 2.0.3 as well.
- Request and notification types have an additional property '_'. This property is to improve TypeScript type inference and can savely be set to undefined when a request of notification type is created. For example:
export namespace CompletionRequest {
export const type: RequestType<TextDocumentPositionParams, CompletionItem[] | CompletionList, void> = {
get method() { return 'textDocument/completion'; },
_: undefined
};
}-
2.6.0: Client and Server
- Support for Document Link Providers
- Support for additional text edits and commands in completion items.
-
2.5.0: Client and Server
- Better error handling on client side.
- Events for starting and stopping the server.
- Initialization options can be provided as a function.
- Support for stdio / stderr encoding.
- Support to convert URIs betweeen the client and the server.
- Server connection.console logging now appears in the corresponding output channel instead of in the developer console.
- If a non stdio communicaiton channel is used between client and server the server's stdio is redirected to the output channel.
- A client can now have an id and a name.
-
2.4.0 Client and Server
- Data types such as Range, Position, TextDocument, Hover, CompletionItem... extracted to new node module vscode-languageserver-types. The new node module is shared between the server and client and can also be used by language service libraries that want to use the same data types.
-
2.3.0: Client only
- the client now restarts the server if the server crashes without a prior exit notification sent. The strategy used to restart
the server is pluggable (see
LanguageClientOptions.errorHandler). The default strategy restart the server unless it crashed 5 times or more in the last 3 minutes.
- the client now restarts the server if the server crashes without a prior exit notification sent. The strategy used to restart
the server is pluggable (see
-
2.0: A detailed desciption of the 2.0 version can be found here. A summary of the changes:
- support for request cancellation. Cancellation is automatically hooked to VSCode's cancellation tokens
- document save notification.
- Synced text documents carry VSCode's text document version number
-
1.1.x: Provides all language service feature available in the extension host via the language client / server protocol. Features added:
- Code Actions: provide actions to fix diagnostic problems.
- Code Lens: provide commands that are shown along with source text.
- Formatting: whole document, document ranges and formatting on type.
- Rename refactoring: provides renaming symbols.
-
1.0.x: Version which provides support for the following features:
- Transports: stdio and node IPC can be used as a transport.
- Document synchronization: incremental and full text document synchronization.
- Configuration synchronization: synchronization of configuration settings to the server.
- File events: synchronization of file events to the server.
- Code Complete: provides code complete lists.
- Document Highlights: highlights all 'equal' symbols in a text document.
- Hover: provides hover information for a symbol selected in a text document.
- Signature Help: provides signature help for a symbol selected in a text document.
- Goto Definition: provides goto definition support for a symbol selected in a text document.
- Find References: finds all project-wide references for a symbol selected in a text document.
- List Document Symbols: lists all symbols defined in a text document.
- List Workspace Symbols: lists all project-wide symbols.
-
0.10.x: Intial versions to build a good API for the client and server side