language-server-protocol/index.html
2017-12-19 12:05:41 +01:00

53 lines
3.2 KiB
HTML

---
layout: default
---
<div class="header-container jumbotron">
<div class="container">
<h1>Language Server Protocol</h1>
<p>
The Language Server Protocol (LSP) defines the protocol used between an editor or IDE to talk to a language server that provides language features like auto complete, goto definition, find all references.
</p>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-lg-12">
<h2 class="header-light regular-pad">What is the Language Server Protocol?</h2>
<blockquote>
<p>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 and this in different languages. It is not possible to share this language smartness across tools. The idea behind a <i>Language Server</i> is to provide the language smarts inside a server and using inter process communication and a protocl between the development tool and the this server to support a particular language. When each language server provides a different protocol then the tool integrator has to integrate support for each language differently. The idea behind the <i>Language Server Protocol</i> 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!
</p>
</blockquote>
</div>
</div>
<hr>
<div class="row">
<div class="col-lg-4">
<h1 class="text-center"><i class="fa fa-cogs" aria-hidden="true"></i></h1>
<a href='{{ "/howItWorks" | prepend: site.baseurl }}'><h3 class="text-center">How the Protocol Works</h3></a>
<p>
The protocol defines the format of the messages sent using JSON-RPC between development tool and the language server.
</p>
</div>
<div class="col-lg-4">
<h1 class="text-center"><i class="fas fa-code-branch" aria-hidden="true"></i></h1>
{% assign sorted = site.implementors | sort: 'index' %}
<a href = "{{ sorted.first.url | prepend: site.baseurl }}"><h3 class="text-center">Implementations</h3></a>
<p>
The LSP has been implemented for many languages and many development tools integrate these language servers. To simplify the implementation and integration of LSP there are different libraries/SDKs available.
</p>
</div>
<div class="col-lg-4">
<h1 class="text-center"><i class="far fa-clock" aria-hidden="true"></i></h1>
<a href='{{ "/specification" | prepend: site.baseurl }}'><h3 class="text-center">Specification</h3></a>
<p>
The lastet version of the protocol specification is version 3.0.
</p>
</div>
</div>
</div>