textDocument/didClose notifications is mandatory in the protocol and clients can not opt out supporting them. This includes both full and incremental syncronization in the textDocument/didChange notification. In addition a server must either implement all three of them or none. Their capabilities are therefore controlled via a combined client and server capability. https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_synchronization
describe single state changes to the document. So if there are two content changes c1 (at array index 0) and c2 (at array index 1) for a document in state S then c1 moves the document from S to S' and c2 from S' to S''. So c1 is computed on the state S and c2 is computed on the state S'. To mirror the content of a document using change events use the following approach: - start with the same initial content - apply the 'textDocument/didChange' notifications in the order you recevie them. - apply the `TextDocumentContentChangeEvent`s in a single notification in the order you receive them. https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_synchronization
/// /// If `range` and `rangeLength` are unspecified, /// the whole document content is replaced. /// public struct TextDocumentContentChangeEvent: Codable, Hashable { https://github.com/apple/sourcekit-lsp