top | item 31151314

(no title)

v-yadli | 3 years ago

One particular problem of M+N is that it requires LSP to cover all the wanted features provided by server and supported by client.

This is not always the case for existing servers. Semantic highlighting wasn't in the protocol until 3.0 (iirc), and many servers have extra non-standard endpoints. So the real world situation is that there's a core feature set allowing M+N, and additionally, custom endpoints and features requiring MN.

Nevertheless the non-standard MN endpoints at least follow the "shape" of LSP -- same communication channel and message format, and that makes MN much easier than before already! As the core protocol evolves, more MN features will be decoupled to M+N.

discuss

order

jez|3 years ago

This is definitely true but like you mention because there’s a common communication channel and message format, these language-specific RPC endpoints exist whereas before LSP, language servers didn’t have “custom” features because there weren’t IDE-first language servers at all.

There are already a more than a couple LSP features I wish existed, but in the mean time it’s good enough to have the (typed! and using rich data structures!) RPC endpoints exist for enterprising users to wire up to their IDE’s presentation layer.

orlp|3 years ago

I also would like to note that this could provide a chilling effect for programming language design in the future. If LSP's become ultra-mainstream it might carve out a path of least resistance that prevent future innovation and adoption of language features incompatible with the protocol. Although I must admit I have no idea what such features could look like.

v-yadli|3 years ago

Hmm maybe these:

- Programming based on fragments, not documents (e.g. LEO https://leoeditor.com/)

- Live programming (e.g. smalltalk environments)

- ... where certain actions are not available, e.g. a PL geared towards speech recognition may not support "hover"

But on the other hand, these are not well-aligned with current text editors (text based, has a cursor, organize info as documents etc.)

So languages are one side, editors are the other.

oblio|3 years ago

Standardization ossifies some things but also allows building many things on top of a stable base.

Innovation could just happen at a higher level.