@FreeMan yeah... but pragmatically speaking, the protocol doesn't really matter as far as RPC comms go, so if I'm hoping to correctly implement the notification names as per LSP, but really it doesn't matter if the RPC method name is "workspace/didChangeConfiguration" as specified or "WorkspaceConfigurationChanged". That said I do have a very clear idea of how to go about this mapping (JsonRpcMethodAttribute can't be applied to events/notifications)
Oh that's pretty much at the transport level; we'll just be handling events and calling methods in the upper layers 😏
basically I'm going to use reflection and get all the attributes; LspCompliantAttribute.Name has the LSP-compliant name I want to send through RPC
And then the Func<string,string> that transforms RPC method names in StreamJsonRpc can do a static dictionary lookup to get the LSP-compliant name for a given event name.
... and so event names must be unique across all proxies.
damn, I was missing a ton of JsonRpcMethod attributes in the textDocument/* stuff. I decided to split these up into subcategories so each gets its own folder so we don't have this huge folder with all the document methods lumped together, but these subfolders aren't namespaces so textDocument stuff are still all in the same namespace.