File: .lake/packages/lean4/src/lean/Lean/Data/Lsp/Basic.lean

full_name: Lean.Lsp.CancelParams.id
code: structure CancelParams where
  id : JsonRpc.RequestID
  deriving Inhabited, BEq, ToJson, FromJson
goal: Lean.JsonRpc.RequestID

full_name: Lean.Lsp.instInhabitedCancelParams
code: structure CancelParams where
  id : JsonRpc.RequestID
  deriving Inhabited, BEq, ToJson, FromJson
goal: Inhabited Lean.Lsp.CancelParams

full_name: Lean.Lsp.instBEqCancelParams
code: structure CancelParams where
  id : JsonRpc.RequestID
  deriving Inhabited, BEq, ToJson, FromJson
goal: BEq Lean.Lsp.CancelParams

full_name: Lean.Lsp.CancelParams
code: structure CancelParams where
  id : JsonRpc.RequestID
  deriving Inhabited, BEq, ToJson, FromJson
goal: Type

full_name: Lean.Lsp.instToJsonCancelParams
code: ToJson
goal: Lean.ToJson Lean.Lsp.CancelParams

full_name: Lean.Lsp.instFromJsonCancelParams
code: FromJson
goal: Lean.FromJson Lean.Lsp.CancelParams

full_name: Lean.Lsp.DocumentUri
code: abbrev DocumentUri 
goal: Type

full_name: Lean.Lsp.instHashablePosition
code: /-- We adopt the convention that zero-based UTF-16 positions as sent by LSP clients
are represented by `Lsp.Position` while internally we mostly use `String.Pos` UTF-8
offsets. For diagnostics, one-based `Lean.Position`s are used internally.
`character` is accepted liberally: actual character := min(line length, character) -/
structure Position where
  line : Nat
  character : Nat
  deriving Inhabited, BEq, Ord, Hashable, ToJson, FromJson
goal: Hashable Lean.Lsp.Position

full_name: Lean.Lsp.instInhabitedPosition
code: /-- We adopt the convention that zero-based UTF-16 positions as sent by LSP clients
are represented by `Lsp.Position` while internally we mostly use `String.Pos` UTF-8
offsets. For diagnostics, one-based `Lean.Position`s are used internally.
`character` is accepted liberally: actual character := min(line length, character) -/
structure Position where
  line : Nat
  character : Nat
  deriving Inhabited, BEq, Ord, Hashable, ToJson, FromJson
goal: Inhabited Lean.Lsp.Position

full_name: Lean.Lsp.instBEqPosition
code: /-- We adopt the convention that zero-based UTF-16 positions as sent by LSP clients
are represented by `Lsp.Position` while internally we mostly use `String.Pos` UTF-8
offsets. For diagnostics, one-based `Lean.Position`s are used internally.
`character` is accepted liberally: actual character := min(line length, character) -/
structure Position where
  line : Nat
  character : Nat
  deriving Inhabited, BEq, Ord, Hashable, ToJson, FromJson
goal: BEq Lean.Lsp.Position

full_name: Lean.Lsp.Position
code: /-- We adopt the convention that zero-based UTF-16 positions as sent by LSP clients
are represented by `Lsp.Position` while internally we mostly use `String.Pos` UTF-8
offsets. For diagnostics, one-based `Lean.Position`s are used internally.
`character` is accepted liberally: actual character := min(line length, character) -/
structure Position where
  line : Nat
  character : Nat
  deriving Inhabited, BEq, Ord, Hashable, ToJson, FromJson
goal: Type

full_name: Lean.Lsp.instOrdPosition
code: /-- We adopt the convention that zero-based UTF-16 positions as sent by LSP clients
are represented by `Lsp.Position` while internally we mostly use `String.Pos` UTF-8
offsets. For diagnostics, one-based `Lean.Position`s are used internally.
`character` is accepted liberally: actual character := min(line length, character) -/
structure Position where
  line : Nat
  character : Nat
  deriving Inhabited, BEq, Ord, Hashable, ToJson, FromJson
goal: Ord Lean.Lsp.Position

full_name: Lean.Lsp.Position.line
code: /-- We adopt the convention that zero-based UTF-16 positions as sent by LSP clients
are represented by `Lsp.Position` while internally we mostly use `String.Pos` UTF-8
offsets. For diagnostics, one-based `Lean.Position`s are used internally.
`character` is accepted liberally: actual character := min(line length, character) -/
structure Position where
  line : Nat
  character : Nat
  deriving Inhabited, BEq, Ord, Hashable, ToJson, FromJson
goal: Nat

full_name: Lean.Lsp.Position.character
code: /-- We adopt the convention that zero-based UTF-16 positions as sent by LSP clients
are represented by `Lsp.Position` while internally we mostly use `String.Pos` UTF-8
offsets. For diagnostics, one-based `Lean.Position`s are used internally.
`character` is accepted liberally: actual character := min(line length, character) -/
structure Position where
  line : Nat
  character : Nat
  deriving Inhabited, BEq, Ord, Hashable, ToJson, FromJson
goal: Nat

full_name: Lean.Lsp.instToJsonPosition
code: ToJson
goal: Lean.ToJson Lean.Lsp.Position

full_name: Lean.Lsp.instFromJsonPosition
code: FromJson
goal: Lean.FromJson Lean.Lsp.Position

full_name: Lean.Lsp.instToStringPosition
code: instance : ToString Position 
goal: ToString Lean.Lsp.Position

full_name: Lean.Lsp.instLTPosition
code: instance : LT Position 
goal: LT Lean.Lsp.Position

full_name: Lean.Lsp.instLEPosition
code: instance : LE Position 
goal: LE Lean.Lsp.Position

full_name: Lean.Lsp.Range
code: structure Range where
  start : Position
  «end» : Position
  deriving Inhabited, BEq, Hashable, ToJson, FromJson, Ord
goal: Type

full_name: Lean.Lsp.instOrdRange
code: structure Range where
  start : Position
  «end» : Position
  deriving Inhabited, BEq, Hashable, ToJson, FromJson, Ord
goal: Ord Lean.Lsp.Range

full_name: Lean.Lsp.Range.start
code: structure Range where
  start : Position
  «end» : Position
  deriving Inhabited, BEq, Hashable, ToJson, FromJson, Ord
goal: Lean.Lsp.Position

full_name: Lean.Lsp.instInhabitedRange
code: structure Range where
  start : Position
  «end» : Position
  deriving Inhabited, BEq, Hashable, ToJson, FromJson, Ord
goal: Inhabited Lean.Lsp.Range

full_name: Lean.Lsp.Range.end
code: structure Range where
  start : Position
  «end» : Position
  deriving Inhabited, BEq, Hashable, ToJson, FromJson, Ord
goal: Lean.Lsp.Position

full_name: Lean.Lsp.instHashableRange
code: structure Range where
  start : Position
  «end» : Position
  deriving Inhabited, BEq, Hashable, ToJson, FromJson, Ord
goal: Hashable Lean.Lsp.Range

full_name: Lean.Lsp.instBEqRange
code: structure Range where
  start : Position
  «end» : Position
  deriving Inhabited, BEq, Hashable, ToJson, FromJson, Ord
goal: BEq Lean.Lsp.Range

full_name: Lean.Lsp.instToJsonRange
code: ToJson
goal: Lean.ToJson Lean.Lsp.Range

full_name: Lean.Lsp.instFromJsonRange
code: FromJson
goal: Lean.FromJson Lean.Lsp.Range

full_name: Lean.Lsp.instLTRange
code: instance : LT Range 
goal: LT Lean.Lsp.Range

full_name: Lean.Lsp.instLERange
code: instance : LE Range 
goal: LE Lean.Lsp.Range

full_name: Lean.Lsp.instBEqLocation
code: /-- A `Location` is a `DocumentUri` and a `Range`. -/
structure Location where
  uri : DocumentUri
  range : Range
  deriving Inhabited, BEq, ToJson, FromJson, Ord
goal: BEq Lean.Lsp.Location

full_name: Lean.Lsp.Location.range
code: /-- A `Location` is a `DocumentUri` and a `Range`. -/
structure Location where
  uri : DocumentUri
  range : Range
  deriving Inhabited, BEq, ToJson, FromJson, Ord
