diff --git a/howItWorks.md b/overview.md similarity index 81% rename from howItWorks.md rename to overview.md index da23267..28b4261 100644 --- a/howItWorks.md +++ b/overview.md @@ -1,9 +1,18 @@ --- -title: How it Works +title: Overview layout: singlePage -sectionid: howItWorks +sectionid: overview --- +## What is the Language Server Protocol? +Implementing language support like auto complete, goto definition, or type hovering for a programming language for different development tools is a significant effort. Each development tool provides different APIs for language extenders. Moreover, an extension has to be implemented in the implementation language of the tool itself. + +This requires to implement the smartness for a language multiple times. The idea behind a Language Server is to provide the language smarts inside a server and using inter process communication and a protocol to talk to this server. If each language server speaks a different protocol then the integration of each server into each tool is custom. + +The idea behind the Language Server Protocol is to standardize this protocol and therefore to simplify the integration of different language servers in a development tool. This is a win for both the language provider and the development tool provider! + +## How it works + A language server runs as a separate process and development tools communicate with the server using the language protocol over JSON-RPC. Below is an example for how a tool and a language server communicate during a routine editing session: language server protocol