Codenvy, Microsoft and Red Hat have banded together to bring a more consistent developer experience across different code editors, by way of a new protocol that would allow any editing tool to check user’s code against a set of rules and best practices formed for each language.
For the keepers of programming languages, the Language Server Protocol project could help them provide better support for their users, without worrying about the underlying platform.
With these specifications, code editors can offer advanced functionality such as syntax analysis, code completion, outlining and refactoring that are designed for specific languages. Thus far, Microsoft Visual Studio Code and, later this year, Codenvy’s Eclipse Che collaborative code editor both support the protocol.
The technology was announced during Red Hat’s DevNation 2016 conference, being held this week in San Francisco.
“This addresses a problem that no one really talks about, that programming languages generally don’t work well between different IDEs, particularly with important things like refactoring and jumping to definitions,” said Tyler Jewell, Codenvy CEO and project lead of Codenvy. “These are capabilities usually built into the language itself.”
The Language Server Protocol is a JSON-based data exchange protocol, which serves as a connecting point between the user’s editor and the server holding the language specifications. The aim of the protocol is to make “any programming language work with any code editor,” Jewell said.
When the user edits a document in a supporting editor, changes are relayed to the programming server, which analyzes the semantic state of the program and any changes, looking for errors or warnings it can flag for the developer. For desktop editors, the service can run as a background daemon on the user’s machines in subsequent uses.
“This is the way we can decouple the installation of the IDE apart from the language intelligence,” Tyler said.
Today, JSON, C++, and Powershell are available for VS Code or VS Code extensions. Later this year, language packs will be available for C# (through work done in the Omnisharp project), xText and R (both from Typefox), JavaFX (from Ensime) and CSS (Microsoft). Red Hat is building a Java language server, which it plans to donate to the Eclipse Foundation.
The code for the protocol is hosted on GitHub and licensed under the creative commons and MIT licenses.
All the language servers will be published as part of a global repository, managed by Codenvy as an Eclipse project and hosted by the Eclipse Foundation.
Feature image: Tyler Jewell, speaking at DevNation 2016. Photo by Alex Williams.