goal: Lean.Lsp.Range

full_name: Lean.Lsp.instInhabitedLocation
code: /-- A `Location` is a `DocumentUri` and a `Range`. -/
structure Location where
  uri : DocumentUri
  range : Range
  deriving Inhabited, BEq, ToJson, FromJson, Ord
goal: Inhabited Lean.Lsp.Location

full_name: Lean.Lsp.Location.uri
code: /-- A `Location` is a `DocumentUri` and a `Range`. -/
structure Location where
  uri : DocumentUri
  range : Range
  deriving Inhabited, BEq, ToJson, FromJson, Ord
goal: Lean.Lsp.DocumentUri

full_name: Lean.Lsp.Location
code: /-- A `Location` is a `DocumentUri` and a `Range`. -/
structure Location where
  uri : DocumentUri
  range : Range
  deriving Inhabited, BEq, ToJson, FromJson, Ord
goal: Type

full_name: Lean.Lsp.instOrdLocation
code: /-- A `Location` is a `DocumentUri` and a `Range`. -/
structure Location where
  uri : DocumentUri
  range : Range
  deriving Inhabited, BEq, ToJson, FromJson, Ord
goal: Ord Lean.Lsp.Location

full_name: Lean.Lsp.instToJsonLocation
code: ToJson
goal: Lean.ToJson Lean.Lsp.Location

full_name: Lean.Lsp.instFromJsonLocation
code: FromJson
goal: Lean.FromJson Lean.Lsp.Location

full_name: Lean.Lsp.LocationLink.originSelectionRange?
code: structure LocationLink where
  originSelectionRange? : Option Range
  targetUri : DocumentUri
  targetRange : Range
  targetSelectionRange : Range
  deriving ToJson, FromJson
goal: Option Lean.Lsp.Range

full_name: Lean.Lsp.LocationLink.targetUri
code: structure LocationLink where
  originSelectionRange? : Option Range
  targetUri : DocumentUri
  targetRange : Range
  targetSelectionRange : Range
  deriving ToJson, FromJson
goal: Lean.Lsp.DocumentUri

full_name: Lean.Lsp.LocationLink
code: structure LocationLink where
  originSelectionRange? : Option Range
  targetUri : DocumentUri
  targetRange : Range
  targetSelectionRange : Range
  deriving ToJson, FromJson
goal: Type

full_name: Lean.Lsp.LocationLink.targetRange
code: structure LocationLink where
  originSelectionRange? : Option Range
  targetUri : DocumentUri
  targetRange : Range
  targetSelectionRange : Range
  deriving ToJson, FromJson
goal: Lean.Lsp.Range

full_name: Lean.Lsp.LocationLink.targetSelectionRange
code: structure LocationLink where
  originSelectionRange? : Option Range
  targetUri : DocumentUri
  targetRange : Range
  targetSelectionRange : Range
  deriving ToJson, FromJson
goal: Lean.Lsp.Range

full_name: Lean.Lsp.instToJsonLocationLink
code: ToJson
goal: Lean.ToJson Lean.Lsp.LocationLink

full_name: Lean.Lsp.instFromJsonLocationLink
code: FromJson
goal: Lean.FromJson Lean.Lsp.LocationLink

full_name: Lean.Lsp.Command.title
code: /-- Represents a reference to a client editor command.

NOTE: No specific commands are specified by LSP, hence
possible commands need to be announced as capabilities.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#command)
-/
structure Command where
  /-- Title of the command, like `save`. -/
  title : String
  /-- The identifier of the actual command handler. -/
  command : String
  /-- Arguments that the command handler should be invoked with. -/
  arguments? : Option (Array Json) := none
  deriving ToJson, FromJson
goal: String

full_name: Lean.Lsp.Command
code: /-- Represents a reference to a client editor command.

NOTE: No specific commands are specified by LSP, hence
possible commands need to be announced as capabilities.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#command)
-/
structure Command where
  /-- Title of the command, like `save`. -/
  title : String
  /-- The identifier of the actual command handler. -/
  command : String
  /-- Arguments that the command handler should be invoked with. -/
  arguments? : Option (Array Json) := none
  deriving ToJson, FromJson
goal: Type

full_name: Lean.Lsp.Command.arguments?
code: /-- Represents a reference to a client editor command.

NOTE: No specific commands are specified by LSP, hence
possible commands need to be announced as capabilities.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#command)
-/
structure Command where
  /-- Title of the command, like `save`. -/
  title : String
  /-- The identifier of the actual command handler. -/
  command : String
  /-- Arguments that the command handler should be invoked with. -/
  arguments? : Option (Array Json) := none
  deriving ToJson, FromJson
goal: Option (Array Lean.Json)

full_name: Lean.Lsp.Command.command
code: /-- Represents a reference to a client editor command.

NOTE: No specific commands are specified by LSP, hence
possible commands need to be announced as capabilities.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#command)
-/
structure Command where
  /-- Title of the command, like `save`. -/
  title : String
  /-- The identifier of the actual command handler. -/
  command : String
  /-- Arguments that the command handler should be invoked with. -/
  arguments? : Option (Array Json) := none
  deriving ToJson, FromJson
goal: String

full_name: Lean.Lsp.instToJsonCommand
code: ToJson
goal: Lean.ToJson Lean.Lsp.Command

full_name: Lean.Lsp.instFromJsonCommand
code: FromJson
goal: Lean.FromJson Lean.Lsp.Command

full_name: Lean.Lsp.SnippetString
code: /-- A snippet is a string that gets inserted into a document,
and can afterwards be edited by the user in a structured way.

Snippets contain instructions that
specify how this structured editing should proceed.
They are expressed in a domain-specific language
based on one from TextMate,
including the following constructs:
- Designated positions for subsequent user input,
  called "tab stops" after their most frequently-used keybinding.
  They are denoted with `$1`, `$2`, and so forth.
  `$0` denotes where the cursor should be positioned after all edits are completed,
  defaulting to the end of the string.
  Snippet tab stops are unrelated to tab stops used for indentation.
- Tab stops with default values, called _placeholders_, written `${1:default}`.
  The default may itself contain a tab stop or a further placeholder
  and multiple options to select from may be provided
  by surrounding them with `|`s and separating them with `,`,
  as in `${1|if $2 then $3 else $4,if let $2 := $3 then $4 else $5|}`.
- One of a set of predefined variables that are replaced with their values.
  This includes the current line number (`$TM_LINE_NUMBER`)
  or the text that was selected when the snippet was invoked (`$TM_SELECTED_TEXT`).
- Formatting instructions to modify variables using regular expressions
  or a set of predefined filters.

