Skip to content

AlexTugarev/vscode-languageserver-node

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

293 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VSCode Language Server - Node

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:
    NPM Version NPM Downloads
  • vscode-languageserver: npm module to implement a VSCode language server using Node.js as a runtime:
    NPM Version NPM Downloads
  • vscode-languageserver-types: data types used by the language server client and server:
    NPM Version NPM Downloads
  • vscode-jsonrpc: the underlying message protocol to communicate between a client and a server:
    NPM Version NPM Downloads

All four npm modules are built using one travis build. Its status is:

Build Status

Click here for a detailed document on how to use these npm modules to implement language servers for VSCode.

History

  • 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.
  • 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

License

MIT

About

Language server protocol implementation for VSCode. This allows implementing language services in JS/TS running on node.js

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages