Language Server Protocol

50 views
Skip to first unread message

Neil Hodgson

unread,
Nov 4, 2016, 4:07:36 AM11/4/16
to Scintilla mailing list, scite-i...@googlegroups.com
The Language Server Protocol is a way to provide features like file checking and calltips to editors and IDEs for a variety of programming and document languages. Each language has its own server that can be used from different editors. Each editor only has to implement a generic method for all the languages instead of making each language work.

The features that may be provided by a language server include populating autocompletion lists, providing function signature information for calltips, displaying inline warnings from compilers and linters, and showing where an identifier is defined or where that identifier is referenced.

Microsoft’s Visual Studio Code is currently the main user of language servers and it comes bundled with several. Other editors are implementing the protocol and language communities are working on servers for their languages.

It would be great for SciTE and other Scintilla-based editors to implement LSP. It may be possible to share some implementation code between projects. LSP is based on JSON-RPC (http://www.jsonrpc.org/specification) and there is an MIT-licensed C++ library for JSON-RPC at https://github.com/cinemast/libjson-rpc-cpp . Most of Microsoft’s servers are written in TypeScript which compiles to JavaScript while others have been implemented in and for Java, Go, PHP, and Rust.

https://code.visualstudio.com/blogs/2016/06/27/common-language-protocol
https://github.com/Microsoft/language-server-protocol

Protocol reference:
https://github.com/Microsoft/language-server-protocol/blob/master/protocol.md

List of language servers:
https://github.com/Microsoft/language-server-protocol/wiki/Protocol-Implementations

Reply all
Reply to author
Forward
0 new messages