The full syntax and semantics of snippets,
including the available variables and the rules for escaping control characters,
are described in the [LSP specification](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#snippet_syntax). -/
structure SnippetString where
  value : String
  deriving ToJson, FromJson
goal: Type

full_name: Lean.Lsp.SnippetString.value
code: /-- A snippet is a string that gets inserted into a document,
and can afterwards be edited by the user in a structured way.

Snippets contain instructions that
specify how this structured editing should proceed.
They are expressed in a domain-specific language
based on one from TextMate,
including the following constructs:
- Designated positions for subsequent user input,
  called "tab stops" after their most frequently-used keybinding.
  They are denoted with `$1`, `$2`, and so forth.
  `$0` denotes where the cursor should be positioned after all edits are completed,
  defaulting to the end of the string.
  Snippet tab stops are unrelated to tab stops used for indentation.
- Tab stops with default values, called _placeholders_, written `${1:default}`.
  The default may itself contain a tab stop or a further placeholder
  and multiple options to select from may be provided
  by surrounding them with `|`s and separating them with `,`,
  as in `${1|if $2 then $3 else $4,if let $2 := $3 then $4 else $5|}`.
- One of a set of predefined variables that are replaced with their values.
  This includes the current line number (`$TM_LINE_NUMBER`)
  or the text that was selected when the snippet was invoked (`$TM_SELECTED_TEXT`).
- Formatting instructions to modify variables using regular expressions
  or a set of predefined filters.

The full syntax and semantics of snippets,
including the available variables and the rules for escaping control characters,
are described in the [LSP specification](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#snippet_syntax). -/
structure SnippetString where
  value : String
  deriving ToJson, FromJson
goal: String

full_name: Lean.Lsp.instToJsonSnippetString
code: ToJson
goal: Lean.ToJson Lean.Lsp.SnippetString

full_name: Lean.Lsp.instFromJsonSnippetString
code: FromJson
goal: Lean.FromJson Lean.Lsp.SnippetString

full_name: Lean.Lsp.TextEdit.annotationId?
code: /-- A textual edit applicable to a text document.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textEdit) -/
structure TextEdit where
  /--  The range of the text document to be manipulated.
    To insert text into a document create a range where `start = end`. -/
  range : Range
  /-- The string to be inserted. For delete operations use an empty string. -/
  newText : String
  /-- If this field is present and the editor supports it,
  `newText` is ignored
  and an interactive snippet edit is performed instead.

  The use of snippets in `TextEdit`s
  is a Lean-specific extension to the LSP standard,
  so `newText` should still be set to a correct value
  as fallback in case the editor does not support this feature.
  Even editors that support snippets may not always use them;
  for instance, if the file is not already open,
  VS Code will perform a normal text edit in the background instead. -/
  /- NOTE: Similar functionality may be added to LSP in the future:
  see [issue #592](https://github.com/microsoft/language-server-protocol/issues/592).
  If such an addition occurs, this field should be deprecated. -/
  leanExtSnippet? : Option SnippetString := none
  /-- Identifier for annotated edit.

    `WorkspaceEdit` has a `changeAnnotations` field that maps these identifiers to a `ChangeAnnotation`.
    By annotating an edit you can add a description of what the edit will do and also control whether the
    user is presented with a prompt before applying the edit.
    [reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textEdit).
  -/
  annotationId? : Option String := none
  deriving ToJson, FromJson
goal: Option String

full_name: Lean.Lsp.TextEdit
code: /-- A textual edit applicable to a text document.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textEdit) -/
structure TextEdit where
  /--  The range of the text document to be manipulated.
    To insert text into a document create a range where `start = end`. -/
  range : Range
  /-- The string to be inserted. For delete operations use an empty string. -/
  newText : String
  /-- If this field is present and the editor supports it,
  `newText` is ignored
  and an interactive snippet edit is performed instead.

  The use of snippets in `TextEdit`s
  is a Lean-specific extension to the LSP standard,
  so `newText` should still be set to a correct value
  as fallback in case the editor does not support this feature.
  Even editors that support snippets may not always use them;
  for instance, if the file is not already open,
  VS Code will perform a normal text edit in the background instead. -/
  /- NOTE: Similar functionality may be added to LSP in the future:
  see [issue #592](https://github.com/microsoft/language-server-protocol/issues/592).
  If such an addition occurs, this field should be deprecated. -/
  leanExtSnippet? : Option SnippetString := none
  /-- Identifier for annotated edit.

    `WorkspaceEdit` has a `changeAnnotations` field that maps these identifiers to a `ChangeAnnotation`.
    By annotating an edit you can add a description of what the edit will do and also control whether the
    user is presented with a prompt before applying the edit.
    [reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textEdit).
  -/
  annotationId? : Option String := none
  deriving ToJson, FromJson
goal: Type

full_name: Lean.Lsp.TextEdit.newText
code: /-- A textual edit applicable to a text document.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textEdit) -/
structure TextEdit where
  /--  The range of the text document to be manipulated.
    To insert text into a document create a range where `start = end`. -/
  range : Range
  /-- The string to be inserted. For delete operations use an empty string. -/
  newText : String
  /-- If this field is present and the editor supports it,
  `newText` is ignored
  and an interactive snippet edit is performed instead.

  The use of snippets in `TextEdit`s
  is a Lean-specific extension to the LSP standard,
  so `newText` should still be set to a correct value
  as fallback in case the editor does not support this feature.
  Even editors that support snippets may not always use them;
  for instance, if the file is not already open,
  VS Code will perform a normal text edit in the background instead. -/
  /- NOTE: Similar functionality may be added to LSP in the future:
  see [issue #592](https://github.com/microsoft/language-server-protocol/issues/592).
  If such an addition occurs, this field should be deprecated. -/
  leanExtSnippet? : Option SnippetString := none
  /-- Identifier for annotated edit.

    `WorkspaceEdit` has a `changeAnnotations` field that maps these identifiers to a `ChangeAnnotation`.
    By annotating an edit you can add a description of what the edit will do and also control whether the
    user is presented with a prompt before applying the edit.
    [reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textEdit).
  -/
  annotationId? : Option String := none
  deriving ToJson, FromJson
goal: String

full_name: Lean.Lsp.TextEdit.range
code: /-- A textual edit applicable to a text document.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textEdit) -/
structure TextEdit where
  /--  The range of the text document to be manipulated.
    To insert text into a document create a range where `start = end`. -/
  range : Range
  /-- The string to be inserted. For delete operations use an empty string. -/
  newText : String
  /-- If this field is present and the editor supports it,
  `newText` is ignored
  and an interactive snippet edit is performed instead.

  The use of snippets in `TextEdit`s
  is a Lean-specific extension to the LSP standard,
  so `newText` should still be set to a correct value
  as fallback in case the editor does not support this feature.
  Even editors that support snippets may not always use them;
  for instance, if the file is not already open,
  VS Code will perform a normal text edit in the background instead. -/
  /- NOTE: Similar functionality may be added to LSP in the future:
  see [issue #592](https://github.com/microsoft/language-server-protocol/issues/592).
  If such an addition occurs, this field should be deprecated. -/
  leanExtSnippet? : Option SnippetString := none
  /-- Identifier for annotated edit.

    `WorkspaceEdit` has a `changeAnnotations` field that maps these identifiers to a `ChangeAnnotation`.
    By annotating an edit you can add a description of what the edit will do and also control whether the
    user is presented with a prompt before applying the edit.
    [reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textEdit).
  -/
  annotationId? : Option String := none
  deriving ToJson, FromJson
goal: Lean.Lsp.Range

full_name: Lean.Lsp.TextEdit.leanExtSnippet?
code: /-- A textual edit applicable to a text document.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textEdit) -/
structure TextEdit where
  /--  The range of the text document to be manipulated.
    To insert text into a document create a range where `start = end`. -/
  range : Range
  /-- The string to be inserted. For delete operations use an empty string. -/
  newText : String
  /-- If this field is present and the editor supports it,
  `newText` is ignored
  and an interactive snippet edit is performed instead.

  The use of snippets in `TextEdit`s
  is a Lean-specific extension to the LSP standard,
  so `newText` should still be set to a correct value
  as fallback in case the editor does not support this feature.
  Even editors that support snippets may not always use them;
  for instance, if the file is not already open,
  VS Code will perform a normal text edit in the background instead. -/
  /- NOTE: Similar functionality may be added to LSP in the future:
  see [issue #592](https://github.com/microsoft/language-server-protocol/issues/592).
  If such an addition occurs, this field should be deprecated. -/
  leanExtSnippet? : Option SnippetString := none
  /-- Identifier for annotated edit.

    `WorkspaceEdit` has a `changeAnnotations` field that maps these identifiers to a `ChangeAnnotation`.
    By annotating an edit you can add a description of what the edit will do and also control whether the
    user is presented with a prompt before applying the edit.
    [reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textEdit).
  -/
  annotationId? : Option String := none
  deriving ToJson, FromJson
goal: Option Lean.Lsp.SnippetString

full_name: Lean.Lsp.instToJsonTextEdit
code: ToJson
goal: Lean.ToJson Lean.Lsp.TextEdit

full_name: Lean.Lsp.instFromJsonTextEdit
code: FromJson
goal: Lean.FromJson Lean.Lsp.TextEdit

full_name: Lean.Lsp.TextEditBatch
code: /-- An array of `TextEdit`s to be performed in sequence. -/
def TextEditBatch 
goal: Type

full_name: Lean.Lsp.instFromJsonTextEditBatch
code: instance : FromJson TextEditBatch 
goal: Lean.FromJson Lean.Lsp.TextEditBatch

full_name: Lean.Lsp.instToJsonTextEditBatch
code: instance : ToJson TextEditBatch 
goal: Lean.ToJson Lean.Lsp.TextEditBatch

full_name: Lean.Lsp.instEmptyCollectionTextEditBatch
code: instance : EmptyCollection TextEditBatch 
goal: EmptyCollection Lean.Lsp.TextEditBatch

full_name: Lean.Lsp.instAppendTextEditBatch
code: instance : Append TextEditBatch 
goal: Append Lean.Lsp.TextEditBatch

full_name: Lean.Lsp.instCoeTextEditTextEditBatch
code: instance : Coe TextEdit TextEditBatch 
goal: Coe Lean.Lsp.TextEdit Lean.Lsp.TextEditBatch

full_name: Lean.Lsp.TextDocumentIdentifier.uri
code: structure TextDocumentIdentifier where
  uri : DocumentUri
  deriving ToJson, FromJson
goal: Lean.Lsp.DocumentUri

full_name: Lean.Lsp.TextDocumentIdentifier
code: structure TextDocumentIdentifier where
  uri : DocumentUri
  deriving ToJson, FromJson
goal: Type

full_name: Lean.Lsp.instToJsonTextDocumentIdentifier
code: ToJson
goal: Lean.ToJson Lean.Lsp.TextDocumentIdentifier

full_name: Lean.Lsp.instFromJsonTextDocumentIdentifier
code: FromJson
goal: Lean.FromJson Lean.Lsp.TextDocumentIdentifier

full_name: Lean.Lsp.VersionedTextDocumentIdentifier.version?
code: structure VersionedTextDocumentIdentifier where
  uri : DocumentUri
  version? : Option Nat := none
  deriving ToJson, FromJson
goal: Option Nat

full_name: Lean.Lsp.VersionedTextDocumentIdentifier
code: structure VersionedTextDocumentIdentifier where
  uri : DocumentUri
  version? : Option Nat := none
  deriving ToJson, FromJson
goal: Type

full_name: Lean.Lsp.VersionedTextDocumentIdentifier.uri
code: structure VersionedTextDocumentIdentifier where
  uri : DocumentUri
  version? : Option Nat := none
  deriving ToJson, FromJson
goal: Lean.Lsp.DocumentUri

full_name: Lean.Lsp.instToJsonVersionedTextDocumentIdentifier
code: ToJson
goal: Lean.ToJson Lean.Lsp.VersionedTextDocumentIdentifier

full_name: Lean.Lsp.instFromJsonVersionedTextDocumentIdentifier
code: FromJson
goal: Lean.FromJson Lean.Lsp.VersionedTextDocumentIdentifier

full_name: Lean.Lsp.TextDocumentEdit.textDocument
code: /-- A batch of `TextEdit`s to perform on a versioned text document.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocumentEdit) -/
structure TextDocumentEdit where
  textDocument : VersionedTextDocumentIdentifier
  edits : TextEditBatch
  deriving ToJson, FromJson
goal: Lean.Lsp.VersionedTextDocumentIdentifier

full_name: Lean.Lsp.TextDocumentEdit.edits
code: /-- A batch of `TextEdit`s to perform on a versioned text document.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocumentEdit) -/
structure TextDocumentEdit where
  textDocument : VersionedTextDocumentIdentifier
  edits : TextEditBatch
  deriving ToJson, FromJson
