> 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]>
