vim.lsp.CTGroup
LSP has 3 different sync modes:
- None (Servers will read the files themselves when needed)
- Full (Client sends the full buffer content on updates)
- Incremental (Client sends only the changed parts)
Changes are tracked per buffer. A buffer can have multiple clients attached and each client needs to send the changes To minimize the amount of changesets to compute, computation is grouped:
None: One group for all clients Full: One group for all clients Incremental: One group per position_encoding
Sending changes can be debounced per buffer. To simplify the implementation the smallest debounce interval is used and we don't group clients by different intervals.
Fields2
CTGroup.sync_kind : integer
TextDocumentSyncKind, considers config.flags.allowincrementalsync
CTGroup.position_encoding : "utf-8" | "utf-16" | "utf-32"