goal: Lean.Lsp.TextEditBatch

full_name: Lean.Lsp.TextDocumentEdit
code: /-- A batch of `TextEdit`s to perform on a versioned text document.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocumentEdit) -/
structure TextDocumentEdit where
  textDocument : VersionedTextDocumentIdentifier
  edits : TextEditBatch
  deriving ToJson, FromJson
goal: Type

full_name: Lean.Lsp.instToJsonTextDocumentEdit
code: ToJson
goal: Lean.ToJson Lean.Lsp.TextDocumentEdit

full_name: Lean.Lsp.instFromJsonTextDocumentEdit
code: FromJson
goal: Lean.FromJson Lean.Lsp.TextDocumentEdit

full_name: Lean.Lsp.ChangeAnnotation.needsConfirmation
code: /-- Additional information that describes document changes.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textEdit) -/
structure ChangeAnnotation where
  /-- A human-readable string describing the actual change.
  The string is rendered prominent in the user interface. -/
  label             : String
  /-- A flag which indicates that user confirmation is needed before applying the change. -/
  needsConfirmation : Bool := false
  /-- A human-readable string which is rendered less prominent in the user interface. -/
  description?      : Option String := none
  deriving ToJson, FromJson
goal: Bool

full_name: Lean.Lsp.ChangeAnnotation.label
code: /-- Additional information that describes document changes.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textEdit) -/
structure ChangeAnnotation where
  /-- A human-readable string describing the actual change.
  The string is rendered prominent in the user interface. -/
  label             : String
  /-- A flag which indicates that user confirmation is needed before applying the change. -/
  needsConfirmation : Bool := false
  /-- A human-readable string which is rendered less prominent in the user interface. -/
  description?      : Option String := none
  deriving ToJson, FromJson
goal: String

full_name: Lean.Lsp.ChangeAnnotation
code: /-- Additional information that describes document changes.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textEdit) -/
structure ChangeAnnotation where
  /-- A human-readable string describing the actual change.
  The string is rendered prominent in the user interface. -/
  label             : String
  /-- A flag which indicates that user confirmation is needed before applying the change. -/
  needsConfirmation : Bool := false
  /-- A human-readable string which is rendered less prominent in the user interface. -/
  description?      : Option String := none
  deriving ToJson, FromJson
goal: Type

full_name: Lean.Lsp.ChangeAnnotation.description?
code: /-- Additional information that describes document changes.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textEdit) -/
structure ChangeAnnotation where
  /-- A human-readable string describing the actual change.
  The string is rendered prominent in the user interface. -/
  label             : String
  /-- A flag which indicates that user confirmation is needed before applying the change. -/
  needsConfirmation : Bool := false
  /-- A human-readable string which is rendered less prominent in the user interface. -/
  description?      : Option String := none
  deriving ToJson, FromJson
goal: Option String

full_name: Lean.Lsp.instToJsonChangeAnnotation
code: ToJson
goal: Lean.ToJson Lean.Lsp.ChangeAnnotation

full_name: Lean.Lsp.instFromJsonChangeAnnotation
code: FromJson
goal: Lean.FromJson Lean.Lsp.ChangeAnnotation

full_name: Lean.Lsp.CreateFile.Options.ignoreIfExists
code: /-- Options for `CreateFile` and `RenameFile`. -/
structure CreateFile.Options where
  overwrite      : Bool := false
  ignoreIfExists : Bool := false
  deriving ToJson, FromJson
goal: Bool

full_name: Lean.Lsp.CreateFile.Options
code: /-- Options for `CreateFile` and `RenameFile`. -/
structure CreateFile.Options where
  overwrite      : Bool := false
  ignoreIfExists : Bool := false
  deriving ToJson, FromJson
goal: Type

full_name: Lean.Lsp.CreateFile.Options.overwrite
code: /-- Options for `CreateFile` and `RenameFile`. -/
structure CreateFile.Options where
  overwrite      : Bool := false
  ignoreIfExists : Bool := false
  deriving ToJson, FromJson
goal: Bool

full_name: Lean.Lsp.CreateFile.instToJsonOptions
code: ToJson
goal: Lean.ToJson Lean.Lsp.CreateFile.Options

full_name: Lean.Lsp.CreateFile.instFromJsonOptions
code: FromJson
goal: Lean.FromJson Lean.Lsp.CreateFile.Options

full_name: Lean.Lsp.DeleteFile.Options.recursive
code: /-- Options for `DeleteFile`. -/
structure DeleteFile.Options where
  recursive : Bool := false
  ignoreIfNotExists := false
  deriving ToJson, FromJson
goal: Bool

full_name: Lean.Lsp.DeleteFile.Options
code: /-- Options for `DeleteFile`. -/
structure DeleteFile.Options where
  recursive : Bool := false
  ignoreIfNotExists := false
  deriving ToJson, FromJson
goal: Type

full_name: Lean.Lsp.DeleteFile.Options.ignoreIfNotExists
code: /-- Options for `DeleteFile`. -/
structure DeleteFile.Options where
  recursive : Bool := false
  ignoreIfNotExists := false
  deriving ToJson, FromJson
