We all have our favorite tools, something that we are used to or something that makes us most productive. Yet, it’s often that a particular language is not really supported by that favorite IDE or editor of ours. And even if it is supported it is clearly not at the level that we would expect from modern tooling. It’s obvious why that is, implementing a whole new integration takes time, mostly from OSS contributors, and is certainly something that we all lack.
This is where Language Server Protocol (LSP for short) comes into play. Its aim is to decouple the presentation of the code from the actual language implementation and was created by the folks in Microsoft. It has a clear specification on what a potential client can require from a server and the server tries to implement all possible methods through an interface. This makes it quite easy to implement any language server since we know exactly what might be required. It’s also language independent, therefore it can be implemented in anything that is best suited for the language. An LSP client can be a separate application implemented at another time. This reduces the usual problem of n*m integrations between editors and language backends to n+m number of integrations, which greatly reduces the time requirements for the developers.




