Use Language Server Protocol to implement external language parsers.
The Language Server Protocol was developed by Microsoft to allow the integration of external language with Microsoft tools, such as Visual Studio Code. The protocol is open source, and has been gaining traction especially with the growing popularity of Visual Studio code. It is being implemented by several organizations to provide support for both open source and proprietary languages. For example, Salesforce uses LSP to provide syntax highlighting and Intellisense in Visual Studio Code for their Apex language.
-
Hi Brian,
It is like you can read our mind :)
We have been looking into the Language Server Protocol (LPS) for a few weeks now, and we already plan to integrate it into Semantic Merge. Related to this, we are integrating Semantic Merge into Plastic, and this change will be released very soon. Integration of the LSP into Semantic Merge will follow at some future date.
On paper, the LSP is a neat idea. Write a Language Server (LS) once, give capabilities for said languages to multiple editors at the same time. However, we encountered obstacles in every Language Server we looked into.
Because the same team that implements the LS usually also implements the IDE / editor extension, they feel free to either break the protocol whenever is convenient, or have the server to behave in undocumented / unexpected ways.
This means that for every LS implementation out there we must write a custom wrapper to deal with these quirks. However, once that is completed, it will be easy to translate the LSP format into something Semantic is able to understand and expand the set of languages supported by Semantic Merge.
So, hopefully, Plastic (and gmaster!) will extend their semantic capabilities really soon thanks to the LSP. Differences, merging, and even difference editing with real time semantic outline...
As you can understand, this is something that will require some effort and lots of testing, so while it is definitely in our roadmap, right now we are prioritizing other projects that will for sure improve your experience as well.
In any case, thank you for your kind suggestion. We'll keep you posted on this!Sergio/Gwyn