goal: Bool

full_name: Lean.Lsp.DeleteFile.instToJsonOptions
code: ToJson
goal: Lean.ToJson Lean.Lsp.DeleteFile.Options

full_name: Lean.Lsp.DeleteFile.instFromJsonOptions
code: FromJson
goal: Lean.FromJson Lean.Lsp.DeleteFile.Options

full_name: Lean.Lsp.CreateFile.uri
code: structure CreateFile where
  uri           : DocumentUri
  options?      : Option CreateFile.Options := none
  annotationId? : Option String := none
  deriving ToJson, FromJson
goal: Lean.Lsp.DocumentUri

full_name: Lean.Lsp.CreateFile
code: structure CreateFile where
  uri           : DocumentUri
  options?      : Option CreateFile.Options := none
  annotationId? : Option String := none
  deriving ToJson, FromJson
goal: Type

full_name: Lean.Lsp.CreateFile.options?
code: structure CreateFile where
  uri           : DocumentUri
  options?      : Option CreateFile.Options := none
  annotationId? : Option String := none
  deriving ToJson, FromJson
goal: Option Lean.Lsp.CreateFile.Options

full_name: Lean.Lsp.CreateFile.annotationId?
code: structure CreateFile where
  uri           : DocumentUri
  options?      : Option CreateFile.Options := none
  annotationId? : Option String := none
  deriving ToJson, FromJson
goal: Option String

full_name: Lean.Lsp.instToJsonCreateFile
code: ToJson
goal: Lean.ToJson Lean.Lsp.CreateFile

full_name: Lean.Lsp.instFromJsonCreateFile
code: FromJson
goal: Lean.FromJson Lean.Lsp.CreateFile

full_name: Lean.Lsp.RenameFile
code: structure RenameFile where
  oldUri        : DocumentUri
  newUri        : DocumentUri
  options?      : Option CreateFile.Options := none
  annotationId? : Option String := none
  deriving ToJson, FromJson
goal: Type

full_name: Lean.Lsp.RenameFile.annotationId?
code: structure RenameFile where
  oldUri        : DocumentUri
  newUri        : DocumentUri
  options?      : Option CreateFile.Options := none
  annotationId? : Option String := none
  deriving ToJson, FromJson
goal: Option String

full_name: Lean.Lsp.RenameFile.oldUri
code: structure RenameFile where
  oldUri        : DocumentUri
  newUri        : DocumentUri
  options?      : Option CreateFile.Options := none
  annotationId? : Option String := none
  deriving ToJson, FromJson
goal: Lean.Lsp.DocumentUri

full_name: Lean.Lsp.RenameFile.newUri
code: structure RenameFile where
  oldUri        : DocumentUri
  newUri        : DocumentUri
  options?      : Option CreateFile.Options := none
  annotationId? : Option String := none
  deriving ToJson, FromJson
goal: Lean.Lsp.DocumentUri

full_name: Lean.Lsp.RenameFile.options?
code: structure RenameFile where
  oldUri        : DocumentUri
  newUri        : DocumentUri
  options?      : Option CreateFile.Options := none
  annotationId? : Option String := none
  deriving ToJson, FromJson
goal: Option Lean.Lsp.CreateFile.Options

full_name: Lean.Lsp.instToJsonRenameFile
code: ToJson
goal: Lean.ToJson Lean.Lsp.RenameFile

full_name: Lean.Lsp.instFromJsonRenameFile
code: FromJson
goal: Lean.FromJson Lean.Lsp.RenameFile

full_name: Lean.Lsp.DeleteFile
code: structure DeleteFile where
  uri           : DocumentUri
  options?      : Option DeleteFile.Options := none
  annotationId? : Option String := none
  deriving ToJson, FromJson
goal: Type

full_name: Lean.Lsp.DeleteFile.uri
code: structure DeleteFile where
  uri           : DocumentUri
  options?      : Option DeleteFile.Options := none
  annotationId? : Option String := none
  deriving ToJson, FromJson
goal: Lean.Lsp.DocumentUri

full_name: Lean.Lsp.DeleteFile.options?
code: structure DeleteFile where
  uri           : DocumentUri
  options?      : Option DeleteFile.Options := none
  annotationId? : Option String := none
  deriving ToJson, FromJson
goal: Option Lean.Lsp.DeleteFile.Options

full_name: Lean.Lsp.DeleteFile.annotationId?
code: structure DeleteFile where
  uri           : DocumentUri
  options?      : Option DeleteFile.Options := none
  annotationId? : Option String := none
  deriving ToJson, FromJson
goal: Option String

full_name: Lean.Lsp.instToJsonDeleteFile
code: ToJson
goal: Lean.ToJson Lean.Lsp.DeleteFile

full_name: Lean.Lsp.instFromJsonDeleteFile
code: FromJson
goal: Lean.FromJson Lean.Lsp.DeleteFile

full_name: Lean.Lsp.DocumentChange.create
code: /-- A change to a file resource.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#resourceChanges) -/
inductive DocumentChange where
  | create : CreateFile       → DocumentChange
  | rename : RenameFile       → DocumentChange
  | delete : DeleteFile       → DocumentChange
  | edit   : TextDocumentEdit → DocumentChange
goal: Lean.Lsp.CreateFile → Lean.Lsp.DocumentChange

full_name: Lean.Lsp.DocumentChange.rename
code: /-- A change to a file resource.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#resourceChanges) -/
inductive DocumentChange where
  | create : CreateFile       → DocumentChange
  | rename : RenameFile       → DocumentChange
  | delete : DeleteFile       → DocumentChange
  | edit   : TextDocumentEdit → DocumentChange
goal: Lean.Lsp.RenameFile → Lean.Lsp.DocumentChange

full_name: Lean.Lsp.DocumentChange
code: /-- A change to a file resource.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#resourceChanges) -/
inductive DocumentChange where
  | create : CreateFile       → DocumentChange
  | rename : RenameFile       → DocumentChange
  | delete : DeleteFile       → DocumentChange
  | edit   : TextDocumentEdit → DocumentChange
goal: Type

full_name: Lean.Lsp.DocumentChange.edit
code: /-- A change to a file resource.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#resourceChanges) -/
inductive DocumentChange where
  | create : CreateFile       → DocumentChange
  | rename : RenameFile       → DocumentChange
  | delete : DeleteFile       → DocumentChange
  | edit   : TextDocumentEdit → DocumentChange
goal: Lean.Lsp.TextDocumentEdit → Lean.Lsp.DocumentChange

full_name: Lean.Lsp.DocumentChange.delete
code: /-- A change to a file resource.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#resourceChanges) -/
inductive DocumentChange where
  | create : CreateFile       → DocumentChange
  | rename : RenameFile       → DocumentChange
  | delete : DeleteFile       → DocumentChange
  | edit   : TextDocumentEdit → DocumentChange
goal: Lean.Lsp.DeleteFile → Lean.Lsp.DocumentChange

full_name: Lean.Lsp.instToJsonDocumentChange
code: instance : ToJson DocumentChange 
goal: Lean.ToJson Lean.Lsp.DocumentChange

full_name: Lean.Lsp.instFromJsonDocumentChange
code: instance : FromJson DocumentChange 
goal: Lean.FromJson Lean.Lsp.DocumentChange

full_name: Lean.Lsp.WorkspaceEdit.changes?
code: /-- A workspace edit represents changes to many resources managed in the workspace.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#workspaceEdit) -/
structure WorkspaceEdit where
  /-- Changes to existing resources. -/
  changes? : Option (RBMap DocumentUri TextEditBatch compare) := none
  /-- Depending on the client capability
    `workspace.workspaceEdit.resourceOperations` document changes are either
    an array of `TextDocumentEdit`s to express changes to n different text
    documents where each text document edit addresses a specific version of
    a text document. Or it can contain above `TextDocumentEdit`s mixed with
    create, rename and delete file / folder operations.

    Whether a client supports versioned document edits is expressed via
    `workspace.workspaceEdit.documentChanges` client capability.

    If a client neither supports `documentChanges` nor
    `workspace.workspaceEdit.resourceOperations` then only plain `TextEdit`s
    using the `changes` property are supported. -/
  documentChanges? : Option (Array DocumentChange) := none
  /-- A map of change annotations that can be referenced in
      `AnnotatedTextEdit`s or create, rename and delete file / folder
      operations.

      Whether clients honor this property depends on the client capability
      `workspace.changeAnnotationSupport`. -/
  changeAnnotations? : Option (RBMap String ChangeAnnotation compare) := none
  deriving ToJson, FromJson
