> I think we always need something like TM to have an in-process cache for 
> symbols/tags. We're still a lightweight IDE so a my requirement would be to 
> not exchange megabytes of json text on every keystroke.

It's definitely not megabytes. If you are curious about how typical 
communication looks like, you can try the geany-lsp plugin and set `rpc_log` in 
configuration to some file - you will get the full JSON RPC communication.

> Question: How does a language server get access to the documents? Does it 
> have to be saved on disk so that the server can open() it?

Basically, one first sends

https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#initialize

where one can specify either a single project directory or multiple workspace 
directories. And then there are the document synchronization notifications 
informing about what is happening:

https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_synchronization

> If no, do we have to constantly send the entire document via IPC or network?

Only deltas (if servers support it, but all those I tried do, otherwise one 
would indeed have to send the whole document), see

https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_didChange

I was slightly worried if documents don't get de-synchronized but it was quite 
easy to implement using Scintilla SCN_MODIFIED notifications and seems to work 
well.


-- 
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany/discussions/3675#discussioncomment-7480536
You are receiving this because you are subscribed to this thread.

Message ID: <geany/geany/repo-discussions/3675/comments/[email protected]>

Reply via email to