nvim_runtime_lua

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"