goal: Option (Lean.RBMap Lean.Lsp.DocumentUri Lean.Lsp.TextEditBatch compare)

full_name: Lean.Lsp.WorkspaceEdit
code: /-- A workspace edit represents changes to many resources managed in the workspace.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#workspaceEdit) -/
structure WorkspaceEdit where
  /-- Changes to existing resources. -/
  changes? : Option (RBMap DocumentUri TextEditBatch compare) := none
  /-- Depending on the client capability
    `workspace.workspaceEdit.resourceOperations` document changes are either
    an array of `TextDocumentEdit`s to express changes to n different text
    documents where each text document edit addresses a specific version of
    a text document. Or it can contain above `TextDocumentEdit`s mixed with
    create, rename and delete file / folder operations.

    Whether a client supports versioned document edits is expressed via
    `workspace.workspaceEdit.documentChanges` client capability.

    If a client neither supports `documentChanges` nor
    `workspace.workspaceEdit.resourceOperations` then only plain `TextEdit`s
    using the `changes` property are supported. -/
  documentChanges? : Option (Array DocumentChange) := none
  /-- A map of change annotations that can be referenced in
      `AnnotatedTextEdit`s or create, rename and delete file / folder
      operations.

      Whether clients honor this property depends on the client capability
      `workspace.changeAnnotationSupport`. -/
  changeAnnotations? : Option (RBMap String ChangeAnnotation compare) := none
  deriving ToJson, FromJson
goal: Type

full_name: Lean.Lsp.WorkspaceEdit.documentChanges?
code: /-- A workspace edit represents changes to many resources managed in the workspace.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#workspaceEdit) -/
structure WorkspaceEdit where
  /-- Changes to existing resources. -/
  changes? : Option (RBMap DocumentUri TextEditBatch compare) := none
  /-- Depending on the client capability
    `workspace.workspaceEdit.resourceOperations` document changes are either
    an array of `TextDocumentEdit`s to express changes to n different text
    documents where each text document edit addresses a specific version of
    a text document. Or it can contain above `TextDocumentEdit`s mixed with
    create, rename and delete file / folder operations.

    Whether a client supports versioned document edits is expressed via
    `workspace.workspaceEdit.documentChanges` client capability.

    If a client neither supports `documentChanges` nor
    `workspace.workspaceEdit.resourceOperations` then only plain `TextEdit`s
    using the `changes` property are supported. -/
  documentChanges? : Option (Array DocumentChange) := none
  /-- A map of change annotations that can be referenced in
      `AnnotatedTextEdit`s or create, rename and delete file / folder
      operations.

      Whether clients honor this property depends on the client capability
      `workspace.changeAnnotationSupport`. -/
  changeAnnotations? : Option (RBMap String ChangeAnnotation compare) := none
  deriving ToJson, FromJson
goal: Option (Array Lean.Lsp.DocumentChange)

full_name: Lean.Lsp.WorkspaceEdit.changeAnnotations?
code: /-- A workspace edit represents changes to many resources managed in the workspace.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#workspaceEdit) -/
structure WorkspaceEdit where
  /-- Changes to existing resources. -/
  changes? : Option (RBMap DocumentUri TextEditBatch compare) := none
  /-- Depending on the client capability
    `workspace.workspaceEdit.resourceOperations` document changes are either
    an array of `TextDocumentEdit`s to express changes to n different text
    documents where each text document edit addresses a specific version of
    a text document. Or it can contain above `TextDocumentEdit`s mixed with
    create, rename and delete file / folder operations.

    Whether a client supports versioned document edits is expressed via
    `workspace.workspaceEdit.documentChanges` client capability.

    If a client neither supports `documentChanges` nor
    `workspace.workspaceEdit.resourceOperations` then only plain `TextEdit`s
    using the `changes` property are supported. -/
  documentChanges? : Option (Array DocumentChange) := none
  /-- A map of change annotations that can be referenced in
      `AnnotatedTextEdit`s or create, rename and delete file / folder
      operations.

      Whether clients honor this property depends on the client capability
      `workspace.changeAnnotationSupport`. -/
  changeAnnotations? : Option (RBMap String ChangeAnnotation compare) := none
  deriving ToJson, FromJson
goal: Option (Lean.RBMap String Lean.Lsp.ChangeAnnotation compare)

full_name: Lean.Lsp.instToJsonWorkspaceEdit
code: ToJson
goal: Lean.ToJson Lean.Lsp.WorkspaceEdit

full_name: Lean.Lsp.instFromJsonWorkspaceEdit
code: FromJson
goal: Lean.FromJson Lean.Lsp.WorkspaceEdit

full_name: Lean.Lsp.WorkspaceEdit.instEmptyCollection
code: instance : EmptyCollection WorkspaceEdit 
goal: EmptyCollection Lean.Lsp.WorkspaceEdit

full_name: Lean.Lsp.WorkspaceEdit.instAppend
code: instance : Append WorkspaceEdit 
goal: Append Lean.Lsp.WorkspaceEdit

full_name: Lean.Lsp.WorkspaceEdit.ofTextDocumentEdit
code: def ofTextDocumentEdit (e : TextDocumentEdit) : WorkspaceEdit 
goal: Lean.Lsp.WorkspaceEdit

full_name: Lean.Lsp.WorkspaceEdit.ofTextEdit
code: def ofTextEdit (doc : VersionedTextDocumentIdentifier) (te : TextEdit) : WorkspaceEdit 
goal: Lean.Lsp.WorkspaceEdit

full_name: Lean.Lsp.ApplyWorkspaceEditParams.label?
code: /-- The `workspace/applyEdit` request is sent from the server to the client to modify resource on the client side.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#applyWorkspaceEditParams) -/
structure ApplyWorkspaceEditParams where
  /-- An optional label of the workspace edit. This label is
  presented in the user interface for example on an undo
  stack to undo the workspace edit. -/
  label? : Option String := none
  /-- The edits to apply. -/
  edit : WorkspaceEdit
  deriving ToJson, FromJson
goal: Option String

full_name: Lean.Lsp.ApplyWorkspaceEditParams.edit
code: /-- The `workspace/applyEdit` request is sent from the server to the client to modify resource on the client side.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#applyWorkspaceEditParams) -/
structure ApplyWorkspaceEditParams where
  /-- An optional label of the workspace edit. This label is
  presented in the user interface for example on an undo
  stack to undo the workspace edit. -/
  label? : Option String := none
  /-- The edits to apply. -/
  edit : WorkspaceEdit
  deriving ToJson, FromJson
goal: Lean.Lsp.WorkspaceEdit

full_name: Lean.Lsp.ApplyWorkspaceEditParams
code: /-- The `workspace/applyEdit` request is sent from the server to the client to modify resource on the client side.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#applyWorkspaceEditParams) -/
structure ApplyWorkspaceEditParams where
  /-- An optional label of the workspace edit. This label is
  presented in the user interface for example on an undo
  stack to undo the workspace edit. -/
  label? : Option String := none
  /-- The edits to apply. -/
  edit : WorkspaceEdit
  deriving ToJson, FromJson
goal: Type

full_name: Lean.Lsp.instToJsonApplyWorkspaceEditParams
code: ToJson
goal: Lean.ToJson Lean.Lsp.ApplyWorkspaceEditParams

full_name: Lean.Lsp.instFromJsonApplyWorkspaceEditParams
code: FromJson
goal: Lean.FromJson Lean.Lsp.ApplyWorkspaceEditParams

full_name: Lean.Lsp.TextDocumentItem.version
code: /-- An item to transfer a text document from the client to the server.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocumentItem)
-/
structure TextDocumentItem where
  /-- The text document's URI. -/
  uri : DocumentUri
  /-- The text document's language identifier. -/
  languageId : String
  /-- The version number of this document (it will increase after each change, including undo/redo). -/
  version : Nat
  /-- The content of the opened text document. -/
  text : String
  deriving ToJson, FromJson
