# codegen: do not edit defmodule GenLSP.Structures.TextDocumentEdit do @moduledoc """ Describes textual changes on a text document. A TextDocumentEdit describes all changes on a document version Si and after they are applied move the document to version Si+1. So the creator of a TextDocumentEdit doesn't need to sort the array of edits or do any kind of ordering. However the edits must be non overlapping. """ import Schematic, warn: false use TypedStruct @doc """ ## Fields * text_document: The text document to change. * edits: The edits to be applied. @since 3.16.0 - support for AnnotatedTextEdit. This is guarded using a client capability. """ @derive Jason.Encoder typedstruct do field :text_document, GenLSP.Structures.OptionalVersionedTextDocumentIdentifier.t(), enforce: true field :edits, list(GenLSP.Structures.TextEdit.t() | GenLSP.Structures.AnnotatedTextEdit.t()), enforce: true end @doc false @spec schematic() :: Schematic.t() def schematic() do schema(__MODULE__, %{ {"textDocument", :text_document} => GenLSP.Structures.OptionalVersionedTextDocumentIdentifier.schematic(), {"edits", :edits} => list( oneof([ GenLSP.Structures.TextEdit.schematic(), GenLSP.Structures.AnnotatedTextEdit.schematic() ]) ) }) end end