Language Server Protocol

The Language Server Protocol (LSP) is an open, JSON-RPC-based protocol for use between source code editors or integrated development environments (IDEs) and servers that provide "language intelligence tools":[1] programming language-specific features like code completion, syntax highlighting and marking of warnings and errors, as well as refactoring routines.

The goal of the protocol is to allow programming language support to be implemented and distributed independently of any given editor or IDE.

On June 27, 2016, Microsoft announced a collaboration with Red Hat and Codenvy to standardize the protocol's specification.

[5] Modern IDEs provide programmers with sophisticated features like code completion, refactoring, navigating to a symbol's definition, syntax highlighting, and error and warning markers.

Additionally, language services must be able to handle source code that is not well-formed, e.g. because the programmer is in the middle of editing and has not yet finished typing a statement, procedure, or other construct.

In order to provide instant feedback to the user, the editing tool must be able to very quickly evaluate the syntactical and semantical consequences of a specific modification.

Compilers and interpreters therefore provide a poor candidate for producing the information needed for an editing tool to consume.

The client informs the server about what the user is doing, e.g., opening a file or inserting a character at a specific text position.