goal: Nat

full_name: Lean.Lsp.TextDocumentItem.languageId
code: /-- An item to transfer a text document from the client to the server.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocumentItem)
-/
structure TextDocumentItem where
  /-- The text document's URI. -/
  uri : DocumentUri
  /-- The text document's language identifier. -/
  languageId : String
  /-- The version number of this document (it will increase after each change, including undo/redo). -/
  version : Nat
  /-- The content of the opened text document. -/
  text : String
  deriving ToJson, FromJson
goal: String

full_name: Lean.Lsp.TextDocumentItem
code: /-- An item to transfer a text document from the client to the server.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocumentItem)
-/
structure TextDocumentItem where
  /-- The text document's URI. -/
  uri : DocumentUri
  /-- The text document's language identifier. -/
  languageId : String
  /-- The version number of this document (it will increase after each change, including undo/redo). -/
  version : Nat
  /-- The content of the opened text document. -/
  text : String
  deriving ToJson, FromJson
goal: Type

full_name: Lean.Lsp.TextDocumentItem.uri
code: /-- An item to transfer a text document from the client to the server.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocumentItem)
-/
structure TextDocumentItem where
  /-- The text document's URI. -/
  uri : DocumentUri
  /-- The text document's language identifier. -/
  languageId : String
  /-- The version number of this document (it will increase after each change, including undo/redo). -/
  version : Nat
  /-- The content of the opened text document. -/
  text : String
  deriving ToJson, FromJson
goal: Lean.Lsp.DocumentUri

full_name: Lean.Lsp.TextDocumentItem.text
code: /-- An item to transfer a text document from the client to the server.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocumentItem)
-/
structure TextDocumentItem where
  /-- The text document's URI. -/
  uri : DocumentUri
  /-- The text document's language identifier. -/
  languageId : String
  /-- The version number of this document (it will increase after each change, including undo/redo). -/
  version : Nat
  /-- The content of the opened text document. -/
  text : String
  deriving ToJson, FromJson
goal: String

full_name: Lean.Lsp.instToJsonTextDocumentItem
code: ToJson
goal: Lean.ToJson Lean.Lsp.TextDocumentItem

full_name: Lean.Lsp.instFromJsonTextDocumentItem
code: FromJson
goal: Lean.FromJson Lean.Lsp.TextDocumentItem

full_name: Lean.Lsp.TextDocumentPositionParams.textDocument
code: structure TextDocumentPositionParams where
  textDocument : TextDocumentIdentifier
  position : Position
  deriving ToJson, FromJson
goal: Lean.Lsp.TextDocumentIdentifier

full_name: Lean.Lsp.TextDocumentPositionParams.position
code: structure TextDocumentPositionParams where
  textDocument : TextDocumentIdentifier
  position : Position
  deriving ToJson, FromJson
goal: Lean.Lsp.Position

full_name: Lean.Lsp.TextDocumentPositionParams
code: structure TextDocumentPositionParams where
  textDocument : TextDocumentIdentifier
  position : Position
  deriving ToJson, FromJson
goal: Type

full_name: Lean.Lsp.instToJsonTextDocumentPositionParams
code: ToJson
goal: Lean.ToJson Lean.Lsp.TextDocumentPositionParams

full_name: Lean.Lsp.instFromJsonTextDocumentPositionParams
code: FromJson
goal: Lean.FromJson Lean.Lsp.TextDocumentPositionParams

full_name: Lean.Lsp.instToStringTextDocumentPositionParams
code: instance : ToString TextDocumentPositionParams 
goal: ToString Lean.Lsp.TextDocumentPositionParams

full_name: Lean.Lsp.DocumentFilter.pattern?
code: structure DocumentFilter where
  language? : Option String := none
  scheme?   : Option String := none
  pattern?  : Option String := none
  deriving ToJson, FromJson
goal: Option String

full_name: Lean.Lsp.DocumentFilter.language?
code: structure DocumentFilter where
  language? : Option String := none
  scheme?   : Option String := none
  pattern?  : Option String := none
  deriving ToJson, FromJson
goal: Option String

full_name: Lean.Lsp.DocumentFilter.scheme?
code: structure DocumentFilter where
  language? : Option String := none
  scheme?   : Option String := none
  pattern?  : Option String := none
  deriving ToJson, FromJson
goal: Option String

full_name: Lean.Lsp.DocumentFilter
code: structure DocumentFilter where
  language? : Option String := none
  scheme?   : Option String := none
  pattern?  : Option String := none
  deriving ToJson, FromJson
goal: Type

full_name: Lean.Lsp.instToJsonDocumentFilter
code: ToJson
goal: Lean.ToJson Lean.Lsp.DocumentFilter

full_name: Lean.Lsp.instFromJsonDocumentFilter
code: FromJson
goal: Lean.FromJson Lean.Lsp.DocumentFilter

full_name: Lean.Lsp.DocumentSelector
code: def DocumentSelector 
goal: Type

full_name: Lean.Lsp.instFromJsonDocumentSelector
code: instance : FromJson DocumentSelector 
goal: Lean.FromJson Lean.Lsp.DocumentSelector

full_name: Lean.Lsp.instToJsonDocumentSelector
code: instance : ToJson DocumentSelector 
goal: Lean.ToJson Lean.Lsp.DocumentSelector

full_name: Lean.Lsp.StaticRegistrationOptions.id?
code: structure StaticRegistrationOptions where
  id? : Option String := none
  deriving ToJson, FromJson
goal: Option String

full_name: Lean.Lsp.StaticRegistrationOptions
code: structure StaticRegistrationOptions where
  id? : Option String := none
  deriving ToJson, FromJson
goal: Type

full_name: Lean.Lsp.instToJsonStaticRegistrationOptions
code: ToJson
goal: Lean.ToJson Lean.Lsp.StaticRegistrationOptions

full_name: Lean.Lsp.instFromJsonStaticRegistrationOptions
code: FromJson
goal: Lean.FromJson Lean.Lsp.StaticRegistrationOptions

full_name: Lean.Lsp.TextDocumentRegistrationOptions.documentSelector?
code: structure TextDocumentRegistrationOptions where
  documentSelector? : Option DocumentSelector := none
  deriving ToJson, FromJson
goal: Option Lean.Lsp.DocumentSelector

full_name: Lean.Lsp.TextDocumentRegistrationOptions
code: structure TextDocumentRegistrationOptions where
  documentSelector? : Option DocumentSelector := none
  deriving ToJson, FromJson
goal: Type

full_name: Lean.Lsp.instToJsonTextDocumentRegistrationOptions
code: ToJson
goal: Lean.ToJson Lean.Lsp.TextDocumentRegistrationOptions

full_name: Lean.Lsp.instFromJsonTextDocumentRegistrationOptions
code: FromJson
goal: Lean.FromJson Lean.Lsp.TextDocumentRegistrationOptions

full_name: Lean.Lsp.MarkupKind
code: inductive MarkupKind where
  | plaintext | markdown
goal: Type

full_name: Lean.Lsp.MarkupKind.plaintext
code: inductive MarkupKind where
  | plaintext | markdown
goal: Lean.Lsp.MarkupKind

full_name: Lean.Lsp.MarkupKind.markdown
code: inductive MarkupKind where
  | plaintext | markdown
goal: Lean.Lsp.MarkupKind

full_name: Lean.Lsp.instFromJsonMarkupKind
code: instance : FromJson MarkupKind 
goal: Lean.FromJson Lean.Lsp.MarkupKind

full_name: Lean.Lsp.instToJsonMarkupKind
code: instance : ToJson MarkupKind 
goal: Lean.ToJson Lean.Lsp.MarkupKind

full_name: Lean.Lsp.MarkupContent.kind
code: structure MarkupContent where
  kind  : MarkupKind
  value : String
  deriving ToJson, FromJson
goal: Lean.Lsp.MarkupKind

full_name: Lean.Lsp.MarkupContent.value
code: structure MarkupContent where
  kind  : MarkupKind
  value : String
  deriving ToJson, FromJson
goal: String

