Class: LanguageServer::Protocol::Interface::DidChangeTextDocumentParams

Inherits:
Object
  • Object
show all
Defined in:
lib/language_server/protocol/interface/did_change_text_document_params.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(text_document:, content_changes:) ⇒ DidChangeTextDocumentParams

Returns a new instance of DidChangeTextDocumentParams.



5
6
7
8
9
10
11
12
# File 'lib/language_server/protocol/interface/did_change_text_document_params.rb', line 5

def initialize(text_document:, content_changes:)
  @attributes = {}

  @attributes[:textDocument] = text_document
  @attributes[:contentChanges] = content_changes

  @attributes.freeze
end

Instance Attribute Details

#attributesObject (readonly)

Returns the value of attribute attributes.



42
43
44
# File 'lib/language_server/protocol/interface/did_change_text_document_params.rb', line 42

def attributes
  @attributes
end

Instance Method Details

#content_changesTextDocumentContentChangeEvent[]

The actual content changes. The content changes 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.



38
39
40
# File 'lib/language_server/protocol/interface/did_change_text_document_params.rb', line 38

def content_changes
  attributes.fetch(:contentChanges)
end

#text_documentVersionedTextDocumentIdentifier

The document that did change. The version number points to the version after all provided content changes have been applied.



20
21
22
# File 'lib/language_server/protocol/interface/did_change_text_document_params.rb', line 20

def text_document
  attributes.fetch(:textDocument)
end

#to_hashObject



44
45
46
# File 'lib/language_server/protocol/interface/did_change_text_document_params.rb', line 44

def to_hash
  attributes
end

#to_json(*args) ⇒ Object



48
49
50
# File 'lib/language_server/protocol/interface/did_change_text_document_params.rb', line 48

def to_json(*args)
  to_hash.to_json(*args)
end