LSP was such an awesome idea. It's amazing to me that this wasn't a thing before Microsoft introduced it in VS Code. It's incredibly useful for every editor.
> It's amazing to me that this wasn't a thing before Microsoft introduced it in VS Code.
For what it's worth, the static analysis infrastructure we built for Dart was designed this way and, I think, existed slightly before LSP. We used it to provide a nice Dart IDE experience in the Dart Editor (a custom build of Eclipse), IntelliJ, Emacs, Vim, etc. without having to reimplement everything multiple times.
Cool stuff. I think there were a few similar efforts going on. For example, LSP was based on the protocol developed for OmniSharp, which was an open source .NET-specific implementation started in like 2013 by a Vim fanatic.
Interesting! Is there a source for that? I remember OmniSharp. It was a blessing when I could start to use vim when I had to use .NET a few years ago. I had no idea that's what LSP grew out of.
The history article above says that OmniSharp started out on Roslyn, but actually it originally used NRefactory. The old server is here: https://github.com/OmniSharp/omnisharp-server
That's worth something, but having a standard protocol is worth so much more. If your architecture had become the de-facto standard for this stuff, I can assure you that I'd be praising it instead.
Standard in what sense? Surely Dart has its specific requirements like any other language. I'm not convinced it's possible to standardize such functionality without limiting yourself to a subset of what you might want to have implemented.
In that case I'm not sure that it's "worth so much more". As I said, you end up with lowest common denominators, not with increased developer comfort. For example, in case of Common Lisp, I very strongly doubt that LSP supports such things as interactive resumable conditions, CLOS/MOP object model for cross-referencing, or image state and session handling. At least it didn't a few years ago when I looked at it. But sure, if you're not very demanding, something like LSP might be enough for you.