full_name: Lean.Lsp.MarkupContent
code: structure MarkupContent where
  kind  : MarkupKind
  value : String
  deriving ToJson, FromJson
goal: Type

full_name: Lean.Lsp.instToJsonMarkupContent
code: ToJson
goal: Lean.ToJson Lean.Lsp.MarkupContent

full_name: Lean.Lsp.instFromJsonMarkupContent
code: FromJson
goal: Lean.FromJson Lean.Lsp.MarkupContent

full_name: Lean.Lsp.ProgressToken
code: /-- Reference to the progress of some in-flight piece of work.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#progress)
-/
abbrev ProgressToken 
goal: Type

full_name: Lean.Lsp.ProgressParams
code: /-- Params for JSON-RPC method `$/progress` request.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#progress) -/
structure ProgressParams (α : Type) where
  token : ProgressToken
  value : α
  deriving ToJson
goal: Type

full_name: Lean.Lsp.ProgressParams.token
code: /-- Params for JSON-RPC method `$/progress` request.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#progress) -/
structure ProgressParams (α : Type) where
  token : ProgressToken
  value : α
  deriving ToJson
goal: Lean.Lsp.ProgressToken

full_name: Lean.Lsp.ProgressParams.value
code: /-- Params for JSON-RPC method `$/progress` request.

[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#progress) -/
structure ProgressParams (α : Type) where
  token : ProgressToken
  value : α
  deriving ToJson
goal: α

full_name: Lean.Lsp.instToJsonProgressParams
code: ToJson
goal: {α : Type} → [inst : Lean.ToJson α] → Lean.ToJson (Lean.Lsp.ProgressParams α)

full_name: Lean.Lsp.WorkDoneProgressReport.percentage?
code: structure WorkDoneProgressReport where
  kind := "report"
  /-- More detailed associated progress message. -/
  message? : Option String := none
  /-- Controls if a cancel button should show to allow the user to cancel the operation. -/
  cancellable := false
  /-- Optional progress percentage to display (value 100 is considered 100%).
      If not provided infinite progress is assumed. -/
  percentage? : Option Nat := none
  deriving ToJson
goal: Option Nat

full_name: Lean.Lsp.WorkDoneProgressReport.kind
code: structure WorkDoneProgressReport where
  kind := "report"
  /-- More detailed associated progress message. -/
  message? : Option String := none
  /-- Controls if a cancel button should show to allow the user to cancel the operation. -/
  cancellable := false
  /-- Optional progress percentage to display (value 100 is considered 100%).
      If not provided infinite progress is assumed. -/
  percentage? : Option Nat := none
  deriving ToJson
goal: String

full_name: Lean.Lsp.WorkDoneProgressReport
code: structure WorkDoneProgressReport where
  kind := "report"
  /-- More detailed associated progress message. -/
  message? : Option String := none
  /-- Controls if a cancel button should show to allow the user to cancel the operation. -/
  cancellable := false
  /-- Optional progress percentage to display (value 100 is considered 100%).
      If not provided infinite progress is assumed. -/
  percentage? : Option Nat := none
  deriving ToJson
goal: Type

full_name: Lean.Lsp.WorkDoneProgressReport.message?
code: structure WorkDoneProgressReport where
  kind := "report"
  /-- More detailed associated progress message. -/
  message? : Option String := none
  /-- Controls if a cancel button should show to allow the user to cancel the operation. -/
  cancellable := false
  /-- Optional progress percentage to display (value 100 is considered 100%).
      If not provided infinite progress is assumed. -/
  percentage? : Option Nat := none
  deriving ToJson
goal: Option String

full_name: Lean.Lsp.WorkDoneProgressReport.cancellable
code: structure WorkDoneProgressReport where
  kind := "report"
  /-- More detailed associated progress message. -/
  message? : Option String := none
  /-- Controls if a cancel button should show to allow the user to cancel the operation. -/
  cancellable := false
  /-- Optional progress percentage to display (value 100 is considered 100%).
      If not provided infinite progress is assumed. -/
  percentage? : Option Nat := none
  deriving ToJson
goal: Bool

full_name: Lean.Lsp.instToJsonWorkDoneProgressReport
code: ToJson
goal: Lean.ToJson Lean.Lsp.WorkDoneProgressReport

full_name: Lean.Lsp.WorkDoneProgressBegin.title
code: /-- Notification to signal the start of progress reporting. -/
structure WorkDoneProgressBegin extends WorkDoneProgressReport where
  kind := "begin"
  title : String
  deriving ToJson
goal: String

full_name: Lean.Lsp.WorkDoneProgressBegin
code: /-- Notification to signal the start of progress reporting. -/
structure WorkDoneProgressBegin extends WorkDoneProgressReport where
  kind := "begin"
  title : String
  deriving ToJson
goal: Type

full_name: Lean.Lsp.instToJsonWorkDoneProgressBegin
code: ToJson
goal: Lean.ToJson Lean.Lsp.WorkDoneProgressBegin

full_name: Lean.Lsp.WorkDoneProgressEnd.kind
code: /-- Signals the end of progress reporting. -/
structure WorkDoneProgressEnd where
  kind := "end"
  message? : Option String := none
  deriving ToJson
goal: String

full_name: Lean.Lsp.WorkDoneProgressEnd
code: /-- Signals the end of progress reporting. -/
structure WorkDoneProgressEnd where
  kind := "end"
  message? : Option String := none
  deriving ToJson
goal: Type

full_name: Lean.Lsp.WorkDoneProgressEnd.message?
code: /-- Signals the end of progress reporting. -/
structure WorkDoneProgressEnd where
  kind := "end"
  message? : Option String := none
  deriving ToJson
goal: Option String

full_name: Lean.Lsp.instToJsonWorkDoneProgressEnd
code: ToJson
goal: Lean.ToJson Lean.Lsp.WorkDoneProgressEnd

full_name: Lean.Lsp.WorkDoneProgressParams.workDoneToken?
code: structure WorkDoneProgressParams where
  workDoneToken? : Option ProgressToken := none
  deriving ToJson, FromJson
goal: Option Lean.Lsp.ProgressToken

full_name: Lean.Lsp.WorkDoneProgressParams
code: structure WorkDoneProgressParams where
  workDoneToken? : Option ProgressToken := none
  deriving ToJson, FromJson
goal: Type

full_name: Lean.Lsp.instToJsonWorkDoneProgressParams
code: ToJson
goal: Lean.ToJson Lean.Lsp.WorkDoneProgressParams

full_name: Lean.Lsp.instFromJsonWorkDoneProgressParams
code: FromJson
goal: Lean.FromJson Lean.Lsp.WorkDoneProgressParams

full_name: Lean.Lsp.PartialResultParams
code: structure PartialResultParams where
  partialResultToken? : Option ProgressToken := none
  deriving ToJson, FromJson
goal: Type

full_name: Lean.Lsp.PartialResultParams.partialResultToken?
code: structure PartialResultParams where
  partialResultToken? : Option ProgressToken := none
  deriving ToJson, FromJson
goal: Option Lean.Lsp.ProgressToken

full_name: Lean.Lsp.instToJsonPartialResultParams
code: ToJson
goal: Lean.ToJson Lean.Lsp.PartialResultParams

full_name: Lean.Lsp.instFromJsonPartialResultParams
code: FromJson
goal: Lean.FromJson Lean.Lsp.PartialResultParams

full_name: Lean.Lsp.WorkDoneProgressOptions.workDoneProgress
code: /-- [reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#workDoneProgressOptions) -/
structure WorkDoneProgressOptions where
  workDoneProgress := false
  deriving ToJson, FromJson
goal: Bool

full_name: Lean.Lsp.WorkDoneProgressOptions
code: /-- [reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#workDoneProgressOptions) -/
structure WorkDoneProgressOptions where
  workDoneProgress := false
  deriving ToJson, FromJson
goal: Type

full_name: Lean.Lsp.instToJsonWorkDoneProgressOptions
code: ToJson
goal: Lean.ToJson Lean.Lsp.WorkDoneProgressOptions

full_name: Lean.Lsp.instFromJsonWorkDoneProgressOptions
code: FromJson
goal: Lean.FromJson Lean.Lsp.WorkDoneProgressOptions