tsprotocol.go

   1// Copyright 2023 The Go Authors. All rights reserved.
   2// Use of this source code is governed by a BSD-style
   3// license that can be found in the LICENSE file.
   4
   5// Code generated for LSP. DO NOT EDIT.
   6
   7package protocol
   8
   9// Code generated from protocol/metaModel.json at ref release/protocol/3.17.6-next.9 (hash c94395b5da53729e6dff931293b051009ccaaaa4).
  10// https://github.com/microsoft/vscode-languageserver-node/blob/release/protocol/3.17.6-next.9/protocol/metaModel.json
  11// LSP metaData.version = 3.17.0.
  12
  13import "encoding/json"
  14
  15// created for And
  16type And_RegOpt_textDocument_colorPresentation struct {
  17	WorkDoneProgressOptions
  18	TextDocumentRegistrationOptions
  19}
  20
  21// A special text edit with an additional change annotation.
  22//
  23// @since 3.16.0.
  24//
  25// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#annotatedTextEdit
  26type AnnotatedTextEdit struct {
  27	// The actual identifier of the change annotation
  28	AnnotationID *ChangeAnnotationIdentifier `json:"annotationId,omitempty"`
  29	TextEdit
  30}
  31
  32// The parameters passed via an apply workspace edit request.
  33//
  34// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#applyWorkspaceEditParams
  35type ApplyWorkspaceEditParams struct {
  36	// An optional label of the workspace edit. This label is
  37	// presented in the user interface for example on an undo
  38	// stack to undo the workspace edit.
  39	Label string `json:"label,omitempty"`
  40	// The edits to apply.
  41	Edit WorkspaceEdit `json:"edit"`
  42	// Additional data about the edit.
  43	//
  44	// @since 3.18.0
  45	// @proposed
  46	Metadata *WorkspaceEditMetadata `json:"metadata,omitempty"`
  47}
  48
  49// The result returned from the apply workspace edit request.
  50//
  51// @since 3.17 renamed from ApplyWorkspaceEditResponse
  52//
  53// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#applyWorkspaceEditResult
  54type ApplyWorkspaceEditResult struct {
  55	// Indicates whether the edit was applied or not.
  56	Applied bool `json:"applied"`
  57	// An optional textual description for why the edit was not applied.
  58	// This may be used by the server for diagnostic slog.or to provide
  59	// a suitable error for a request that triggered the edit.
  60	FailureReason string `json:"failureReason,omitempty"`
  61	// Depending on the client's failure handling strategy `failedChange` might
  62	// contain the index of the change that failed. This property is only available
  63	// if the client signals a `failureHandlingStrategy` in its client capabilities.
  64	FailedChange uint32 `json:"failedChange,omitempty"`
  65}
  66
  67// A base for all symbol information.
  68//
  69// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#baseSymbolInformation
  70type BaseSymbolInformation struct {
  71	// The name of this symbol.
  72	Name string `json:"name"`
  73	// The kind of this symbol.
  74	Kind SymbolKind `json:"kind"`
  75	// Tags for this symbol.
  76	//
  77	// @since 3.16.0
  78	Tags []SymbolTag `json:"tags,omitempty"`
  79	// The name of the symbol containing this symbol. This information is for
  80	// user interface purposes (e.g. to render a qualifier in the user interface
  81	// if necessary). It can't be used to re-infer a hierarchy for the document
  82	// symbols.
  83	ContainerName string `json:"containerName,omitempty"`
  84}
  85
  86// @since 3.16.0
  87//
  88// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#callHierarchyClientCapabilities
  89type CallHierarchyClientCapabilities struct {
  90	// Whether implementation supports dynamic registration. If this is set to `true`
  91	// the client supports the new `(TextDocumentRegistrationOptions & StaticRegistrationOptions)`
  92	// return value for the corresponding server capability as well.
  93	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
  94}
  95
  96// Represents an incoming call, e.g. a caller of a method or constructor.
  97//
  98// @since 3.16.0
  99//
 100// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#callHierarchyIncomingCall
 101type CallHierarchyIncomingCall struct {
 102	// The item that makes the call.
 103	From CallHierarchyItem `json:"from"`
 104	// The ranges at which the calls appear. This is relative to the caller
 105	// denoted by {@link CallHierarchyIncomingCall.from `this.from`}.
 106	FromRanges []Range `json:"fromRanges"`
 107}
 108
 109// The parameter of a `callHierarchy/incomingCalls` request.
 110//
 111// @since 3.16.0
 112//
 113// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#callHierarchyIncomingCallsParams
 114type CallHierarchyIncomingCallsParams struct {
 115	Item CallHierarchyItem `json:"item"`
 116	WorkDoneProgressParams
 117	PartialResultParams
 118}
 119
 120// Represents programming constructs like functions or constructors in the context
 121// of call hierarchy.
 122//
 123// @since 3.16.0
 124//
 125// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#callHierarchyItem
 126type CallHierarchyItem struct {
 127	// The name of this item.
 128	Name string `json:"name"`
 129	// The kind of this item.
 130	Kind SymbolKind `json:"kind"`
 131	// Tags for this item.
 132	Tags []SymbolTag `json:"tags,omitempty"`
 133	// More detail for this item, e.g. the signature of a function.
 134	Detail string `json:"detail,omitempty"`
 135	// The resource identifier of this item.
 136	URI DocumentUri `json:"uri"`
 137	// The range enclosing this symbol not including leading/trailing whitespace but everything else, e.g. comments and code.
 138	Range Range `json:"range"`
 139	// The range that should be selected and revealed when this symbol is being picked, e.g. the name of a function.
 140	// Must be contained by the {@link CallHierarchyItem.range `range`}.
 141	SelectionRange Range `json:"selectionRange"`
 142	// A data entry field that is preserved between a call hierarchy prepare and
 143	// incoming calls or outgoing calls requests.
 144	Data interface{} `json:"data,omitempty"`
 145}
 146
 147// Call hierarchy options used during static registration.
 148//
 149// @since 3.16.0
 150//
 151// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#callHierarchyOptions
 152type CallHierarchyOptions struct {
 153	WorkDoneProgressOptions
 154}
 155
 156// Represents an outgoing call, e.g. calling a getter from a method or a method from a constructor etc.
 157//
 158// @since 3.16.0
 159//
 160// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#callHierarchyOutgoingCall
 161type CallHierarchyOutgoingCall struct {
 162	// The item that is called.
 163	To CallHierarchyItem `json:"to"`
 164	// The range at which this item is called. This is the range relative to the caller, e.g the item
 165	// passed to {@link CallHierarchyItemProvider.provideCallHierarchyOutgoingCalls `provideCallHierarchyOutgoingCalls`}
 166	// and not {@link CallHierarchyOutgoingCall.to `this.to`}.
 167	FromRanges []Range `json:"fromRanges"`
 168}
 169
 170// The parameter of a `callHierarchy/outgoingCalls` request.
 171//
 172// @since 3.16.0
 173//
 174// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#callHierarchyOutgoingCallsParams
 175type CallHierarchyOutgoingCallsParams struct {
 176	Item CallHierarchyItem `json:"item"`
 177	WorkDoneProgressParams
 178	PartialResultParams
 179}
 180
 181// The parameter of a `textDocument/prepareCallHierarchy` request.
 182//
 183// @since 3.16.0
 184//
 185// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#callHierarchyPrepareParams
 186type CallHierarchyPrepareParams struct {
 187	TextDocumentPositionParams
 188	WorkDoneProgressParams
 189}
 190
 191// Call hierarchy options used during static or dynamic registration.
 192//
 193// @since 3.16.0
 194//
 195// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#callHierarchyRegistrationOptions
 196type CallHierarchyRegistrationOptions struct {
 197	TextDocumentRegistrationOptions
 198	CallHierarchyOptions
 199	StaticRegistrationOptions
 200}
 201
 202// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#cancelParams
 203type CancelParams struct {
 204	// The request id to cancel.
 205	ID interface{} `json:"id"`
 206}
 207
 208// Additional information that describes document changes.
 209//
 210// @since 3.16.0
 211//
 212// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#changeAnnotation
 213type ChangeAnnotation struct {
 214	// A human-readable string describing the actual change. The string
 215	// is rendered prominent in the user interface.
 216	Label string `json:"label"`
 217	// A flag which indicates that user confirmation is needed
 218	// before applying the change.
 219	NeedsConfirmation bool `json:"needsConfirmation,omitempty"`
 220	// A human-readable string which is rendered less prominent in
 221	// the user interface.
 222	Description string `json:"description,omitempty"`
 223}
 224
 225// An identifier to refer to a change annotation stored with a workspace edit.
 226//
 227// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#changeAnnotationIdentifier
 228type ChangeAnnotationIdentifier = string // (alias)
 229// @since 3.18.0
 230//
 231// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#changeAnnotationsSupportOptions
 232type ChangeAnnotationsSupportOptions struct {
 233	// Whether the client groups edits with equal labels into tree nodes,
 234	// for instance all edits labelled with "Changes in Strings" would
 235	// be a tree node.
 236	GroupsOnLabel bool `json:"groupsOnLabel,omitempty"`
 237}
 238
 239// Defines the capabilities provided by the client.
 240//
 241// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientCapabilities
 242type ClientCapabilities struct {
 243	// Workspace specific client capabilities.
 244	Workspace WorkspaceClientCapabilities `json:"workspace,omitempty"`
 245	// Text document specific client capabilities.
 246	TextDocument TextDocumentClientCapabilities `json:"textDocument,omitempty"`
 247	// Capabilities specific to the notebook document support.
 248	//
 249	// @since 3.17.0
 250	NotebookDocument *NotebookDocumentClientCapabilities `json:"notebookDocument,omitempty"`
 251	// Window specific client capabilities.
 252	Window WindowClientCapabilities `json:"window,omitempty"`
 253	// General client capabilities.
 254	//
 255	// @since 3.16.0
 256	General *GeneralClientCapabilities `json:"general,omitempty"`
 257	// Experimental client capabilities.
 258	Experimental interface{} `json:"experimental,omitempty"`
 259}
 260
 261// @since 3.18.0
 262//
 263// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientCodeActionKindOptions
 264type ClientCodeActionKindOptions struct {
 265	// The code action kind values the client supports. When this
 266	// property exists the client also guarantees that it will
 267	// handle values outside its set gracefully and falls back
 268	// to a default value when unknown.
 269	ValueSet []CodeActionKind `json:"valueSet"`
 270}
 271
 272// @since 3.18.0
 273//
 274// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientCodeActionLiteralOptions
 275type ClientCodeActionLiteralOptions struct {
 276	// The code action kind is support with the following value
 277	// set.
 278	CodeActionKind ClientCodeActionKindOptions `json:"codeActionKind"`
 279}
 280
 281// @since 3.18.0
 282//
 283// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientCodeActionResolveOptions
 284type ClientCodeActionResolveOptions struct {
 285	// The properties that a client can resolve lazily.
 286	Properties []string `json:"properties"`
 287}
 288
 289// @since 3.18.0
 290//
 291// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientCodeLensResolveOptions
 292type ClientCodeLensResolveOptions struct {
 293	// The properties that a client can resolve lazily.
 294	Properties []string `json:"properties"`
 295}
 296
 297// @since 3.18.0
 298//
 299// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientCompletionItemInsertTextModeOptions
 300type ClientCompletionItemInsertTextModeOptions struct {
 301	ValueSet []InsertTextMode `json:"valueSet"`
 302}
 303
 304// @since 3.18.0
 305//
 306// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientCompletionItemOptions
 307type ClientCompletionItemOptions struct {
 308	// Client supports snippets as insert text.
 309	//
 310	// A snippet can define tab stops and placeholders with `$1`, `$2`
 311	// and `${3:foo}`. `$0` defines the final tab stop, it defaults to
 312	// the end of the snippet. Placeholders with equal identifiers are linked,
 313	// that is typing in one will update others too.
 314	SnippetSupport bool `json:"snippetSupport,omitempty"`
 315	// Client supports commit characters on a completion item.
 316	CommitCharactersSupport bool `json:"commitCharactersSupport,omitempty"`
 317	// Client supports the following content formats for the documentation
 318	// property. The order describes the preferred format of the client.
 319	DocumentationFormat []MarkupKind `json:"documentationFormat,omitempty"`
 320	// Client supports the deprecated property on a completion item.
 321	DeprecatedSupport bool `json:"deprecatedSupport,omitempty"`
 322	// Client supports the preselect property on a completion item.
 323	PreselectSupport bool `json:"preselectSupport,omitempty"`
 324	// Client supports the tag property on a completion item. Clients supporting
 325	// tags have to handle unknown tags gracefully. Clients especially need to
 326	// preserve unknown tags when sending a completion item back to the server in
 327	// a resolve call.
 328	//
 329	// @since 3.15.0
 330	TagSupport *CompletionItemTagOptions `json:"tagSupport,omitempty"`
 331	// Client support insert replace edit to control different behavior if a
 332	// completion item is inserted in the text or should replace text.
 333	//
 334	// @since 3.16.0
 335	InsertReplaceSupport bool `json:"insertReplaceSupport,omitempty"`
 336	// Indicates which properties a client can resolve lazily on a completion
 337	// item. Before version 3.16.0 only the predefined properties `documentation`
 338	// and `details` could be resolved lazily.
 339	//
 340	// @since 3.16.0
 341	ResolveSupport *ClientCompletionItemResolveOptions `json:"resolveSupport,omitempty"`
 342	// The client supports the `insertTextMode` property on
 343	// a completion item to override the whitespace handling mode
 344	// as defined by the client (see `insertTextMode`).
 345	//
 346	// @since 3.16.0
 347	InsertTextModeSupport *ClientCompletionItemInsertTextModeOptions `json:"insertTextModeSupport,omitempty"`
 348	// The client has support for completion item label
 349	// details (see also `CompletionItemLabelDetails`).
 350	//
 351	// @since 3.17.0
 352	LabelDetailsSupport bool `json:"labelDetailsSupport,omitempty"`
 353}
 354
 355// @since 3.18.0
 356//
 357// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientCompletionItemOptionsKind
 358type ClientCompletionItemOptionsKind struct {
 359	// The completion item kind values the client supports. When this
 360	// property exists the client also guarantees that it will
 361	// handle values outside its set gracefully and falls back
 362	// to a default value when unknown.
 363	//
 364	// If this property is not present the client only supports
 365	// the completion items kinds from `Text` to `Reference` as defined in
 366	// the initial version of the protocol.
 367	ValueSet []CompletionItemKind `json:"valueSet,omitempty"`
 368}
 369
 370// @since 3.18.0
 371//
 372// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientCompletionItemResolveOptions
 373type ClientCompletionItemResolveOptions struct {
 374	// The properties that a client can resolve lazily.
 375	Properties []string `json:"properties"`
 376}
 377
 378// @since 3.18.0
 379//
 380// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientDiagnosticsTagOptions
 381type ClientDiagnosticsTagOptions struct {
 382	// The tags supported by the client.
 383	ValueSet []DiagnosticTag `json:"valueSet"`
 384}
 385
 386// @since 3.18.0
 387//
 388// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientFoldingRangeKindOptions
 389type ClientFoldingRangeKindOptions struct {
 390	// The folding range kind values the client supports. When this
 391	// property exists the client also guarantees that it will
 392	// handle values outside its set gracefully and falls back
 393	// to a default value when unknown.
 394	ValueSet []FoldingRangeKind `json:"valueSet,omitempty"`
 395}
 396
 397// @since 3.18.0
 398//
 399// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientFoldingRangeOptions
 400type ClientFoldingRangeOptions struct {
 401	// If set, the client signals that it supports setting collapsedText on
 402	// folding ranges to display custom labels instead of the default text.
 403	//
 404	// @since 3.17.0
 405	CollapsedText bool `json:"collapsedText,omitempty"`
 406}
 407
 408// Information about the client
 409//
 410// @since 3.15.0
 411// @since 3.18.0 ClientInfo type name added.
 412//
 413// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientInfo
 414type ClientInfo struct {
 415	// The name of the client as defined by the client.
 416	Name string `json:"name"`
 417	// The client's version as defined by the client.
 418	Version string `json:"version,omitempty"`
 419}
 420
 421// @since 3.18.0
 422//
 423// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientInlayHintResolveOptions
 424type ClientInlayHintResolveOptions struct {
 425	// The properties that a client can resolve lazily.
 426	Properties []string `json:"properties"`
 427}
 428
 429// @since 3.18.0
 430//
 431// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientSemanticTokensRequestFullDelta
 432type ClientSemanticTokensRequestFullDelta struct {
 433	// The client will send the `textDocument/semanticTokens/full/delta` request if
 434	// the server provides a corresponding handler.
 435	Delta bool `json:"delta,omitempty"`
 436}
 437
 438// @since 3.18.0
 439//
 440// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientSemanticTokensRequestOptions
 441type ClientSemanticTokensRequestOptions struct {
 442	// The client will send the `textDocument/semanticTokens/range` request if
 443	// the server provides a corresponding handler.
 444	Range *Or_ClientSemanticTokensRequestOptions_range `json:"range,omitempty"`
 445	// The client will send the `textDocument/semanticTokens/full` request if
 446	// the server provides a corresponding handler.
 447	Full *Or_ClientSemanticTokensRequestOptions_full `json:"full,omitempty"`
 448}
 449
 450// @since 3.18.0
 451//
 452// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientShowMessageActionItemOptions
 453type ClientShowMessageActionItemOptions struct {
 454	// Whether the client supports additional attributes which
 455	// are preserved and send back to the server in the
 456	// request's response.
 457	AdditionalPropertiesSupport bool `json:"additionalPropertiesSupport,omitempty"`
 458}
 459
 460// @since 3.18.0
 461//
 462// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientSignatureInformationOptions
 463type ClientSignatureInformationOptions struct {
 464	// Client supports the following content formats for the documentation
 465	// property. The order describes the preferred format of the client.
 466	DocumentationFormat []MarkupKind `json:"documentationFormat,omitempty"`
 467	// Client capabilities specific to parameter information.
 468	ParameterInformation *ClientSignatureParameterInformationOptions `json:"parameterInformation,omitempty"`
 469	// The client supports the `activeParameter` property on `SignatureInformation`
 470	// literal.
 471	//
 472	// @since 3.16.0
 473	ActiveParameterSupport bool `json:"activeParameterSupport,omitempty"`
 474	// The client supports the `activeParameter` property on
 475	// `SignatureHelp`/`SignatureInformation` being set to `null` to
 476	// indicate that no parameter should be active.
 477	//
 478	// @since 3.18.0
 479	// @proposed
 480	NoActiveParameterSupport bool `json:"noActiveParameterSupport,omitempty"`
 481}
 482
 483// @since 3.18.0
 484//
 485// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientSignatureParameterInformationOptions
 486type ClientSignatureParameterInformationOptions struct {
 487	// The client supports processing label offsets instead of a
 488	// simple label string.
 489	//
 490	// @since 3.14.0
 491	LabelOffsetSupport bool `json:"labelOffsetSupport,omitempty"`
 492}
 493
 494// @since 3.18.0
 495//
 496// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientSymbolKindOptions
 497type ClientSymbolKindOptions struct {
 498	// The symbol kind values the client supports. When this
 499	// property exists the client also guarantees that it will
 500	// handle values outside its set gracefully and falls back
 501	// to a default value when unknown.
 502	//
 503	// If this property is not present the client only supports
 504	// the symbol kinds from `File` to `Array` as defined in
 505	// the initial version of the protocol.
 506	ValueSet []SymbolKind `json:"valueSet,omitempty"`
 507}
 508
 509// @since 3.18.0
 510//
 511// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientSymbolResolveOptions
 512type ClientSymbolResolveOptions struct {
 513	// The properties that a client can resolve lazily. Usually
 514	// `location.range`
 515	Properties []string `json:"properties"`
 516}
 517
 518// @since 3.18.0
 519//
 520// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientSymbolTagOptions
 521type ClientSymbolTagOptions struct {
 522	// The tags supported by the client.
 523	ValueSet []SymbolTag `json:"valueSet"`
 524}
 525
 526// A code action represents a change that can be performed in code, e.g. to fix a problem or
 527// to refactor code.
 528//
 529// A CodeAction must set either `edit` and/or a `command`. If both are supplied, the `edit` is applied first, then the `command` is executed.
 530//
 531// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeAction
 532type CodeAction struct {
 533	// A short, human-readable, title for this code action.
 534	Title string `json:"title"`
 535	// The kind of the code action.
 536	//
 537	// Used to filter code actions.
 538	Kind CodeActionKind `json:"kind,omitempty"`
 539	// The diagnostics that this code action resolves.
 540	Diagnostics []Diagnostic `json:"diagnostics,omitempty"`
 541	// Marks this as a preferred action. Preferred actions are used by the `auto fix` command and can be targeted
 542	// by keybindings.
 543	//
 544	// A quick fix should be marked preferred if it properly addresses the underlying error.
 545	// A refactoring should be marked preferred if it is the most reasonable choice of actions to take.
 546	//
 547	// @since 3.15.0
 548	IsPreferred bool `json:"isPreferred,omitempty"`
 549	// Marks that the code action cannot currently be applied.
 550	//
 551	// Clients should follow the following guidelines regarding disabled code actions:
 552	//
 553	//   - Disabled code actions are not shown in automatic [lightbulbs](https://code.visualstudio.com/docs/editor/editingevolved#_code-action)
 554	//     code action menus.
 555	//
 556	//   - Disabled actions are shown as faded out in the code action menu when the user requests a more specific type
 557	//     of code action, such as refactorings.
 558	//
 559	//   - If the user has a [keybinding](https://code.visualstudio.com/docs/editor/refactoring#_keybindings-for-code-actions)
 560	//     that auto applies a code action and only disabled code actions are returned, the client should show the user an
 561	//     error message with `reason` in the editor.
 562	//
 563	// @since 3.16.0
 564	Disabled *CodeActionDisabled `json:"disabled,omitempty"`
 565	// The workspace edit this code action performs.
 566	Edit *WorkspaceEdit `json:"edit,omitempty"`
 567	// A command this code action executes. If a code action
 568	// provides an edit and a command, first the edit is
 569	// executed and then the command.
 570	Command *Command `json:"command,omitempty"`
 571	// A data entry field that is preserved on a code action between
 572	// a `textDocument/codeAction` and a `codeAction/resolve` request.
 573	//
 574	// @since 3.16.0
 575	Data *json.RawMessage `json:"data,omitempty"`
 576}
 577
 578// The Client Capabilities of a {@link CodeActionRequest}.
 579//
 580// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeActionClientCapabilities
 581type CodeActionClientCapabilities struct {
 582	// Whether code action supports dynamic registration.
 583	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
 584	// The client support code action literals of type `CodeAction` as a valid
 585	// response of the `textDocument/codeAction` request. If the property is not
 586	// set the request can only return `Command` literals.
 587	//
 588	// @since 3.8.0
 589	CodeActionLiteralSupport ClientCodeActionLiteralOptions `json:"codeActionLiteralSupport,omitempty"`
 590	// Whether code action supports the `isPreferred` property.
 591	//
 592	// @since 3.15.0
 593	IsPreferredSupport bool `json:"isPreferredSupport,omitempty"`
 594	// Whether code action supports the `disabled` property.
 595	//
 596	// @since 3.16.0
 597	DisabledSupport bool `json:"disabledSupport,omitempty"`
 598	// Whether code action supports the `data` property which is
 599	// preserved between a `textDocument/codeAction` and a
 600	// `codeAction/resolve` request.
 601	//
 602	// @since 3.16.0
 603	DataSupport bool `json:"dataSupport,omitempty"`
 604	// Whether the client supports resolving additional code action
 605	// properties via a separate `codeAction/resolve` request.
 606	//
 607	// @since 3.16.0
 608	ResolveSupport *ClientCodeActionResolveOptions `json:"resolveSupport,omitempty"`
 609	// Whether the client honors the change annotations in
 610	// text edits and resource operations returned via the
 611	// `CodeAction#edit` property by for example presenting
 612	// the workspace edit in the user interface and asking
 613	// for confirmation.
 614	//
 615	// @since 3.16.0
 616	HonorsChangeAnnotations bool `json:"honorsChangeAnnotations,omitempty"`
 617	// Whether the client supports documentation for a class of
 618	// code actions.
 619	//
 620	// @since 3.18.0
 621	// @proposed
 622	DocumentationSupport bool `json:"documentationSupport,omitempty"`
 623}
 624
 625// Contains additional diagnostic information about the context in which
 626// a {@link CodeActionProvider.provideCodeActions code action} is run.
 627//
 628// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeActionContext
 629type CodeActionContext struct {
 630	// An array of diagnostics known on the client side overlapping the range provided to the
 631	// `textDocument/codeAction` request. They are provided so that the server knows which
 632	// errors are currently presented to the user for the given range. There is no guarantee
 633	// that these accurately reflect the error state of the resource. The primary parameter
 634	// to compute code actions is the provided range.
 635	Diagnostics []Diagnostic `json:"diagnostics"`
 636	// Requested kind of actions to return.
 637	//
 638	// Actions not of this kind are filtered out by the client before being shown. So servers
 639	// can omit computing them.
 640	Only []CodeActionKind `json:"only,omitempty"`
 641	// The reason why code actions were requested.
 642	//
 643	// @since 3.17.0
 644	TriggerKind *CodeActionTriggerKind `json:"triggerKind,omitempty"`
 645}
 646
 647// Captures why the code action is currently disabled.
 648//
 649// @since 3.18.0
 650//
 651// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeActionDisabled
 652type CodeActionDisabled struct {
 653	// Human readable description of why the code action is currently disabled.
 654	//
 655	// This is displayed in the code actions UI.
 656	Reason string `json:"reason"`
 657}
 658
 659// A set of predefined code action kinds
 660type CodeActionKind string
 661
 662// Documentation for a class of code actions.
 663//
 664// @since 3.18.0
 665// @proposed
 666//
 667// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeActionKindDocumentation
 668type CodeActionKindDocumentation struct {
 669	// The kind of the code action being documented.
 670	//
 671	// If the kind is generic, such as `CodeActionKind.Refactor`, the documentation will be shown whenever any
 672	// refactorings are returned. If the kind if more specific, such as `CodeActionKind.RefactorExtract`, the
 673	// documentation will only be shown when extract refactoring code actions are returned.
 674	Kind CodeActionKind `json:"kind"`
 675	// Command that is ued to display the documentation to the user.
 676	//
 677	// The title of this documentation code action is taken from {@linkcode Command.title}
 678	Command Command `json:"command"`
 679}
 680
 681// Provider options for a {@link CodeActionRequest}.
 682//
 683// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeActionOptions
 684type CodeActionOptions struct {
 685	// CodeActionKinds that this server may return.
 686	//
 687	// The list of kinds may be generic, such as `CodeActionKind.Refactor`, or the server
 688	// may list out every specific kind they provide.
 689	CodeActionKinds []CodeActionKind `json:"codeActionKinds,omitempty"`
 690	// Static documentation for a class of code actions.
 691	//
 692	// Documentation from the provider should be shown in the code actions menu if either:
 693	//
 694	//
 695	//  - Code actions of `kind` are requested by the editor. In this case, the editor will show the documentation that
 696	//   most closely matches the requested code action kind. For example, if a provider has documentation for
 697	//   both `Refactor` and `RefactorExtract`, when the user requests code actions for `RefactorExtract`,
 698	//   the editor will use the documentation for `RefactorExtract` instead of the documentation for `Refactor`.
 699	//
 700	//
 701	//  - Any code actions of `kind` are returned by the provider.
 702	//
 703	// At most one documentation entry should be shown per provider.
 704	//
 705	// @since 3.18.0
 706	// @proposed
 707	Documentation []CodeActionKindDocumentation `json:"documentation,omitempty"`
 708	// The server provides support to resolve additional
 709	// information for a code action.
 710	//
 711	// @since 3.16.0
 712	ResolveProvider bool `json:"resolveProvider,omitempty"`
 713	WorkDoneProgressOptions
 714}
 715
 716// The parameters of a {@link CodeActionRequest}.
 717//
 718// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeActionParams
 719type CodeActionParams struct {
 720	// The document in which the command was invoked.
 721	TextDocument TextDocumentIdentifier `json:"textDocument"`
 722	// The range for which the command was invoked.
 723	Range Range `json:"range"`
 724	// Context carrying additional information.
 725	Context CodeActionContext `json:"context"`
 726	WorkDoneProgressParams
 727	PartialResultParams
 728}
 729
 730// Registration options for a {@link CodeActionRequest}.
 731//
 732// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeActionRegistrationOptions
 733type CodeActionRegistrationOptions struct {
 734	TextDocumentRegistrationOptions
 735	CodeActionOptions
 736}
 737
 738// The reason why code actions were requested.
 739//
 740// @since 3.17.0
 741type CodeActionTriggerKind uint32
 742
 743// Structure to capture a description for an error code.
 744//
 745// @since 3.16.0
 746//
 747// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeDescription
 748type CodeDescription struct {
 749	// An URI to open with more information about the diagnostic error.
 750	Href URI `json:"href"`
 751}
 752
 753// A code lens represents a {@link Command command} that should be shown along with
 754// source text, like the number of references, a way to run tests, etc.
 755//
 756// A code lens is _unresolved_ when no command is associated to it. For performance
 757// reasons the creation of a code lens and resolving should be done in two stages.
 758//
 759// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeLens
 760type CodeLens struct {
 761	// The range in which this code lens is valid. Should only span a single line.
 762	Range Range `json:"range"`
 763	// The command this code lens represents.
 764	Command *Command `json:"command,omitempty"`
 765	// A data entry field that is preserved on a code lens item between
 766	// a {@link CodeLensRequest} and a {@link CodeLensResolveRequest}
 767	Data interface{} `json:"data,omitempty"`
 768}
 769
 770// The client capabilities  of a {@link CodeLensRequest}.
 771//
 772// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeLensClientCapabilities
 773type CodeLensClientCapabilities struct {
 774	// Whether code lens supports dynamic registration.
 775	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
 776	// Whether the client supports resolving additional code lens
 777	// properties via a separate `codeLens/resolve` request.
 778	//
 779	// @since 3.18.0
 780	ResolveSupport *ClientCodeLensResolveOptions `json:"resolveSupport,omitempty"`
 781}
 782
 783// Code Lens provider options of a {@link CodeLensRequest}.
 784//
 785// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeLensOptions
 786type CodeLensOptions struct {
 787	// Code lens has a resolve provider as well.
 788	ResolveProvider bool `json:"resolveProvider,omitempty"`
 789	WorkDoneProgressOptions
 790}
 791
 792// The parameters of a {@link CodeLensRequest}.
 793//
 794// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeLensParams
 795type CodeLensParams struct {
 796	// The document to request code lens for.
 797	TextDocument TextDocumentIdentifier `json:"textDocument"`
 798	WorkDoneProgressParams
 799	PartialResultParams
 800}
 801
 802// Registration options for a {@link CodeLensRequest}.
 803//
 804// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeLensRegistrationOptions
 805type CodeLensRegistrationOptions struct {
 806	TextDocumentRegistrationOptions
 807	CodeLensOptions
 808}
 809
 810// @since 3.16.0
 811//
 812// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeLensWorkspaceClientCapabilities
 813type CodeLensWorkspaceClientCapabilities struct {
 814	// Whether the client implementation supports a refresh request sent from the
 815	// server to the client.
 816	//
 817	// Note that this event is global and will force the client to refresh all
 818	// code lenses currently shown. It should be used with absolute care and is
 819	// useful for situation where a server for example detect a project wide
 820	// change that requires such a calculation.
 821	RefreshSupport bool `json:"refreshSupport,omitempty"`
 822}
 823
 824// Represents a color in RGBA space.
 825//
 826// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#color
 827type Color struct {
 828	// The red component of this color in the range [0-1].
 829	Red float64 `json:"red"`
 830	// The green component of this color in the range [0-1].
 831	Green float64 `json:"green"`
 832	// The blue component of this color in the range [0-1].
 833	Blue float64 `json:"blue"`
 834	// The alpha component of this color in the range [0-1].
 835	Alpha float64 `json:"alpha"`
 836}
 837
 838// Represents a color range from a document.
 839//
 840// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#colorInformation
 841type ColorInformation struct {
 842	// The range in the document where this color appears.
 843	Range Range `json:"range"`
 844	// The actual color value for this color range.
 845	Color Color `json:"color"`
 846}
 847
 848// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#colorPresentation
 849type ColorPresentation struct {
 850	// The label of this color presentation. It will be shown on the color
 851	// picker header. By default this is also the text that is inserted when selecting
 852	// this color presentation.
 853	Label string `json:"label"`
 854	// An {@link TextEdit edit} which is applied to a document when selecting
 855	// this presentation for the color.  When `falsy` the {@link ColorPresentation.label label}
 856	// is used.
 857	TextEdit *TextEdit `json:"textEdit,omitempty"`
 858	// An optional array of additional {@link TextEdit text edits} that are applied when
 859	// selecting this color presentation. Edits must not overlap with the main {@link ColorPresentation.textEdit edit} nor with themselves.
 860	AdditionalTextEdits []TextEdit `json:"additionalTextEdits,omitempty"`
 861}
 862
 863// Parameters for a {@link ColorPresentationRequest}.
 864//
 865// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#colorPresentationParams
 866type ColorPresentationParams struct {
 867	// The text document.
 868	TextDocument TextDocumentIdentifier `json:"textDocument"`
 869	// The color to request presentations for.
 870	Color Color `json:"color"`
 871	// The range where the color would be inserted. Serves as a context.
 872	Range Range `json:"range"`
 873	WorkDoneProgressParams
 874	PartialResultParams
 875}
 876
 877// Represents a reference to a command. Provides a title which
 878// will be used to represent a command in the UI and, optionally,
 879// an array of arguments which will be passed to the command handler
 880// function when invoked.
 881//
 882// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#command
 883type Command struct {
 884	// Title of the command, like `save`.
 885	Title string `json:"title"`
 886	// An optional tooltip.
 887	//
 888	// @since 3.18.0
 889	// @proposed
 890	Tooltip string `json:"tooltip,omitempty"`
 891	// The identifier of the actual command handler.
 892	Command string `json:"command"`
 893	// Arguments that the command handler should be
 894	// invoked with.
 895	Arguments []json.RawMessage `json:"arguments,omitempty"`
 896}
 897
 898// Completion client capabilities
 899//
 900// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionClientCapabilities
 901type CompletionClientCapabilities struct {
 902	// Whether completion supports dynamic registration.
 903	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
 904	// The client supports the following `CompletionItem` specific
 905	// capabilities.
 906	CompletionItem     ClientCompletionItemOptions      `json:"completionItem,omitempty"`
 907	CompletionItemKind *ClientCompletionItemOptionsKind `json:"completionItemKind,omitempty"`
 908	// Defines how the client handles whitespace and indentation
 909	// when accepting a completion item that uses multi line
 910	// text in either `insertText` or `textEdit`.
 911	//
 912	// @since 3.17.0
 913	InsertTextMode InsertTextMode `json:"insertTextMode,omitempty"`
 914	// The client supports to send additional context information for a
 915	// `textDocument/completion` request.
 916	ContextSupport bool `json:"contextSupport,omitempty"`
 917	// The client supports the following `CompletionList` specific
 918	// capabilities.
 919	//
 920	// @since 3.17.0
 921	CompletionList *CompletionListCapabilities `json:"completionList,omitempty"`
 922}
 923
 924// Contains additional information about the context in which a completion request is triggered.
 925//
 926// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionContext
 927type CompletionContext struct {
 928	// How the completion was triggered.
 929	TriggerKind CompletionTriggerKind `json:"triggerKind"`
 930	// The trigger character (a single character) that has trigger code complete.
 931	// Is undefined if `triggerKind !== CompletionTriggerKind.TriggerCharacter`
 932	TriggerCharacter string `json:"triggerCharacter,omitempty"`
 933}
 934
 935// A completion item represents a text snippet that is
 936// proposed to complete text that is being typed.
 937//
 938// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionItem
 939type CompletionItem struct {
 940	// The label of this completion item.
 941	//
 942	// The label property is also by default the text that
 943	// is inserted when selecting this completion.
 944	//
 945	// If label details are provided the label itself should
 946	// be an unqualified name of the completion item.
 947	Label string `json:"label"`
 948	// Additional details for the label
 949	//
 950	// @since 3.17.0
 951	LabelDetails *CompletionItemLabelDetails `json:"labelDetails,omitempty"`
 952	// The kind of this completion item. Based of the kind
 953	// an icon is chosen by the editor.
 954	Kind CompletionItemKind `json:"kind,omitempty"`
 955	// Tags for this completion item.
 956	//
 957	// @since 3.15.0
 958	Tags []CompletionItemTag `json:"tags,omitempty"`
 959	// A human-readable string with additional information
 960	// about this item, like type or symbol information.
 961	Detail string `json:"detail,omitempty"`
 962	// A human-readable string that represents a doc-comment.
 963	Documentation *Or_CompletionItem_documentation `json:"documentation,omitempty"`
 964	// Indicates if this item is deprecated.
 965	// @deprecated Use `tags` instead.
 966	Deprecated bool `json:"deprecated,omitempty"`
 967	// Select this item when showing.
 968	//
 969	// *Note* that only one completion item can be selected and that the
 970	// tool / client decides which item that is. The rule is that the *first*
 971	// item of those that match best is selected.
 972	Preselect bool `json:"preselect,omitempty"`
 973	// A string that should be used when comparing this item
 974	// with other items. When `falsy` the {@link CompletionItem.label label}
 975	// is used.
 976	SortText string `json:"sortText,omitempty"`
 977	// A string that should be used when filtering a set of
 978	// completion items. When `falsy` the {@link CompletionItem.label label}
 979	// is used.
 980	FilterText string `json:"filterText,omitempty"`
 981	// A string that should be inserted into a document when selecting
 982	// this completion. When `falsy` the {@link CompletionItem.label label}
 983	// is used.
 984	//
 985	// The `insertText` is subject to interpretation by the client side.
 986	// Some tools might not take the string literally. For example
 987	// VS Code when code complete is requested in this example
 988	// `con<cursor position>` and a completion item with an `insertText` of
 989	// `console` is provided it will only insert `sole`. Therefore it is
 990	// recommended to use `textEdit` instead since it avoids additional client
 991	// side interpretation.
 992	InsertText string `json:"insertText,omitempty"`
 993	// The format of the insert text. The format applies to both the
 994	// `insertText` property and the `newText` property of a provided
 995	// `textEdit`. If omitted defaults to `InsertTextFormat.PlainText`.
 996	//
 997	// Please note that the insertTextFormat doesn't apply to
 998	// `additionalTextEdits`.
 999	InsertTextFormat *InsertTextFormat `json:"insertTextFormat,omitempty"`
1000	// How whitespace and indentation is handled during completion
1001	// item insertion. If not provided the clients default value depends on
1002	// the `textDocument.completion.insertTextMode` client capability.
1003	//
1004	// @since 3.16.0
1005	InsertTextMode *InsertTextMode `json:"insertTextMode,omitempty"`
1006	// An {@link TextEdit edit} which is applied to a document when selecting
1007	// this completion. When an edit is provided the value of
1008	// {@link CompletionItem.insertText insertText} is ignored.
1009	//
1010	// Most editors support two different operations when accepting a completion
1011	// item. One is to insert a completion text and the other is to replace an
1012	// existing text with a completion text. Since this can usually not be
1013	// predetermined by a server it can report both ranges. Clients need to
1014	// signal support for `InsertReplaceEdits` via the
1015	// `textDocument.completion.insertReplaceSupport` client capability
1016	// property.
1017	//
1018	// *Note 1:* The text edit's range as well as both ranges from an insert
1019	// replace edit must be a [single line] and they must contain the position
1020	// at which completion has been requested.
1021	// *Note 2:* If an `InsertReplaceEdit` is returned the edit's insert range
1022	// must be a prefix of the edit's replace range, that means it must be
1023	// contained and starting at the same position.
1024	//
1025	// @since 3.16.0 additional type `InsertReplaceEdit`
1026	TextEdit *Or_CompletionItem_textEdit `json:"textEdit,omitempty"`
1027	// The edit text used if the completion item is part of a CompletionList and
1028	// CompletionList defines an item default for the text edit range.
1029	//
1030	// Clients will only honor this property if they opt into completion list
1031	// item defaults using the capability `completionList.itemDefaults`.
1032	//
1033	// If not provided and a list's default range is provided the label
1034	// property is used as a text.
1035	//
1036	// @since 3.17.0
1037	TextEditText string `json:"textEditText,omitempty"`
1038	// An optional array of additional {@link TextEdit text edits} that are applied when
1039	// selecting this completion. Edits must not overlap (including the same insert position)
1040	// with the main {@link CompletionItem.textEdit edit} nor with themselves.
1041	//
1042	// Additional text edits should be used to change text unrelated to the current cursor position
1043	// (for example adding an import statement at the top of the file if the completion item will
1044	// insert an unqualified type).
1045	AdditionalTextEdits []TextEdit `json:"additionalTextEdits,omitempty"`
1046	// An optional set of characters that when pressed while this completion is active will accept it first and
1047	// then type that character. *Note* that all commit characters should have `length=1` and that superfluous
1048	// characters will be ignored.
1049	CommitCharacters []string `json:"commitCharacters,omitempty"`
1050	// An optional {@link Command command} that is executed *after* inserting this completion. *Note* that
1051	// additional modifications to the current document should be described with the
1052	// {@link CompletionItem.additionalTextEdits additionalTextEdits}-property.
1053	Command *Command `json:"command,omitempty"`
1054	// A data entry field that is preserved on a completion item between a
1055	// {@link CompletionRequest} and a {@link CompletionResolveRequest}.
1056	Data interface{} `json:"data,omitempty"`
1057}
1058
1059// In many cases the items of an actual completion result share the same
1060// value for properties like `commitCharacters` or the range of a text
1061// edit. A completion list can therefore define item defaults which will
1062// be used if a completion item itself doesn't specify the value.
1063//
1064// If a completion list specifies a default value and a completion item
1065// also specifies a corresponding value the one from the item is used.
1066//
1067// Servers are only allowed to return default values if the client
1068// signals support for this via the `completionList.itemDefaults`
1069// capability.
1070//
1071// @since 3.17.0
1072//
1073// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionItemDefaults
1074type CompletionItemDefaults struct {
1075	// A default commit character set.
1076	//
1077	// @since 3.17.0
1078	CommitCharacters []string `json:"commitCharacters,omitempty"`
1079	// A default edit range.
1080	//
1081	// @since 3.17.0
1082	EditRange *Or_CompletionItemDefaults_editRange `json:"editRange,omitempty"`
1083	// A default insert text format.
1084	//
1085	// @since 3.17.0
1086	InsertTextFormat *InsertTextFormat `json:"insertTextFormat,omitempty"`
1087	// A default insert text mode.
1088	//
1089	// @since 3.17.0
1090	InsertTextMode *InsertTextMode `json:"insertTextMode,omitempty"`
1091	// A default data value.
1092	//
1093	// @since 3.17.0
1094	Data interface{} `json:"data,omitempty"`
1095}
1096
1097// The kind of a completion entry.
1098type CompletionItemKind uint32
1099
1100// Additional details for a completion item label.
1101//
1102// @since 3.17.0
1103//
1104// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionItemLabelDetails
1105type CompletionItemLabelDetails struct {
1106	// An optional string which is rendered less prominently directly after {@link CompletionItem.label label},
1107	// without any spacing. Should be used for function signatures and type annotations.
1108	Detail string `json:"detail,omitempty"`
1109	// An optional string which is rendered less prominently after {@link CompletionItem.detail}. Should be used
1110	// for fully qualified names and file paths.
1111	Description string `json:"description,omitempty"`
1112}
1113
1114// Completion item tags are extra annotations that tweak the rendering of a completion
1115// item.
1116//
1117// @since 3.15.0
1118type CompletionItemTag uint32
1119
1120// @since 3.18.0
1121//
1122// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionItemTagOptions
1123type CompletionItemTagOptions struct {
1124	// The tags supported by the client.
1125	ValueSet []CompletionItemTag `json:"valueSet"`
1126}
1127
1128// Represents a collection of {@link CompletionItem completion items} to be presented
1129// in the editor.
1130//
1131// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionList
1132type CompletionList struct {
1133	// This list it not complete. Further typing results in recomputing this list.
1134	//
1135	// Recomputed lists have all their items replaced (not appended) in the
1136	// incomplete completion sessions.
1137	IsIncomplete bool `json:"isIncomplete"`
1138	// In many cases the items of an actual completion result share the same
1139	// value for properties like `commitCharacters` or the range of a text
1140	// edit. A completion list can therefore define item defaults which will
1141	// be used if a completion item itself doesn't specify the value.
1142	//
1143	// If a completion list specifies a default value and a completion item
1144	// also specifies a corresponding value the one from the item is used.
1145	//
1146	// Servers are only allowed to return default values if the client
1147	// signals support for this via the `completionList.itemDefaults`
1148	// capability.
1149	//
1150	// @since 3.17.0
1151	ItemDefaults *CompletionItemDefaults `json:"itemDefaults,omitempty"`
1152	// The completion items.
1153	Items []CompletionItem `json:"items"`
1154}
1155
1156// The client supports the following `CompletionList` specific
1157// capabilities.
1158//
1159// @since 3.17.0
1160//
1161// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionListCapabilities
1162type CompletionListCapabilities struct {
1163	// The client supports the following itemDefaults on
1164	// a completion list.
1165	//
1166	// The value lists the supported property names of the
1167	// `CompletionList.itemDefaults` object. If omitted
1168	// no properties are supported.
1169	//
1170	// @since 3.17.0
1171	ItemDefaults []string `json:"itemDefaults,omitempty"`
1172}
1173
1174// Completion options.
1175//
1176// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionOptions
1177type CompletionOptions struct {
1178	// Most tools trigger completion request automatically without explicitly requesting
1179	// it using a keyboard shortcut (e.g. Ctrl+Space). Typically they do so when the user
1180	// starts to type an identifier. For example if the user types `c` in a JavaScript file
1181	// code complete will automatically pop up present `console` besides others as a
1182	// completion item. Characters that make up identifiers don't need to be listed here.
1183	//
1184	// If code complete should automatically be trigger on characters not being valid inside
1185	// an identifier (for example `.` in JavaScript) list them in `triggerCharacters`.
1186	TriggerCharacters []string `json:"triggerCharacters,omitempty"`
1187	// The list of all possible characters that commit a completion. This field can be used
1188	// if clients don't support individual commit characters per completion item. See
1189	// `ClientCapabilities.textDocument.completion.completionItem.commitCharactersSupport`
1190	//
1191	// If a server provides both `allCommitCharacters` and commit characters on an individual
1192	// completion item the ones on the completion item win.
1193	//
1194	// @since 3.2.0
1195	AllCommitCharacters []string `json:"allCommitCharacters,omitempty"`
1196	// The server provides support to resolve additional
1197	// information for a completion item.
1198	ResolveProvider bool `json:"resolveProvider,omitempty"`
1199	// The server supports the following `CompletionItem` specific
1200	// capabilities.
1201	//
1202	// @since 3.17.0
1203	CompletionItem *ServerCompletionItemOptions `json:"completionItem,omitempty"`
1204	WorkDoneProgressOptions
1205}
1206
1207// Completion parameters
1208//
1209// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionParams
1210type CompletionParams struct {
1211	// The completion context. This is only available it the client specifies
1212	// to send this using the client capability `textDocument.completion.contextSupport === true`
1213	Context CompletionContext `json:"context,omitempty"`
1214	TextDocumentPositionParams
1215	WorkDoneProgressParams
1216	PartialResultParams
1217}
1218
1219// Registration options for a {@link CompletionRequest}.
1220//
1221// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionRegistrationOptions
1222type CompletionRegistrationOptions struct {
1223	TextDocumentRegistrationOptions
1224	CompletionOptions
1225}
1226
1227// How a completion was triggered
1228type CompletionTriggerKind uint32
1229
1230// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#configurationItem
1231type ConfigurationItem struct {
1232	// The scope to get the configuration section for.
1233	ScopeURI *URI `json:"scopeUri,omitempty"`
1234	// The configuration section asked for.
1235	Section string `json:"section,omitempty"`
1236}
1237
1238// The parameters of a configuration request.
1239//
1240// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#configurationParams
1241type ConfigurationParams struct {
1242	Items []ConfigurationItem `json:"items"`
1243}
1244
1245// Create file operation.
1246//
1247// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#createFile
1248type CreateFile struct {
1249	// A create
1250	Kind string `json:"kind"`
1251	// The resource to create.
1252	URI DocumentUri `json:"uri"`
1253	// Additional options
1254	Options *CreateFileOptions `json:"options,omitempty"`
1255	ResourceOperation
1256}
1257
1258// Options to create a file.
1259//
1260// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#createFileOptions
1261type CreateFileOptions struct {
1262	// Overwrite existing file. Overwrite wins over `ignoreIfExists`
1263	Overwrite bool `json:"overwrite,omitempty"`
1264	// Ignore if exists.
1265	IgnoreIfExists bool `json:"ignoreIfExists,omitempty"`
1266}
1267
1268// The parameters sent in notifications/requests for user-initiated creation of
1269// files.
1270//
1271// @since 3.16.0
1272//
1273// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#createFilesParams
1274type CreateFilesParams struct {
1275	// An array of all files/folders created in this operation.
1276	Files []FileCreate `json:"files"`
1277}
1278
1279// The declaration of a symbol representation as one or many {@link Location locations}.
1280//
1281// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#declaration
1282type Declaration = Or_Declaration // (alias)
1283// @since 3.14.0
1284//
1285// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#declarationClientCapabilities
1286type DeclarationClientCapabilities struct {
1287	// Whether declaration supports dynamic registration. If this is set to `true`
1288	// the client supports the new `DeclarationRegistrationOptions` return value
1289	// for the corresponding server capability as well.
1290	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
1291	// The client supports additional metadata in the form of declaration links.
1292	LinkSupport bool `json:"linkSupport,omitempty"`
1293}
1294
1295// Information about where a symbol is declared.
1296//
1297// Provides additional metadata over normal {@link Location location} declarations, including the range of
1298// the declaring symbol.
1299//
1300// Servers should prefer returning `DeclarationLink` over `Declaration` if supported
1301// by the client.
1302//
1303// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#declarationLink
1304type DeclarationLink = LocationLink // (alias)
1305// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#declarationOptions
1306type DeclarationOptions struct {
1307	WorkDoneProgressOptions
1308}
1309
1310// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#declarationParams
1311type DeclarationParams struct {
1312	TextDocumentPositionParams
1313	WorkDoneProgressParams
1314	PartialResultParams
1315}
1316
1317// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#declarationRegistrationOptions
1318type DeclarationRegistrationOptions struct {
1319	DeclarationOptions
1320	TextDocumentRegistrationOptions
1321	StaticRegistrationOptions
1322}
1323
1324// The definition of a symbol represented as one or many {@link Location locations}.
1325// For most programming languages there is only one location at which a symbol is
1326// defined.
1327//
1328// Servers should prefer returning `DefinitionLink` over `Definition` if supported
1329// by the client.
1330//
1331// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#definition
1332type Definition = Or_Definition // (alias)
1333// Client Capabilities for a {@link DefinitionRequest}.
1334//
1335// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#definitionClientCapabilities
1336type DefinitionClientCapabilities struct {
1337	// Whether definition supports dynamic registration.
1338	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
1339	// The client supports additional metadata in the form of definition links.
1340	//
1341	// @since 3.14.0
1342	LinkSupport bool `json:"linkSupport,omitempty"`
1343}
1344
1345// Information about where a symbol is defined.
1346//
1347// Provides additional metadata over normal {@link Location location} definitions, including the range of
1348// the defining symbol
1349//
1350// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#definitionLink
1351type DefinitionLink = LocationLink // (alias)
1352// Server Capabilities for a {@link DefinitionRequest}.
1353//
1354// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#definitionOptions
1355type DefinitionOptions struct {
1356	WorkDoneProgressOptions
1357}
1358
1359// Parameters for a {@link DefinitionRequest}.
1360//
1361// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#definitionParams
1362type DefinitionParams struct {
1363	TextDocumentPositionParams
1364	WorkDoneProgressParams
1365	PartialResultParams
1366}
1367
1368// Registration options for a {@link DefinitionRequest}.
1369//
1370// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#definitionRegistrationOptions
1371type DefinitionRegistrationOptions struct {
1372	TextDocumentRegistrationOptions
1373	DefinitionOptions
1374}
1375
1376// Delete file operation
1377//
1378// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#deleteFile
1379type DeleteFile struct {
1380	// A delete
1381	Kind string `json:"kind"`
1382	// The file to delete.
1383	URI DocumentUri `json:"uri"`
1384	// Delete options.
1385	Options *DeleteFileOptions `json:"options,omitempty"`
1386	ResourceOperation
1387}
1388
1389// Delete file options
1390//
1391// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#deleteFileOptions
1392type DeleteFileOptions struct {
1393	// Delete the content recursively if a folder is denoted.
1394	Recursive bool `json:"recursive,omitempty"`
1395	// Ignore the operation if the file doesn't exist.
1396	IgnoreIfNotExists bool `json:"ignoreIfNotExists,omitempty"`
1397}
1398
1399// The parameters sent in notifications/requests for user-initiated deletes of
1400// files.
1401//
1402// @since 3.16.0
1403//
1404// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#deleteFilesParams
1405type DeleteFilesParams struct {
1406	// An array of all files/folders deleted in this operation.
1407	Files []FileDelete `json:"files"`
1408}
1409
1410// Represents a diagnostic, such as a compiler error or warning. Diagnostic objects
1411// are only valid in the scope of a resource.
1412//
1413// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#diagnostic
1414type Diagnostic struct {
1415	// The range at which the message applies
1416	Range Range `json:"range"`
1417	// The diagnostic's severity. To avoid interpretation mismatches when a
1418	// server is used with different clients it is highly recommended that servers
1419	// always provide a severity value.
1420	Severity DiagnosticSeverity `json:"severity,omitempty"`
1421	// The diagnostic's code, which usually appear in the user interface.
1422	Code interface{} `json:"code,omitempty"`
1423	// An optional property to describe the error code.
1424	// Requires the code field (above) to be present/not null.
1425	//
1426	// @since 3.16.0
1427	CodeDescription *CodeDescription `json:"codeDescription,omitempty"`
1428	// A human-readable string describing the source of this
1429	// diagnostic, e.g. 'typescript' or 'super lint'. It usually
1430	// appears in the user interface.
1431	Source string `json:"source,omitempty"`
1432	// The diagnostic's message. It usually appears in the user interface
1433	Message string `json:"message"`
1434	// Additional metadata about the diagnostic.
1435	//
1436	// @since 3.15.0
1437	Tags []DiagnosticTag `json:"tags,omitempty"`
1438	// An array of related diagnostic information, e.g. when symbol-names within
1439	// a scope collide all definitions can be marked via this property.
1440	RelatedInformation []DiagnosticRelatedInformation `json:"relatedInformation,omitempty"`
1441	// A data entry field that is preserved between a `textDocument/publishDiagnostics`
1442	// notification and `textDocument/codeAction` request.
1443	//
1444	// @since 3.16.0
1445	Data *json.RawMessage `json:"data,omitempty"`
1446}
1447
1448// Client capabilities specific to diagnostic pull requests.
1449//
1450// @since 3.17.0
1451//
1452// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#diagnosticClientCapabilities
1453type DiagnosticClientCapabilities struct {
1454	// Whether implementation supports dynamic registration. If this is set to `true`
1455	// the client supports the new `(TextDocumentRegistrationOptions & StaticRegistrationOptions)`
1456	// return value for the corresponding server capability as well.
1457	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
1458	// Whether the clients supports related documents for document diagnostic pulls.
1459	RelatedDocumentSupport bool `json:"relatedDocumentSupport,omitempty"`
1460	DiagnosticsCapabilities
1461}
1462
1463// Diagnostic options.
1464//
1465// @since 3.17.0
1466//
1467// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#diagnosticOptions
1468type DiagnosticOptions struct {
1469	// An optional identifier under which the diagnostics are
1470	// managed by the client.
1471	Identifier string `json:"identifier,omitempty"`
1472	// Whether the language has inter file dependencies meaning that
1473	// editing code in one file can result in a different diagnostic
1474	// set in another file. Inter file dependencies are common for
1475	// most programming languages and typically uncommon for linters.
1476	InterFileDependencies bool `json:"interFileDependencies"`
1477	// The server provides support for workspace diagnostics as well.
1478	WorkspaceDiagnostics bool `json:"workspaceDiagnostics"`
1479	WorkDoneProgressOptions
1480}
1481
1482// Diagnostic registration options.
1483//
1484// @since 3.17.0
1485//
1486// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#diagnosticRegistrationOptions
1487type DiagnosticRegistrationOptions struct {
1488	TextDocumentRegistrationOptions
1489	DiagnosticOptions
1490	StaticRegistrationOptions
1491}
1492
1493// Represents a related message and source code location for a diagnostic. This should be
1494// used to point to code locations that cause or related to a diagnostics, e.g when duplicating
1495// a symbol in a scope.
1496//
1497// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#diagnosticRelatedInformation
1498type DiagnosticRelatedInformation struct {
1499	// The location of this related diagnostic information.
1500	Location Location `json:"location"`
1501	// The message of this related diagnostic information.
1502	Message string `json:"message"`
1503}
1504
1505// Cancellation data returned from a diagnostic request.
1506//
1507// @since 3.17.0
1508//
1509// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#diagnosticServerCancellationData
1510type DiagnosticServerCancellationData struct {
1511	RetriggerRequest bool `json:"retriggerRequest"`
1512}
1513
1514// The diagnostic's severity.
1515type DiagnosticSeverity uint32
1516
1517// The diagnostic tags.
1518//
1519// @since 3.15.0
1520type DiagnosticTag uint32
1521
1522// Workspace client capabilities specific to diagnostic pull requests.
1523//
1524// @since 3.17.0
1525//
1526// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#diagnosticWorkspaceClientCapabilities
1527type DiagnosticWorkspaceClientCapabilities struct {
1528	// Whether the client implementation supports a refresh request sent from
1529	// the server to the client.
1530	//
1531	// Note that this event is global and will force the client to refresh all
1532	// pulled diagnostics currently shown. It should be used with absolute care and
1533	// is useful for situation where a server for example detects a project wide
1534	// change that requires such a calculation.
1535	RefreshSupport bool `json:"refreshSupport,omitempty"`
1536}
1537
1538// General diagnostics capabilities for pull and push model.
1539//
1540// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#diagnosticsCapabilities
1541type DiagnosticsCapabilities struct {
1542	// Whether the clients accepts diagnostics with related information.
1543	RelatedInformation bool `json:"relatedInformation,omitempty"`
1544	// Client supports the tag property to provide meta data about a diagnostic.
1545	// Clients supporting tags have to handle unknown tags gracefully.
1546	//
1547	// @since 3.15.0
1548	TagSupport *ClientDiagnosticsTagOptions `json:"tagSupport,omitempty"`
1549	// Client supports a codeDescription property
1550	//
1551	// @since 3.16.0
1552	CodeDescriptionSupport bool `json:"codeDescriptionSupport,omitempty"`
1553	// Whether code action supports the `data` property which is
1554	// preserved between a `textDocument/publishDiagnostics` and
1555	// `textDocument/codeAction` request.
1556	//
1557	// @since 3.16.0
1558	DataSupport bool `json:"dataSupport,omitempty"`
1559}
1560
1561// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didChangeConfigurationClientCapabilities
1562type DidChangeConfigurationClientCapabilities struct {
1563	// Did change configuration notification supports dynamic registration.
1564	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
1565}
1566
1567// The parameters of a change configuration notification.
1568//
1569// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didChangeConfigurationParams
1570type DidChangeConfigurationParams struct {
1571	// The actual changed settings
1572	Settings interface{} `json:"settings"`
1573}
1574
1575// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didChangeConfigurationRegistrationOptions
1576type DidChangeConfigurationRegistrationOptions struct {
1577	Section *Or_DidChangeConfigurationRegistrationOptions_section `json:"section,omitempty"`
1578}
1579
1580// The params sent in a change notebook document notification.
1581//
1582// @since 3.17.0
1583//
1584// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didChangeNotebookDocumentParams
1585type DidChangeNotebookDocumentParams struct {
1586	// The notebook document that did change. The version number points
1587	// to the version after all provided changes have been applied. If
1588	// only the text document content of a cell changes the notebook version
1589	// doesn't necessarily have to change.
1590	NotebookDocument VersionedNotebookDocumentIdentifier `json:"notebookDocument"`
1591	// The actual changes to the notebook document.
1592	//
1593	// The changes describe single state changes to the notebook document.
1594	// So if there are two changes c1 (at array index 0) and c2 (at array
1595	// index 1) for a notebook in state S then c1 moves the notebook from
1596	// S to S' and c2 from S' to S''. So c1 is computed on the state S and
1597	// c2 is computed on the state S'.
1598	//
1599	// To mirror the content of a notebook using change events use the following approach:
1600	//
1601	//  - start with the same initial content
1602	//  - apply the 'notebookDocument/didChange' notifications in the order you receive them.
1603	//  - apply the `NotebookChangeEvent`s in a single notification in the order
1604	//   you receive them.
1605	Change NotebookDocumentChangeEvent `json:"change"`
1606}
1607
1608// The change text document notification's parameters.
1609//
1610// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didChangeTextDocumentParams
1611type DidChangeTextDocumentParams struct {
1612	// The document that did change. The version number points
1613	// to the version after all provided content changes have
1614	// been applied.
1615	TextDocument VersionedTextDocumentIdentifier `json:"textDocument"`
1616	// The actual content changes. The content changes describe single state changes
1617	// to the document. So if there are two content changes c1 (at array index 0) and
1618	// c2 (at array index 1) for a document in state S then c1 moves the document from
1619	// S to S' and c2 from S' to S''. So c1 is computed on the state S and c2 is computed
1620	// on the state S'.
1621	//
1622	// To mirror the content of a document using change events use the following approach:
1623	//
1624	//  - start with the same initial content
1625	//  - apply the 'textDocument/didChange' notifications in the order you receive them.
1626	//  - apply the `TextDocumentContentChangeEvent`s in a single notification in the order
1627	//   you receive them.
1628	ContentChanges []TextDocumentContentChangeEvent `json:"contentChanges"`
1629}
1630
1631// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didChangeWatchedFilesClientCapabilities
1632type DidChangeWatchedFilesClientCapabilities struct {
1633	// Did change watched files notification supports dynamic registration. Please note
1634	// that the current protocol doesn't support static configuration for file changes
1635	// from the server side.
1636	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
1637	// Whether the client has support for {@link  RelativePattern relative pattern}
1638	// or not.
1639	//
1640	// @since 3.17.0
1641	RelativePatternSupport bool `json:"relativePatternSupport,omitempty"`
1642}
1643
1644// The watched files change notification's parameters.
1645//
1646// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didChangeWatchedFilesParams
1647type DidChangeWatchedFilesParams struct {
1648	// The actual file events.
1649	Changes []FileEvent `json:"changes"`
1650}
1651
1652// Describe options to be used when registered for text document change events.
1653//
1654// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didChangeWatchedFilesRegistrationOptions
1655type DidChangeWatchedFilesRegistrationOptions struct {
1656	// The watchers to register.
1657	Watchers []FileSystemWatcher `json:"watchers"`
1658}
1659
1660// The parameters of a `workspace/didChangeWorkspaceFolders` notification.
1661//
1662// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didChangeWorkspaceFoldersParams
1663type DidChangeWorkspaceFoldersParams struct {
1664	// The actual workspace folder change event.
1665	Event WorkspaceFoldersChangeEvent `json:"event"`
1666}
1667
1668// The params sent in a close notebook document notification.
1669//
1670// @since 3.17.0
1671//
1672// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didCloseNotebookDocumentParams
1673type DidCloseNotebookDocumentParams struct {
1674	// The notebook document that got closed.
1675	NotebookDocument NotebookDocumentIdentifier `json:"notebookDocument"`
1676	// The text documents that represent the content
1677	// of a notebook cell that got closed.
1678	CellTextDocuments []TextDocumentIdentifier `json:"cellTextDocuments"`
1679}
1680
1681// The parameters sent in a close text document notification
1682//
1683// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didCloseTextDocumentParams
1684type DidCloseTextDocumentParams struct {
1685	// The document that was closed.
1686	TextDocument TextDocumentIdentifier `json:"textDocument"`
1687}
1688
1689// The params sent in an open notebook document notification.
1690//
1691// @since 3.17.0
1692//
1693// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didOpenNotebookDocumentParams
1694type DidOpenNotebookDocumentParams struct {
1695	// The notebook document that got opened.
1696	NotebookDocument NotebookDocument `json:"notebookDocument"`
1697	// The text documents that represent the content
1698	// of a notebook cell.
1699	CellTextDocuments []TextDocumentItem `json:"cellTextDocuments"`
1700}
1701
1702// The parameters sent in an open text document notification
1703//
1704// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didOpenTextDocumentParams
1705type DidOpenTextDocumentParams struct {
1706	// The document that was opened.
1707	TextDocument TextDocumentItem `json:"textDocument"`
1708}
1709
1710// The params sent in a save notebook document notification.
1711//
1712// @since 3.17.0
1713//
1714// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didSaveNotebookDocumentParams
1715type DidSaveNotebookDocumentParams struct {
1716	// The notebook document that got saved.
1717	NotebookDocument NotebookDocumentIdentifier `json:"notebookDocument"`
1718}
1719
1720// The parameters sent in a save text document notification
1721//
1722// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didSaveTextDocumentParams
1723type DidSaveTextDocumentParams struct {
1724	// The document that was saved.
1725	TextDocument TextDocumentIdentifier `json:"textDocument"`
1726	// Optional the content when saved. Depends on the includeText value
1727	// when the save notification was requested.
1728	Text *string `json:"text,omitempty"`
1729}
1730
1731// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentColorClientCapabilities
1732type DocumentColorClientCapabilities struct {
1733	// Whether implementation supports dynamic registration. If this is set to `true`
1734	// the client supports the new `DocumentColorRegistrationOptions` return value
1735	// for the corresponding server capability as well.
1736	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
1737}
1738
1739// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentColorOptions
1740type DocumentColorOptions struct {
1741	WorkDoneProgressOptions
1742}
1743
1744// Parameters for a {@link DocumentColorRequest}.
1745//
1746// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentColorParams
1747type DocumentColorParams struct {
1748	// The text document.
1749	TextDocument TextDocumentIdentifier `json:"textDocument"`
1750	WorkDoneProgressParams
1751	PartialResultParams
1752}
1753
1754// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentColorRegistrationOptions
1755type DocumentColorRegistrationOptions struct {
1756	TextDocumentRegistrationOptions
1757	DocumentColorOptions
1758	StaticRegistrationOptions
1759}
1760
1761// Parameters of the document diagnostic request.
1762//
1763// @since 3.17.0
1764//
1765// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentDiagnosticParams
1766type DocumentDiagnosticParams struct {
1767	// The text document.
1768	TextDocument TextDocumentIdentifier `json:"textDocument"`
1769	// The additional identifier  provided during registration.
1770	Identifier string `json:"identifier,omitempty"`
1771	// The result id of a previous response if provided.
1772	PreviousResultID string `json:"previousResultId,omitempty"`
1773	WorkDoneProgressParams
1774	PartialResultParams
1775}
1776
1777// The result of a document diagnostic pull request. A report can
1778// either be a full report containing all diagnostics for the
1779// requested document or an unchanged report indicating that nothing
1780// has changed in terms of diagnostics in comparison to the last
1781// pull request.
1782//
1783// @since 3.17.0
1784//
1785// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentDiagnosticReport
1786type DocumentDiagnosticReport = Or_DocumentDiagnosticReport // (alias)
1787// The document diagnostic report kinds.
1788//
1789// @since 3.17.0
1790type DocumentDiagnosticReportKind string
1791
1792// A partial result for a document diagnostic report.
1793//
1794// @since 3.17.0
1795//
1796// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentDiagnosticReportPartialResult
1797type DocumentDiagnosticReportPartialResult struct {
1798	RelatedDocuments map[DocumentUri]interface{} `json:"relatedDocuments"`
1799}
1800
1801// A document filter describes a top level text document or
1802// a notebook cell document.
1803//
1804// @since 3.17.0 - proposed support for NotebookCellTextDocumentFilter.
1805//
1806// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentFilter
1807type DocumentFilter = Or_DocumentFilter // (alias)
1808// Client capabilities of a {@link DocumentFormattingRequest}.
1809//
1810// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentFormattingClientCapabilities
1811type DocumentFormattingClientCapabilities struct {
1812	// Whether formatting supports dynamic registration.
1813	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
1814}
1815
1816// Provider options for a {@link DocumentFormattingRequest}.
1817//
1818// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentFormattingOptions
1819type DocumentFormattingOptions struct {
1820	WorkDoneProgressOptions
1821}
1822
1823// The parameters of a {@link DocumentFormattingRequest}.
1824//
1825// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentFormattingParams
1826type DocumentFormattingParams struct {
1827	// The document to format.
1828	TextDocument TextDocumentIdentifier `json:"textDocument"`
1829	// The format options.
1830	Options FormattingOptions `json:"options"`
1831	WorkDoneProgressParams
1832}
1833
1834// Registration options for a {@link DocumentFormattingRequest}.
1835//
1836// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentFormattingRegistrationOptions
1837type DocumentFormattingRegistrationOptions struct {
1838	TextDocumentRegistrationOptions
1839	DocumentFormattingOptions
1840}
1841
1842// A document highlight is a range inside a text document which deserves
1843// special attention. Usually a document highlight is visualized by changing
1844// the background color of its range.
1845//
1846// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentHighlight
1847type DocumentHighlight struct {
1848	// The range this highlight applies to.
1849	Range Range `json:"range"`
1850	// The highlight kind, default is {@link DocumentHighlightKind.Text text}.
1851	Kind DocumentHighlightKind `json:"kind,omitempty"`
1852}
1853
1854// Client Capabilities for a {@link DocumentHighlightRequest}.
1855//
1856// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentHighlightClientCapabilities
1857type DocumentHighlightClientCapabilities struct {
1858	// Whether document highlight supports dynamic registration.
1859	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
1860}
1861
1862// A document highlight kind.
1863type DocumentHighlightKind uint32
1864
1865// Provider options for a {@link DocumentHighlightRequest}.
1866//
1867// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentHighlightOptions
1868type DocumentHighlightOptions struct {
1869	WorkDoneProgressOptions
1870}
1871
1872// Parameters for a {@link DocumentHighlightRequest}.
1873//
1874// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentHighlightParams
1875type DocumentHighlightParams struct {
1876	TextDocumentPositionParams
1877	WorkDoneProgressParams
1878	PartialResultParams
1879}
1880
1881// Registration options for a {@link DocumentHighlightRequest}.
1882//
1883// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentHighlightRegistrationOptions
1884type DocumentHighlightRegistrationOptions struct {
1885	TextDocumentRegistrationOptions
1886	DocumentHighlightOptions
1887}
1888
1889// A document link is a range in a text document that links to an internal or external resource, like another
1890// text document or a web site.
1891//
1892// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentLink
1893type DocumentLink struct {
1894	// The range this link applies to.
1895	Range Range `json:"range"`
1896	// The uri this link points to. If missing a resolve request is sent later.
1897	Target *URI `json:"target,omitempty"`
1898	// The tooltip text when you hover over this link.
1899	//
1900	// If a tooltip is provided, is will be displayed in a string that includes instructions on how to
1901	// trigger the link, such as `{0} (ctrl + click)`. The specific instructions vary depending on OS,
1902	// user settings, and localization.
1903	//
1904	// @since 3.15.0
1905	Tooltip string `json:"tooltip,omitempty"`
1906	// A data entry field that is preserved on a document link between a
1907	// DocumentLinkRequest and a DocumentLinkResolveRequest.
1908	Data interface{} `json:"data,omitempty"`
1909}
1910
1911// The client capabilities of a {@link DocumentLinkRequest}.
1912//
1913// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentLinkClientCapabilities
1914type DocumentLinkClientCapabilities struct {
1915	// Whether document link supports dynamic registration.
1916	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
1917	// Whether the client supports the `tooltip` property on `DocumentLink`.
1918	//
1919	// @since 3.15.0
1920	TooltipSupport bool `json:"tooltipSupport,omitempty"`
1921}
1922
1923// Provider options for a {@link DocumentLinkRequest}.
1924//
1925// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentLinkOptions
1926type DocumentLinkOptions struct {
1927	// Document links have a resolve provider as well.
1928	ResolveProvider bool `json:"resolveProvider,omitempty"`
1929	WorkDoneProgressOptions
1930}
1931
1932// The parameters of a {@link DocumentLinkRequest}.
1933//
1934// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentLinkParams
1935type DocumentLinkParams struct {
1936	// The document to provide document links for.
1937	TextDocument TextDocumentIdentifier `json:"textDocument"`
1938	WorkDoneProgressParams
1939	PartialResultParams
1940}
1941
1942// Registration options for a {@link DocumentLinkRequest}.
1943//
1944// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentLinkRegistrationOptions
1945type DocumentLinkRegistrationOptions struct {
1946	TextDocumentRegistrationOptions
1947	DocumentLinkOptions
1948}
1949
1950// Client capabilities of a {@link DocumentOnTypeFormattingRequest}.
1951//
1952// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentOnTypeFormattingClientCapabilities
1953type DocumentOnTypeFormattingClientCapabilities struct {
1954	// Whether on type formatting supports dynamic registration.
1955	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
1956}
1957
1958// Provider options for a {@link DocumentOnTypeFormattingRequest}.
1959//
1960// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentOnTypeFormattingOptions
1961type DocumentOnTypeFormattingOptions struct {
1962	// A character on which formatting should be triggered, like `{`.
1963	FirstTriggerCharacter string `json:"firstTriggerCharacter"`
1964	// More trigger characters.
1965	MoreTriggerCharacter []string `json:"moreTriggerCharacter,omitempty"`
1966}
1967
1968// The parameters of a {@link DocumentOnTypeFormattingRequest}.
1969//
1970// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentOnTypeFormattingParams
1971type DocumentOnTypeFormattingParams struct {
1972	// The document to format.
1973	TextDocument TextDocumentIdentifier `json:"textDocument"`
1974	// The position around which the on type formatting should happen.
1975	// This is not necessarily the exact position where the character denoted
1976	// by the property `ch` got typed.
1977	Position Position `json:"position"`
1978	// The character that has been typed that triggered the formatting
1979	// on type request. That is not necessarily the last character that
1980	// got inserted into the document since the client could auto insert
1981	// characters as well (e.g. like automatic brace completion).
1982	Ch string `json:"ch"`
1983	// The formatting options.
1984	Options FormattingOptions `json:"options"`
1985}
1986
1987// Registration options for a {@link DocumentOnTypeFormattingRequest}.
1988//
1989// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentOnTypeFormattingRegistrationOptions
1990type DocumentOnTypeFormattingRegistrationOptions struct {
1991	TextDocumentRegistrationOptions
1992	DocumentOnTypeFormattingOptions
1993}
1994
1995// Client capabilities of a {@link DocumentRangeFormattingRequest}.
1996//
1997// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentRangeFormattingClientCapabilities
1998type DocumentRangeFormattingClientCapabilities struct {
1999	// Whether range formatting supports dynamic registration.
2000	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
2001	// Whether the client supports formatting multiple ranges at once.
2002	//
2003	// @since 3.18.0
2004	// @proposed
2005	RangesSupport bool `json:"rangesSupport,omitempty"`
2006}
2007
2008// Provider options for a {@link DocumentRangeFormattingRequest}.
2009//
2010// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentRangeFormattingOptions
2011type DocumentRangeFormattingOptions struct {
2012	// Whether the server supports formatting multiple ranges at once.
2013	//
2014	// @since 3.18.0
2015	// @proposed
2016	RangesSupport bool `json:"rangesSupport,omitempty"`
2017	WorkDoneProgressOptions
2018}
2019
2020// The parameters of a {@link DocumentRangeFormattingRequest}.
2021//
2022// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentRangeFormattingParams
2023type DocumentRangeFormattingParams struct {
2024	// The document to format.
2025	TextDocument TextDocumentIdentifier `json:"textDocument"`
2026	// The range to format
2027	Range Range `json:"range"`
2028	// The format options
2029	Options FormattingOptions `json:"options"`
2030	WorkDoneProgressParams
2031}
2032
2033// Registration options for a {@link DocumentRangeFormattingRequest}.
2034//
2035// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentRangeFormattingRegistrationOptions
2036type DocumentRangeFormattingRegistrationOptions struct {
2037	TextDocumentRegistrationOptions
2038	DocumentRangeFormattingOptions
2039}
2040
2041// The parameters of a {@link DocumentRangesFormattingRequest}.
2042//
2043// @since 3.18.0
2044// @proposed
2045//
2046// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentRangesFormattingParams
2047type DocumentRangesFormattingParams struct {
2048	// The document to format.
2049	TextDocument TextDocumentIdentifier `json:"textDocument"`
2050	// The ranges to format
2051	Ranges []Range `json:"ranges"`
2052	// The format options
2053	Options FormattingOptions `json:"options"`
2054	WorkDoneProgressParams
2055}
2056
2057// A document selector is the combination of one or many document filters.
2058//
2059// @sample `let sel:DocumentSelector = [{ language: 'typescript' }, { language: 'json', pattern: '**∕tsconfig.json' }]`;
2060//
2061// The use of a string as a document filter is deprecated @since 3.16.0.
2062//
2063// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentSelector
2064type DocumentSelector = []DocumentFilter // (alias)
2065// Represents programming constructs like variables, classes, interfaces etc.
2066// that appear in a document. Document symbols can be hierarchical and they
2067// have two ranges: one that encloses its definition and one that points to
2068// its most interesting range, e.g. the range of an identifier.
2069//
2070// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentSymbol
2071type DocumentSymbol struct {
2072	// The name of this symbol. Will be displayed in the user interface and therefore must not be
2073	// an empty string or a string only consisting of white spaces.
2074	Name string `json:"name"`
2075	// More detail for this symbol, e.g the signature of a function.
2076	Detail string `json:"detail,omitempty"`
2077	// The kind of this symbol.
2078	Kind SymbolKind `json:"kind"`
2079	// Tags for this document symbol.
2080	//
2081	// @since 3.16.0
2082	Tags []SymbolTag `json:"tags,omitempty"`
2083	// Indicates if this symbol is deprecated.
2084	//
2085	// @deprecated Use tags instead
2086	Deprecated bool `json:"deprecated,omitempty"`
2087	// The range enclosing this symbol not including leading/trailing whitespace but everything else
2088	// like comments. This information is typically used to determine if the clients cursor is
2089	// inside the symbol to reveal in the symbol in the UI.
2090	Range Range `json:"range"`
2091	// The range that should be selected and revealed when this symbol is being picked, e.g the name of a function.
2092	// Must be contained by the `range`.
2093	SelectionRange Range `json:"selectionRange"`
2094	// Children of this symbol, e.g. properties of a class.
2095	Children []DocumentSymbol `json:"children,omitempty"`
2096}
2097
2098// Client Capabilities for a {@link DocumentSymbolRequest}.
2099//
2100// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentSymbolClientCapabilities
2101type DocumentSymbolClientCapabilities struct {
2102	// Whether document symbol supports dynamic registration.
2103	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
2104	// Specific capabilities for the `SymbolKind` in the
2105	// `textDocument/documentSymbol` request.
2106	SymbolKind *ClientSymbolKindOptions `json:"symbolKind,omitempty"`
2107	// The client supports hierarchical document symbols.
2108	HierarchicalDocumentSymbolSupport bool `json:"hierarchicalDocumentSymbolSupport,omitempty"`
2109	// The client supports tags on `SymbolInformation`. Tags are supported on
2110	// `DocumentSymbol` if `hierarchicalDocumentSymbolSupport` is set to true.
2111	// Clients supporting tags have to handle unknown tags gracefully.
2112	//
2113	// @since 3.16.0
2114	TagSupport *ClientSymbolTagOptions `json:"tagSupport,omitempty"`
2115	// The client supports an additional label presented in the UI when
2116	// registering a document symbol provider.
2117	//
2118	// @since 3.16.0
2119	LabelSupport bool `json:"labelSupport,omitempty"`
2120}
2121
2122// Provider options for a {@link DocumentSymbolRequest}.
2123//
2124// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentSymbolOptions
2125type DocumentSymbolOptions struct {
2126	// A human-readable string that is shown when multiple outlines trees
2127	// are shown for the same document.
2128	//
2129	// @since 3.16.0
2130	Label string `json:"label,omitempty"`
2131	WorkDoneProgressOptions
2132}
2133
2134// Parameters for a {@link DocumentSymbolRequest}.
2135//
2136// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentSymbolParams
2137type DocumentSymbolParams struct {
2138	// The text document.
2139	TextDocument TextDocumentIdentifier `json:"textDocument"`
2140	WorkDoneProgressParams
2141	PartialResultParams
2142}
2143
2144// Registration options for a {@link DocumentSymbolRequest}.
2145//
2146// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentSymbolRegistrationOptions
2147type DocumentSymbolRegistrationOptions struct {
2148	TextDocumentRegistrationOptions
2149	DocumentSymbolOptions
2150}
2151
2152// Edit range variant that includes ranges for insert and replace operations.
2153//
2154// @since 3.18.0
2155//
2156// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#editRangeWithInsertReplace
2157type EditRangeWithInsertReplace struct {
2158	Insert  Range `json:"insert"`
2159	Replace Range `json:"replace"`
2160}
2161
2162// Predefined error codes.
2163type ErrorCodes int32
2164
2165// The client capabilities of a {@link ExecuteCommandRequest}.
2166//
2167// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#executeCommandClientCapabilities
2168type ExecuteCommandClientCapabilities struct {
2169	// Execute command supports dynamic registration.
2170	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
2171}
2172
2173// The server capabilities of a {@link ExecuteCommandRequest}.
2174//
2175// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#executeCommandOptions
2176type ExecuteCommandOptions struct {
2177	// The commands to be executed on the server
2178	Commands []string `json:"commands"`
2179	WorkDoneProgressOptions
2180}
2181
2182// The parameters of a {@link ExecuteCommandRequest}.
2183//
2184// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#executeCommandParams
2185type ExecuteCommandParams struct {
2186	// The identifier of the actual command handler.
2187	Command string `json:"command"`
2188	// Arguments that the command should be invoked with.
2189	Arguments []json.RawMessage `json:"arguments,omitempty"`
2190	WorkDoneProgressParams
2191}
2192
2193// Registration options for a {@link ExecuteCommandRequest}.
2194//
2195// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#executeCommandRegistrationOptions
2196type ExecuteCommandRegistrationOptions struct {
2197	ExecuteCommandOptions
2198}
2199
2200// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#executionSummary
2201type ExecutionSummary struct {
2202	// A strict monotonically increasing value
2203	// indicating the execution order of a cell
2204	// inside a notebook.
2205	ExecutionOrder uint32 `json:"executionOrder"`
2206	// Whether the execution was successful or
2207	// not if known by the client.
2208	Success bool `json:"success,omitempty"`
2209}
2210type FailureHandlingKind string
2211
2212// The file event type
2213type FileChangeType uint32
2214
2215// Represents information on a file/folder create.
2216//
2217// @since 3.16.0
2218//
2219// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileCreate
2220type FileCreate struct {
2221	// A file:// URI for the location of the file/folder being created.
2222	URI string `json:"uri"`
2223}
2224
2225// Represents information on a file/folder delete.
2226//
2227// @since 3.16.0
2228//
2229// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileDelete
2230type FileDelete struct {
2231	// A file:// URI for the location of the file/folder being deleted.
2232	URI string `json:"uri"`
2233}
2234
2235// An event describing a file change.
2236//
2237// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileEvent
2238type FileEvent struct {
2239	// The file's uri.
2240	URI DocumentUri `json:"uri"`
2241	// The change type.
2242	Type FileChangeType `json:"type"`
2243}
2244
2245// Capabilities relating to events from file operations by the user in the client.
2246//
2247// These events do not come from the file system, they come from user operations
2248// like renaming a file in the UI.
2249//
2250// @since 3.16.0
2251//
2252// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileOperationClientCapabilities
2253type FileOperationClientCapabilities struct {
2254	// Whether the client supports dynamic registration for file requests/notifications.
2255	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
2256	// The client has support for sending didCreateFiles notifications.
2257	DidCreate bool `json:"didCreate,omitempty"`
2258	// The client has support for sending willCreateFiles requests.
2259	WillCreate bool `json:"willCreate,omitempty"`
2260	// The client has support for sending didRenameFiles notifications.
2261	DidRename bool `json:"didRename,omitempty"`
2262	// The client has support for sending willRenameFiles requests.
2263	WillRename bool `json:"willRename,omitempty"`
2264	// The client has support for sending didDeleteFiles notifications.
2265	DidDelete bool `json:"didDelete,omitempty"`
2266	// The client has support for sending willDeleteFiles requests.
2267	WillDelete bool `json:"willDelete,omitempty"`
2268}
2269
2270// A filter to describe in which file operation requests or notifications
2271// the server is interested in receiving.
2272//
2273// @since 3.16.0
2274//
2275// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileOperationFilter
2276type FileOperationFilter struct {
2277	// A Uri scheme like `file` or `untitled`.
2278	Scheme string `json:"scheme,omitempty"`
2279	// The actual file operation pattern.
2280	Pattern FileOperationPattern `json:"pattern"`
2281}
2282
2283// Options for notifications/requests for user operations on files.
2284//
2285// @since 3.16.0
2286//
2287// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileOperationOptions
2288type FileOperationOptions struct {
2289	// The server is interested in receiving didCreateFiles notifications.
2290	DidCreate *FileOperationRegistrationOptions `json:"didCreate,omitempty"`
2291	// The server is interested in receiving willCreateFiles requests.
2292	WillCreate *FileOperationRegistrationOptions `json:"willCreate,omitempty"`
2293	// The server is interested in receiving didRenameFiles notifications.
2294	DidRename *FileOperationRegistrationOptions `json:"didRename,omitempty"`
2295	// The server is interested in receiving willRenameFiles requests.
2296	WillRename *FileOperationRegistrationOptions `json:"willRename,omitempty"`
2297	// The server is interested in receiving didDeleteFiles file notifications.
2298	DidDelete *FileOperationRegistrationOptions `json:"didDelete,omitempty"`
2299	// The server is interested in receiving willDeleteFiles file requests.
2300	WillDelete *FileOperationRegistrationOptions `json:"willDelete,omitempty"`
2301}
2302
2303// A pattern to describe in which file operation requests or notifications
2304// the server is interested in receiving.
2305//
2306// @since 3.16.0
2307//
2308// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileOperationPattern
2309type FileOperationPattern struct {
2310	// The glob pattern to match. Glob patterns can have the following syntax:
2311	//
2312	//  - `*` to match one or more characters in a path segment
2313	//  - `?` to match on one character in a path segment
2314	//  - `**` to match any number of path segments, including none
2315	//  - `{}` to group sub patterns into an OR expression. (e.g. `**​/*.{ts,js}` matches all TypeScript and JavaScript files)
2316	//  - `[]` to declare a range of characters to match in a path segment (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …)
2317	//  - `[!...]` to negate a range of characters to match in a path segment (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but not `example.0`)
2318	Glob string `json:"glob"`
2319	// Whether to match files or folders with this pattern.
2320	//
2321	// Matches both if undefined.
2322	Matches *FileOperationPatternKind `json:"matches,omitempty"`
2323	// Additional options used during matching.
2324	Options *FileOperationPatternOptions `json:"options,omitempty"`
2325}
2326
2327// A pattern kind describing if a glob pattern matches a file a folder or
2328// both.
2329//
2330// @since 3.16.0
2331type FileOperationPatternKind string
2332
2333// Matching options for the file operation pattern.
2334//
2335// @since 3.16.0
2336//
2337// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileOperationPatternOptions
2338type FileOperationPatternOptions struct {
2339	// The pattern should be matched ignoring casing.
2340	IgnoreCase bool `json:"ignoreCase,omitempty"`
2341}
2342
2343// The options to register for file operations.
2344//
2345// @since 3.16.0
2346//
2347// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileOperationRegistrationOptions
2348type FileOperationRegistrationOptions struct {
2349	// The actual filters.
2350	Filters []FileOperationFilter `json:"filters"`
2351}
2352
2353// Represents information on a file/folder rename.
2354//
2355// @since 3.16.0
2356//
2357// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileRename
2358type FileRename struct {
2359	// A file:// URI for the original location of the file/folder being renamed.
2360	OldURI string `json:"oldUri"`
2361	// A file:// URI for the new location of the file/folder being renamed.
2362	NewURI string `json:"newUri"`
2363}
2364
2365// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileSystemWatcher
2366type FileSystemWatcher struct {
2367	// The glob pattern to watch. See {@link GlobPattern glob pattern} for more detail.
2368	//
2369	// @since 3.17.0 support for relative patterns.
2370	GlobPattern GlobPattern `json:"globPattern"`
2371	// The kind of events of interest. If omitted it defaults
2372	// to WatchKind.Create | WatchKind.Change | WatchKind.Delete
2373	// which is 7.
2374	Kind *WatchKind `json:"kind,omitempty"`
2375}
2376
2377// Represents a folding range. To be valid, start and end line must be bigger than zero and smaller
2378// than the number of lines in the document. Clients are free to ignore invalid ranges.
2379//
2380// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#foldingRange
2381type FoldingRange struct {
2382	// The zero-based start line of the range to fold. The folded area starts after the line's last character.
2383	// To be valid, the end must be zero or larger and smaller than the number of lines in the document.
2384	StartLine uint32 `json:"startLine"`
2385	// The zero-based character offset from where the folded range starts. If not defined, defaults to the length of the start line.
2386	StartCharacter uint32 `json:"startCharacter,omitempty"`
2387	// The zero-based end line of the range to fold. The folded area ends with the line's last character.
2388	// To be valid, the end must be zero or larger and smaller than the number of lines in the document.
2389	EndLine uint32 `json:"endLine"`
2390	// The zero-based character offset before the folded range ends. If not defined, defaults to the length of the end line.
2391	EndCharacter uint32 `json:"endCharacter,omitempty"`
2392	// Describes the kind of the folding range such as 'comment' or 'region'. The kind
2393	// is used to categorize folding ranges and used by commands like 'Fold all comments'.
2394	// See {@link FoldingRangeKind} for an enumeration of standardized kinds.
2395	Kind string `json:"kind,omitempty"`
2396	// The text that the client should show when the specified range is
2397	// collapsed. If not defined or not supported by the client, a default
2398	// will be chosen by the client.
2399	//
2400	// @since 3.17.0
2401	CollapsedText string `json:"collapsedText,omitempty"`
2402}
2403
2404// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#foldingRangeClientCapabilities
2405type FoldingRangeClientCapabilities struct {
2406	// Whether implementation supports dynamic registration for folding range
2407	// providers. If this is set to `true` the client supports the new
2408	// `FoldingRangeRegistrationOptions` return value for the corresponding
2409	// server capability as well.
2410	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
2411	// The maximum number of folding ranges that the client prefers to receive
2412	// per document. The value serves as a hint, servers are free to follow the
2413	// limit.
2414	RangeLimit uint32 `json:"rangeLimit,omitempty"`
2415	// If set, the client signals that it only supports folding complete lines.
2416	// If set, client will ignore specified `startCharacter` and `endCharacter`
2417	// properties in a FoldingRange.
2418	LineFoldingOnly bool `json:"lineFoldingOnly,omitempty"`
2419	// Specific options for the folding range kind.
2420	//
2421	// @since 3.17.0
2422	FoldingRangeKind *ClientFoldingRangeKindOptions `json:"foldingRangeKind,omitempty"`
2423	// Specific options for the folding range.
2424	//
2425	// @since 3.17.0
2426	FoldingRange *ClientFoldingRangeOptions `json:"foldingRange,omitempty"`
2427}
2428
2429// A set of predefined range kinds.
2430type FoldingRangeKind string
2431
2432// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#foldingRangeOptions
2433type FoldingRangeOptions struct {
2434	WorkDoneProgressOptions
2435}
2436
2437// Parameters for a {@link FoldingRangeRequest}.
2438//
2439// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#foldingRangeParams
2440type FoldingRangeParams struct {
2441	// The text document.
2442	TextDocument TextDocumentIdentifier `json:"textDocument"`
2443	WorkDoneProgressParams
2444	PartialResultParams
2445}
2446
2447// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#foldingRangeRegistrationOptions
2448type FoldingRangeRegistrationOptions struct {
2449	TextDocumentRegistrationOptions
2450	FoldingRangeOptions
2451	StaticRegistrationOptions
2452}
2453
2454// Client workspace capabilities specific to folding ranges
2455//
2456// @since 3.18.0
2457// @proposed
2458//
2459// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#foldingRangeWorkspaceClientCapabilities
2460type FoldingRangeWorkspaceClientCapabilities struct {
2461	// Whether the client implementation supports a refresh request sent from the
2462	// server to the client.
2463	//
2464	// Note that this event is global and will force the client to refresh all
2465	// folding ranges currently shown. It should be used with absolute care and is
2466	// useful for situation where a server for example detects a project wide
2467	// change that requires such a calculation.
2468	//
2469	// @since 3.18.0
2470	// @proposed
2471	RefreshSupport bool `json:"refreshSupport,omitempty"`
2472}
2473
2474// Value-object describing what options formatting should use.
2475//
2476// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#formattingOptions
2477type FormattingOptions struct {
2478	// Size of a tab in spaces.
2479	TabSize uint32 `json:"tabSize"`
2480	// Prefer spaces over tabs.
2481	InsertSpaces bool `json:"insertSpaces"`
2482	// Trim trailing whitespace on a line.
2483	//
2484	// @since 3.15.0
2485	TrimTrailingWhitespace bool `json:"trimTrailingWhitespace,omitempty"`
2486	// Insert a newline character at the end of the file if one does not exist.
2487	//
2488	// @since 3.15.0
2489	InsertFinalNewline bool `json:"insertFinalNewline,omitempty"`
2490	// Trim all newlines after the final newline at the end of the file.
2491	//
2492	// @since 3.15.0
2493	TrimFinalNewlines bool `json:"trimFinalNewlines,omitempty"`
2494}
2495
2496// A diagnostic report with a full set of problems.
2497//
2498// @since 3.17.0
2499//
2500// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fullDocumentDiagnosticReport
2501type FullDocumentDiagnosticReport struct {
2502	// A full document diagnostic report.
2503	Kind string `json:"kind"`
2504	// An optional result id. If provided it will
2505	// be sent on the next diagnostic request for the
2506	// same document.
2507	ResultID string `json:"resultId,omitempty"`
2508	// The actual items.
2509	Items []Diagnostic `json:"items"`
2510}
2511
2512// General client capabilities.
2513//
2514// @since 3.16.0
2515//
2516// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#generalClientCapabilities
2517type GeneralClientCapabilities struct {
2518	// Client capability that signals how the client
2519	// handles stale requests (e.g. a request
2520	// for which the client will not process the response
2521	// anymore since the information is outdated).
2522	//
2523	// @since 3.17.0
2524	StaleRequestSupport *StaleRequestSupportOptions `json:"staleRequestSupport,omitempty"`
2525	// Client capabilities specific to regular expressions.
2526	//
2527	// @since 3.16.0
2528	RegularExpressions *RegularExpressionsClientCapabilities `json:"regularExpressions,omitempty"`
2529	// Client capabilities specific to the client's markdown parser.
2530	//
2531	// @since 3.16.0
2532	Markdown *MarkdownClientCapabilities `json:"markdown,omitempty"`
2533	// The position encodings supported by the client. Client and server
2534	// have to agree on the same position encoding to ensure that offsets
2535	// (e.g. character position in a line) are interpreted the same on both
2536	// sides.
2537	//
2538	// To keep the protocol backwards compatible the following applies: if
2539	// the value 'utf-16' is missing from the array of position encodings
2540	// servers can assume that the client supports UTF-16. UTF-16 is
2541	// therefore a mandatory encoding.
2542	//
2543	// If omitted it defaults to ['utf-16'].
2544	//
2545	// Implementation considerations: since the conversion from one encoding
2546	// into another requires the content of the file / line the conversion
2547	// is best done where the file is read which is usually on the server
2548	// side.
2549	//
2550	// @since 3.17.0
2551	PositionEncodings []PositionEncodingKind `json:"positionEncodings,omitempty"`
2552}
2553
2554// The glob pattern. Either a string pattern or a relative pattern.
2555//
2556// @since 3.17.0
2557//
2558// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#globPattern
2559type GlobPattern = Or_GlobPattern // (alias)
2560// The result of a hover request.
2561//
2562// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#hover
2563type Hover struct {
2564	// The hover's content
2565	Contents MarkupContent `json:"contents"`
2566	// An optional range inside the text document that is used to
2567	// visualize the hover, e.g. by changing the background color.
2568	Range Range `json:"range,omitempty"`
2569}
2570
2571// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#hoverClientCapabilities
2572type HoverClientCapabilities struct {
2573	// Whether hover supports dynamic registration.
2574	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
2575	// Client supports the following content formats for the content
2576	// property. The order describes the preferred format of the client.
2577	ContentFormat []MarkupKind `json:"contentFormat,omitempty"`
2578}
2579
2580// Hover options.
2581//
2582// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#hoverOptions
2583type HoverOptions struct {
2584	WorkDoneProgressOptions
2585}
2586
2587// Parameters for a {@link HoverRequest}.
2588//
2589// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#hoverParams
2590type HoverParams struct {
2591	TextDocumentPositionParams
2592	WorkDoneProgressParams
2593}
2594
2595// Registration options for a {@link HoverRequest}.
2596//
2597// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#hoverRegistrationOptions
2598type HoverRegistrationOptions struct {
2599	TextDocumentRegistrationOptions
2600	HoverOptions
2601}
2602
2603// @since 3.6.0
2604//
2605// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#implementationClientCapabilities
2606type ImplementationClientCapabilities struct {
2607	// Whether implementation supports dynamic registration. If this is set to `true`
2608	// the client supports the new `ImplementationRegistrationOptions` return value
2609	// for the corresponding server capability as well.
2610	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
2611	// The client supports additional metadata in the form of definition links.
2612	//
2613	// @since 3.14.0
2614	LinkSupport bool `json:"linkSupport,omitempty"`
2615}
2616
2617// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#implementationOptions
2618type ImplementationOptions struct {
2619	WorkDoneProgressOptions
2620}
2621
2622// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#implementationParams
2623type ImplementationParams struct {
2624	TextDocumentPositionParams
2625	WorkDoneProgressParams
2626	PartialResultParams
2627}
2628
2629// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#implementationRegistrationOptions
2630type ImplementationRegistrationOptions struct {
2631	TextDocumentRegistrationOptions
2632	ImplementationOptions
2633	StaticRegistrationOptions
2634}
2635
2636// The data type of the ResponseError if the
2637// initialize request fails.
2638//
2639// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#initializeError
2640type InitializeError struct {
2641	// Indicates whether the client execute the following retry logic:
2642	// (1) show the message provided by the ResponseError to the user
2643	// (2) user selects retry or cancel
2644	// (3) if user selected retry the initialize method is sent again.
2645	Retry bool `json:"retry"`
2646}
2647
2648// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#initializeParams
2649type InitializeParams struct {
2650	XInitializeParams
2651	WorkspaceFoldersInitializeParams
2652}
2653
2654// The result returned from an initialize request.
2655//
2656// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#initializeResult
2657type InitializeResult struct {
2658	// The capabilities the language server provides.
2659	Capabilities ServerCapabilities `json:"capabilities"`
2660	// Information about the server.
2661	//
2662	// @since 3.15.0
2663	ServerInfo *ServerInfo `json:"serverInfo,omitempty"`
2664}
2665
2666// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#initializedParams
2667type InitializedParams struct {
2668}
2669
2670// Inlay hint information.
2671//
2672// @since 3.17.0
2673//
2674// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlayHint
2675type InlayHint struct {
2676	// The position of this hint.
2677	//
2678	// If multiple hints have the same position, they will be shown in the order
2679	// they appear in the response.
2680	Position Position `json:"position"`
2681	// The label of this hint. A human readable string or an array of
2682	// InlayHintLabelPart label parts.
2683	//
2684	// *Note* that neither the string nor the label part can be empty.
2685	Label []InlayHintLabelPart `json:"label"`
2686	// The kind of this hint. Can be omitted in which case the client
2687	// should fall back to a reasonable default.
2688	Kind InlayHintKind `json:"kind,omitempty"`
2689	// Optional text edits that are performed when accepting this inlay hint.
2690	//
2691	// *Note* that edits are expected to change the document so that the inlay
2692	// hint (or its nearest variant) is now part of the document and the inlay
2693	// hint itself is now obsolete.
2694	TextEdits []TextEdit `json:"textEdits,omitempty"`
2695	// The tooltip text when you hover over this item.
2696	Tooltip *Or_InlayHint_tooltip `json:"tooltip,omitempty"`
2697	// Render padding before the hint.
2698	//
2699	// Note: Padding should use the editor's background color, not the
2700	// background color of the hint itself. That means padding can be used
2701	// to visually align/separate an inlay hint.
2702	PaddingLeft bool `json:"paddingLeft,omitempty"`
2703	// Render padding after the hint.
2704	//
2705	// Note: Padding should use the editor's background color, not the
2706	// background color of the hint itself. That means padding can be used
2707	// to visually align/separate an inlay hint.
2708	PaddingRight bool `json:"paddingRight,omitempty"`
2709	// A data entry field that is preserved on an inlay hint between
2710	// a `textDocument/inlayHint` and a `inlayHint/resolve` request.
2711	Data interface{} `json:"data,omitempty"`
2712}
2713
2714// Inlay hint client capabilities.
2715//
2716// @since 3.17.0
2717//
2718// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlayHintClientCapabilities
2719type InlayHintClientCapabilities struct {
2720	// Whether inlay hints support dynamic registration.
2721	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
2722	// Indicates which properties a client can resolve lazily on an inlay
2723	// hint.
2724	ResolveSupport *ClientInlayHintResolveOptions `json:"resolveSupport,omitempty"`
2725}
2726
2727// Inlay hint kinds.
2728//
2729// @since 3.17.0
2730type InlayHintKind uint32
2731
2732// An inlay hint label part allows for interactive and composite labels
2733// of inlay hints.
2734//
2735// @since 3.17.0
2736//
2737// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlayHintLabelPart
2738type InlayHintLabelPart struct {
2739	// The value of this label part.
2740	Value string `json:"value"`
2741	// The tooltip text when you hover over this label part. Depending on
2742	// the client capability `inlayHint.resolveSupport` clients might resolve
2743	// this property late using the resolve request.
2744	Tooltip *Or_InlayHintLabelPart_tooltip `json:"tooltip,omitempty"`
2745	// An optional source code location that represents this
2746	// label part.
2747	//
2748	// The editor will use this location for the hover and for code navigation
2749	// features: This part will become a clickable link that resolves to the
2750	// definition of the symbol at the given location (not necessarily the
2751	// location itself), it shows the hover that shows at the given location,
2752	// and it shows a context menu with further code navigation commands.
2753	//
2754	// Depending on the client capability `inlayHint.resolveSupport` clients
2755	// might resolve this property late using the resolve request.
2756	Location *Location `json:"location,omitempty"`
2757	// An optional command for this label part.
2758	//
2759	// Depending on the client capability `inlayHint.resolveSupport` clients
2760	// might resolve this property late using the resolve request.
2761	Command *Command `json:"command,omitempty"`
2762}
2763
2764// Inlay hint options used during static registration.
2765//
2766// @since 3.17.0
2767//
2768// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlayHintOptions
2769type InlayHintOptions struct {
2770	// The server provides support to resolve additional
2771	// information for an inlay hint item.
2772	ResolveProvider bool `json:"resolveProvider,omitempty"`
2773	WorkDoneProgressOptions
2774}
2775
2776// A parameter literal used in inlay hint requests.
2777//
2778// @since 3.17.0
2779//
2780// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlayHintParams
2781type InlayHintParams struct {
2782	// The text document.
2783	TextDocument TextDocumentIdentifier `json:"textDocument"`
2784	// The document range for which inlay hints should be computed.
2785	Range Range `json:"range"`
2786	WorkDoneProgressParams
2787}
2788
2789// Inlay hint options used during static or dynamic registration.
2790//
2791// @since 3.17.0
2792//
2793// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlayHintRegistrationOptions
2794type InlayHintRegistrationOptions struct {
2795	InlayHintOptions
2796	TextDocumentRegistrationOptions
2797	StaticRegistrationOptions
2798}
2799
2800// Client workspace capabilities specific to inlay hints.
2801//
2802// @since 3.17.0
2803//
2804// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlayHintWorkspaceClientCapabilities
2805type InlayHintWorkspaceClientCapabilities struct {
2806	// Whether the client implementation supports a refresh request sent from
2807	// the server to the client.
2808	//
2809	// Note that this event is global and will force the client to refresh all
2810	// inlay hints currently shown. It should be used with absolute care and
2811	// is useful for situation where a server for example detects a project wide
2812	// change that requires such a calculation.
2813	RefreshSupport bool `json:"refreshSupport,omitempty"`
2814}
2815
2816// Client capabilities specific to inline completions.
2817//
2818// @since 3.18.0
2819// @proposed
2820//
2821// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineCompletionClientCapabilities
2822type InlineCompletionClientCapabilities struct {
2823	// Whether implementation supports dynamic registration for inline completion providers.
2824	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
2825}
2826
2827// Provides information about the context in which an inline completion was requested.
2828//
2829// @since 3.18.0
2830// @proposed
2831//
2832// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineCompletionContext
2833type InlineCompletionContext struct {
2834	// Describes how the inline completion was triggered.
2835	TriggerKind InlineCompletionTriggerKind `json:"triggerKind"`
2836	// Provides information about the currently selected item in the autocomplete widget if it is visible.
2837	SelectedCompletionInfo *SelectedCompletionInfo `json:"selectedCompletionInfo,omitempty"`
2838}
2839
2840// An inline completion item represents a text snippet that is proposed inline to complete text that is being typed.
2841//
2842// @since 3.18.0
2843// @proposed
2844//
2845// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineCompletionItem
2846type InlineCompletionItem struct {
2847	// The text to replace the range with. Must be set.
2848	InsertText Or_InlineCompletionItem_insertText `json:"insertText"`
2849	// A text that is used to decide if this inline completion should be shown. When `falsy` the {@link InlineCompletionItem.insertText} is used.
2850	FilterText string `json:"filterText,omitempty"`
2851	// The range to replace. Must begin and end on the same line.
2852	Range *Range `json:"range,omitempty"`
2853	// An optional {@link Command} that is executed *after* inserting this completion.
2854	Command *Command `json:"command,omitempty"`
2855}
2856
2857// Represents a collection of {@link InlineCompletionItem inline completion items} to be presented in the editor.
2858//
2859// @since 3.18.0
2860// @proposed
2861//
2862// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineCompletionList
2863type InlineCompletionList struct {
2864	// The inline completion items
2865	Items []InlineCompletionItem `json:"items"`
2866}
2867
2868// Inline completion options used during static registration.
2869//
2870// @since 3.18.0
2871// @proposed
2872//
2873// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineCompletionOptions
2874type InlineCompletionOptions struct {
2875	WorkDoneProgressOptions
2876}
2877
2878// A parameter literal used in inline completion requests.
2879//
2880// @since 3.18.0
2881// @proposed
2882//
2883// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineCompletionParams
2884type InlineCompletionParams struct {
2885	// Additional information about the context in which inline completions were
2886	// requested.
2887	Context InlineCompletionContext `json:"context"`
2888	TextDocumentPositionParams
2889	WorkDoneProgressParams
2890}
2891
2892// Inline completion options used during static or dynamic registration.
2893//
2894// @since 3.18.0
2895// @proposed
2896//
2897// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineCompletionRegistrationOptions
2898type InlineCompletionRegistrationOptions struct {
2899	InlineCompletionOptions
2900	TextDocumentRegistrationOptions
2901	StaticRegistrationOptions
2902}
2903
2904// Describes how an {@link InlineCompletionItemProvider inline completion provider} was triggered.
2905//
2906// @since 3.18.0
2907// @proposed
2908type InlineCompletionTriggerKind uint32
2909
2910// Inline value information can be provided by different means:
2911//
2912//   - directly as a text value (class InlineValueText).
2913//   - as a name to use for a variable lookup (class InlineValueVariableLookup)
2914//   - as an evaluatable expression (class InlineValueEvaluatableExpression)
2915//
2916// The InlineValue types combines all inline value types into one type.
2917//
2918// @since 3.17.0
2919//
2920// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValue
2921type InlineValue = Or_InlineValue // (alias)
2922// Client capabilities specific to inline values.
2923//
2924// @since 3.17.0
2925//
2926// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValueClientCapabilities
2927type InlineValueClientCapabilities struct {
2928	// Whether implementation supports dynamic registration for inline value providers.
2929	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
2930}
2931
2932// @since 3.17.0
2933//
2934// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValueContext
2935type InlineValueContext struct {
2936	// The stack frame (as a DAP Id) where the execution has stopped.
2937	FrameID int32 `json:"frameId"`
2938	// The document range where execution has stopped.
2939	// Typically the end position of the range denotes the line where the inline values are shown.
2940	StoppedLocation Range `json:"stoppedLocation"`
2941}
2942
2943// Provide an inline value through an expression evaluation.
2944// If only a range is specified, the expression will be extracted from the underlying document.
2945// An optional expression can be used to override the extracted expression.
2946//
2947// @since 3.17.0
2948//
2949// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValueEvaluatableExpression
2950type InlineValueEvaluatableExpression struct {
2951	// The document range for which the inline value applies.
2952	// The range is used to extract the evaluatable expression from the underlying document.
2953	Range Range `json:"range"`
2954	// If specified the expression overrides the extracted expression.
2955	Expression string `json:"expression,omitempty"`
2956}
2957
2958// Inline value options used during static registration.
2959//
2960// @since 3.17.0
2961//
2962// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValueOptions
2963type InlineValueOptions struct {
2964	WorkDoneProgressOptions
2965}
2966
2967// A parameter literal used in inline value requests.
2968//
2969// @since 3.17.0
2970//
2971// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValueParams
2972type InlineValueParams struct {
2973	// The text document.
2974	TextDocument TextDocumentIdentifier `json:"textDocument"`
2975	// The document range for which inline values should be computed.
2976	Range Range `json:"range"`
2977	// Additional information about the context in which inline values were
2978	// requested.
2979	Context InlineValueContext `json:"context"`
2980	WorkDoneProgressParams
2981}
2982
2983// Inline value options used during static or dynamic registration.
2984//
2985// @since 3.17.0
2986//
2987// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValueRegistrationOptions
2988type InlineValueRegistrationOptions struct {
2989	InlineValueOptions
2990	TextDocumentRegistrationOptions
2991	StaticRegistrationOptions
2992}
2993
2994// Provide inline value as text.
2995//
2996// @since 3.17.0
2997//
2998// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValueText
2999type InlineValueText struct {
3000	// The document range for which the inline value applies.
3001	Range Range `json:"range"`
3002	// The text of the inline value.
3003	Text string `json:"text"`
3004}
3005
3006// Provide inline value through a variable lookup.
3007// If only a range is specified, the variable name will be extracted from the underlying document.
3008// An optional variable name can be used to override the extracted name.
3009//
3010// @since 3.17.0
3011//
3012// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValueVariableLookup
3013type InlineValueVariableLookup struct {
3014	// The document range for which the inline value applies.
3015	// The range is used to extract the variable name from the underlying document.
3016	Range Range `json:"range"`
3017	// If specified the name of the variable to look up.
3018	VariableName string `json:"variableName,omitempty"`
3019	// How to perform the lookup.
3020	CaseSensitiveLookup bool `json:"caseSensitiveLookup"`
3021}
3022
3023// Client workspace capabilities specific to inline values.
3024//
3025// @since 3.17.0
3026//
3027// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValueWorkspaceClientCapabilities
3028type InlineValueWorkspaceClientCapabilities struct {
3029	// Whether the client implementation supports a refresh request sent from the
3030	// server to the client.
3031	//
3032	// Note that this event is global and will force the client to refresh all
3033	// inline values currently shown. It should be used with absolute care and is
3034	// useful for situation where a server for example detects a project wide
3035	// change that requires such a calculation.
3036	RefreshSupport bool `json:"refreshSupport,omitempty"`
3037}
3038
3039// A special text edit to provide an insert and a replace operation.
3040//
3041// @since 3.16.0
3042//
3043// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#insertReplaceEdit
3044type InsertReplaceEdit struct {
3045	// The string to be inserted.
3046	NewText string `json:"newText"`
3047	// The range if the insert is requested
3048	Insert Range `json:"insert"`
3049	// The range if the replace is requested.
3050	Replace Range `json:"replace"`
3051}
3052
3053// Defines whether the insert text in a completion item should be interpreted as
3054// plain text or a snippet.
3055type InsertTextFormat uint32
3056
3057// How whitespace and indentation is handled during completion
3058// item insertion.
3059//
3060// @since 3.16.0
3061type InsertTextMode uint32
3062type LSPAny = interface{}
3063
3064// LSP arrays.
3065// @since 3.17.0
3066//
3067// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#lSPArray
3068type LSPArray = []interface{} // (alias)
3069type LSPErrorCodes int32
3070
3071// LSP object definition.
3072// @since 3.17.0
3073//
3074// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#lSPObject
3075type LSPObject = map[string]LSPAny // (alias)
3076// Predefined Language kinds
3077// @since 3.18.0
3078// @proposed
3079type LanguageKind string
3080
3081// Client capabilities for the linked editing range request.
3082//
3083// @since 3.16.0
3084//
3085// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#linkedEditingRangeClientCapabilities
3086type LinkedEditingRangeClientCapabilities struct {
3087	// Whether implementation supports dynamic registration. If this is set to `true`
3088	// the client supports the new `(TextDocumentRegistrationOptions & StaticRegistrationOptions)`
3089	// return value for the corresponding server capability as well.
3090	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
3091}
3092
3093// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#linkedEditingRangeOptions
3094type LinkedEditingRangeOptions struct {
3095	WorkDoneProgressOptions
3096}
3097
3098// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#linkedEditingRangeParams
3099type LinkedEditingRangeParams struct {
3100	TextDocumentPositionParams
3101	WorkDoneProgressParams
3102}
3103
3104// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#linkedEditingRangeRegistrationOptions
3105type LinkedEditingRangeRegistrationOptions struct {
3106	TextDocumentRegistrationOptions
3107	LinkedEditingRangeOptions
3108	StaticRegistrationOptions
3109}
3110
3111// The result of a linked editing range request.
3112//
3113// @since 3.16.0
3114//
3115// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#linkedEditingRanges
3116type LinkedEditingRanges struct {
3117	// A list of ranges that can be edited together. The ranges must have
3118	// identical length and contain identical text content. The ranges cannot overlap.
3119	Ranges []Range `json:"ranges"`
3120	// An optional word pattern (regular expression) that describes valid contents for
3121	// the given ranges. If no pattern is provided, the client configuration's word
3122	// pattern will be used.
3123	WordPattern string `json:"wordPattern,omitempty"`
3124}
3125
3126// created for Literal (Lit_ClientSemanticTokensRequestOptions_range_Item1)
3127type Lit_ClientSemanticTokensRequestOptions_range_Item1 struct {
3128}
3129
3130// created for Literal (Lit_SemanticTokensOptions_range_Item1)
3131type Lit_SemanticTokensOptions_range_Item1 struct {
3132}
3133
3134// Represents a location inside a resource, such as a line
3135// inside a text file.
3136//
3137// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#location
3138type Location struct {
3139	URI   DocumentUri `json:"uri"`
3140	Range Range       `json:"range"`
3141}
3142
3143// Represents the connection of two locations. Provides additional metadata over normal {@link Location locations},
3144// including an origin range.
3145//
3146// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#locationLink
3147type LocationLink struct {
3148	// Span of the origin of this link.
3149	//
3150	// Used as the underlined span for mouse interaction. Defaults to the word range at
3151	// the definition position.
3152	OriginSelectionRange *Range `json:"originSelectionRange,omitempty"`
3153	// The target resource identifier of this link.
3154	TargetURI DocumentUri `json:"targetUri"`
3155	// The full target range of this link. If the target for example is a symbol then target range is the
3156	// range enclosing this symbol not including leading/trailing whitespace but everything else
3157	// like comments. This information is typically used to highlight the range in the editor.
3158	TargetRange Range `json:"targetRange"`
3159	// The range that should be selected and revealed when this link is being followed, e.g the name of a function.
3160	// Must be contained by the `targetRange`. See also `DocumentSymbol#range`
3161	TargetSelectionRange Range `json:"targetSelectionRange"`
3162}
3163
3164// Location with only uri and does not include range.
3165//
3166// @since 3.18.0
3167//
3168// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#locationUriOnly
3169type LocationUriOnly struct {
3170	URI DocumentUri `json:"uri"`
3171}
3172
3173// The log message parameters.
3174//
3175// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#logMessageParams
3176type LogMessageParams struct {
3177	// The message type. See {@link MessageType}
3178	Type MessageType `json:"type"`
3179	// The actual message.
3180	Message string `json:"message"`
3181}
3182
3183// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#logTraceParams
3184type LogTraceParams struct {
3185	Message string `json:"message"`
3186	Verbose string `json:"verbose,omitempty"`
3187}
3188
3189// Client capabilities specific to the used markdown parser.
3190//
3191// @since 3.16.0
3192//
3193// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#markdownClientCapabilities
3194type MarkdownClientCapabilities struct {
3195	// The name of the parser.
3196	Parser string `json:"parser"`
3197	// The version of the parser.
3198	Version string `json:"version,omitempty"`
3199	// A list of HTML tags that the client allows / supports in
3200	// Markdown.
3201	//
3202	// @since 3.17.0
3203	AllowedTags []string `json:"allowedTags,omitempty"`
3204}
3205
3206// MarkedString can be used to render human readable text. It is either a markdown string
3207// or a code-block that provides a language and a code snippet. The language identifier
3208// is semantically equal to the optional language identifier in fenced code blocks in GitHub
3209// issues. See https://help.github.com/articles/creating-and-highlighting-code-blocks/#syntax-highlighting
3210//
3211// The pair of a language and a value is an equivalent to markdown:
3212// ```${language}
3213// ${value}
3214// ```
3215//
3216// Note that markdown strings will be sanitized - that means html will be escaped.
3217// @deprecated use MarkupContent instead.
3218//
3219// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#markedString
3220type MarkedString = Or_MarkedString // (alias)
3221// @since 3.18.0
3222// @deprecated use MarkupContent instead.
3223//
3224// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#markedStringWithLanguage
3225type MarkedStringWithLanguage struct {
3226	Language string `json:"language"`
3227	Value    string `json:"value"`
3228}
3229
3230// A `MarkupContent` literal represents a string value which content is interpreted base on its
3231// kind flag. Currently the protocol supports `plaintext` and `markdown` as markup kinds.
3232//
3233// If the kind is `markdown` then the value can contain fenced code blocks like in GitHub issues.
3234// See https://help.github.com/articles/creating-and-highlighting-code-blocks/#syntax-highlighting
3235//
3236// Here is an example how such a string can be constructed using JavaScript / TypeScript:
3237// ```ts
3238//
3239//	let markdown: MarkdownContent = {
3240//	 kind: MarkupKind.Markdown,
3241//	 value: [
3242//	   '# Header',
3243//	   'Some text',
3244//	   '```typescript',
3245//	   'someCode();',
3246//	   '```'
3247//	 ].join('\n')
3248//	};
3249//
3250// ```
3251//
3252// *Please Note* that clients might sanitize the return markdown. A client could decide to
3253// remove HTML from the markdown to avoid script execution.
3254//
3255// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#markupContent
3256type MarkupContent struct {
3257	// The type of the Markup
3258	Kind MarkupKind `json:"kind"`
3259	// The content itself
3260	Value string `json:"value"`
3261}
3262
3263// Describes the content type that a client supports in various
3264// result literals like `Hover`, `ParameterInfo` or `CompletionItem`.
3265//
3266// Please note that `MarkupKinds` must not start with a `$`. This kinds
3267// are reserved for internal usage.
3268type MarkupKind string
3269
3270// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#messageActionItem
3271type MessageActionItem struct {
3272	// A short title like 'Retry', 'Open Log' etc.
3273	Title string `json:"title"`
3274}
3275
3276// The message type
3277type MessageType uint32
3278
3279// Moniker definition to match LSIF 0.5 moniker definition.
3280//
3281// @since 3.16.0
3282//
3283// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#moniker
3284type Moniker struct {
3285	// The scheme of the moniker. For example tsc or .Net
3286	Scheme string `json:"scheme"`
3287	// The identifier of the moniker. The value is opaque in LSIF however
3288	// schema owners are allowed to define the structure if they want.
3289	Identifier string `json:"identifier"`
3290	// The scope in which the moniker is unique
3291	Unique UniquenessLevel `json:"unique"`
3292	// The moniker kind if known.
3293	Kind *MonikerKind `json:"kind,omitempty"`
3294}
3295
3296// Client capabilities specific to the moniker request.
3297//
3298// @since 3.16.0
3299//
3300// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#monikerClientCapabilities
3301type MonikerClientCapabilities struct {
3302	// Whether moniker supports dynamic registration. If this is set to `true`
3303	// the client supports the new `MonikerRegistrationOptions` return value
3304	// for the corresponding server capability as well.
3305	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
3306}
3307
3308// The moniker kind.
3309//
3310// @since 3.16.0
3311type MonikerKind string
3312
3313// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#monikerOptions
3314type MonikerOptions struct {
3315	WorkDoneProgressOptions
3316}
3317
3318// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#monikerParams
3319type MonikerParams struct {
3320	TextDocumentPositionParams
3321	WorkDoneProgressParams
3322	PartialResultParams
3323}
3324
3325// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#monikerRegistrationOptions
3326type MonikerRegistrationOptions struct {
3327	TextDocumentRegistrationOptions
3328	MonikerOptions
3329}
3330
3331// A notebook cell.
3332//
3333// A cell's document URI must be unique across ALL notebook
3334// cells and can therefore be used to uniquely identify a
3335// notebook cell or the cell's text document.
3336//
3337// @since 3.17.0
3338//
3339// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookCell
3340type NotebookCell struct {
3341	// The cell's kind
3342	Kind NotebookCellKind `json:"kind"`
3343	// The URI of the cell's text document
3344	// content.
3345	Document DocumentUri `json:"document"`
3346	// Additional metadata stored with the cell.
3347	//
3348	// Note: should always be an object literal (e.g. LSPObject)
3349	Metadata *LSPObject `json:"metadata,omitempty"`
3350	// Additional execution summary information
3351	// if supported by the client.
3352	ExecutionSummary *ExecutionSummary `json:"executionSummary,omitempty"`
3353}
3354
3355// A change describing how to move a `NotebookCell`
3356// array from state S to S'.
3357//
3358// @since 3.17.0
3359//
3360// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookCellArrayChange
3361type NotebookCellArrayChange struct {
3362	// The start oftest of the cell that changed.
3363	Start uint32 `json:"start"`
3364	// The deleted cells
3365	DeleteCount uint32 `json:"deleteCount"`
3366	// The new cells, if any
3367	Cells []NotebookCell `json:"cells,omitempty"`
3368}
3369
3370// A notebook cell kind.
3371//
3372// @since 3.17.0
3373type NotebookCellKind uint32
3374
3375// @since 3.18.0
3376//
3377// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookCellLanguage
3378type NotebookCellLanguage struct {
3379	Language string `json:"language"`
3380}
3381
3382// A notebook cell text document filter denotes a cell text
3383// document by different properties.
3384//
3385// @since 3.17.0
3386//
3387// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookCellTextDocumentFilter
3388type NotebookCellTextDocumentFilter struct {
3389	// A filter that matches against the notebook
3390	// containing the notebook cell. If a string
3391	// value is provided it matches against the
3392	// notebook type. '*' matches every notebook.
3393	Notebook Or_NotebookCellTextDocumentFilter_notebook `json:"notebook"`
3394	// A language id like `python`.
3395	//
3396	// Will be matched against the language id of the
3397	// notebook cell document. '*' matches every language.
3398	Language string `json:"language,omitempty"`
3399}
3400
3401// A notebook document.
3402//
3403// @since 3.17.0
3404//
3405// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocument
3406type NotebookDocument struct {
3407	// The notebook document's uri.
3408	URI URI `json:"uri"`
3409	// The type of the notebook.
3410	NotebookType string `json:"notebookType"`
3411	// The version number of this document (it will increase after each
3412	// change, including undo/redo).
3413	Version int32 `json:"version"`
3414	// Additional metadata stored with the notebook
3415	// document.
3416	//
3417	// Note: should always be an object literal (e.g. LSPObject)
3418	Metadata *LSPObject `json:"metadata,omitempty"`
3419	// The cells of a notebook.
3420	Cells []NotebookCell `json:"cells"`
3421}
3422
3423// Structural changes to cells in a notebook document.
3424//
3425// @since 3.18.0
3426//
3427// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentCellChangeStructure
3428type NotebookDocumentCellChangeStructure struct {
3429	// The change to the cell array.
3430	Array NotebookCellArrayChange `json:"array"`
3431	// Additional opened cell text documents.
3432	DidOpen []TextDocumentItem `json:"didOpen,omitempty"`
3433	// Additional closed cell text documents.
3434	DidClose []TextDocumentIdentifier `json:"didClose,omitempty"`
3435}
3436
3437// Cell changes to a notebook document.
3438//
3439// @since 3.18.0
3440//
3441// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentCellChanges
3442type NotebookDocumentCellChanges struct {
3443	// Changes to the cell structure to add or
3444	// remove cells.
3445	Structure *NotebookDocumentCellChangeStructure `json:"structure,omitempty"`
3446	// Changes to notebook cells properties like its
3447	// kind, execution summary or metadata.
3448	Data []NotebookCell `json:"data,omitempty"`
3449	// Changes to the text content of notebook cells.
3450	TextContent []NotebookDocumentCellContentChanges `json:"textContent,omitempty"`
3451}
3452
3453// Content changes to a cell in a notebook document.
3454//
3455// @since 3.18.0
3456//
3457// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentCellContentChanges
3458type NotebookDocumentCellContentChanges struct {
3459	Document VersionedTextDocumentIdentifier  `json:"document"`
3460	Changes  []TextDocumentContentChangeEvent `json:"changes"`
3461}
3462
3463// A change event for a notebook document.
3464//
3465// @since 3.17.0
3466//
3467// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentChangeEvent
3468type NotebookDocumentChangeEvent struct {
3469	// The changed meta data if any.
3470	//
3471	// Note: should always be an object literal (e.g. LSPObject)
3472	Metadata *LSPObject `json:"metadata,omitempty"`
3473	// Changes to cells
3474	Cells *NotebookDocumentCellChanges `json:"cells,omitempty"`
3475}
3476
3477// Capabilities specific to the notebook document support.
3478//
3479// @since 3.17.0
3480//
3481// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentClientCapabilities
3482type NotebookDocumentClientCapabilities struct {
3483	// Capabilities specific to notebook document synchronization
3484	//
3485	// @since 3.17.0
3486	Synchronization NotebookDocumentSyncClientCapabilities `json:"synchronization"`
3487}
3488
3489// A notebook document filter denotes a notebook document by
3490// different properties. The properties will be match
3491// against the notebook's URI (same as with documents)
3492//
3493// @since 3.17.0
3494//
3495// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentFilter
3496type NotebookDocumentFilter = Or_NotebookDocumentFilter // (alias)
3497// A notebook document filter where `notebookType` is required field.
3498//
3499// @since 3.18.0
3500//
3501// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentFilterNotebookType
3502type NotebookDocumentFilterNotebookType struct {
3503	// The type of the enclosing notebook.
3504	NotebookType string `json:"notebookType"`
3505	// A Uri {@link Uri.scheme scheme}, like `file` or `untitled`.
3506	Scheme string `json:"scheme,omitempty"`
3507	// A glob pattern.
3508	Pattern *GlobPattern `json:"pattern,omitempty"`
3509}
3510
3511// A notebook document filter where `pattern` is required field.
3512//
3513// @since 3.18.0
3514//
3515// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentFilterPattern
3516type NotebookDocumentFilterPattern struct {
3517	// The type of the enclosing notebook.
3518	NotebookType string `json:"notebookType,omitempty"`
3519	// A Uri {@link Uri.scheme scheme}, like `file` or `untitled`.
3520	Scheme string `json:"scheme,omitempty"`
3521	// A glob pattern.
3522	Pattern GlobPattern `json:"pattern"`
3523}
3524
3525// A notebook document filter where `scheme` is required field.
3526//
3527// @since 3.18.0
3528//
3529// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentFilterScheme
3530type NotebookDocumentFilterScheme struct {
3531	// The type of the enclosing notebook.
3532	NotebookType string `json:"notebookType,omitempty"`
3533	// A Uri {@link Uri.scheme scheme}, like `file` or `untitled`.
3534	Scheme string `json:"scheme"`
3535	// A glob pattern.
3536	Pattern *GlobPattern `json:"pattern,omitempty"`
3537}
3538
3539// @since 3.18.0
3540//
3541// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentFilterWithCells
3542type NotebookDocumentFilterWithCells struct {
3543	// The notebook to be synced If a string
3544	// value is provided it matches against the
3545	// notebook type. '*' matches every notebook.
3546	Notebook *Or_NotebookDocumentFilterWithCells_notebook `json:"notebook,omitempty"`
3547	// The cells of the matching notebook to be synced.
3548	Cells []NotebookCellLanguage `json:"cells"`
3549}
3550
3551// @since 3.18.0
3552//
3553// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentFilterWithNotebook
3554type NotebookDocumentFilterWithNotebook struct {
3555	// The notebook to be synced If a string
3556	// value is provided it matches against the
3557	// notebook type. '*' matches every notebook.
3558	Notebook Or_NotebookDocumentFilterWithNotebook_notebook `json:"notebook"`
3559	// The cells of the matching notebook to be synced.
3560	Cells []NotebookCellLanguage `json:"cells,omitempty"`
3561}
3562
3563// A literal to identify a notebook document in the client.
3564//
3565// @since 3.17.0
3566//
3567// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentIdentifier
3568type NotebookDocumentIdentifier struct {
3569	// The notebook document's uri.
3570	URI URI `json:"uri"`
3571}
3572
3573// Notebook specific client capabilities.
3574//
3575// @since 3.17.0
3576//
3577// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentSyncClientCapabilities
3578type NotebookDocumentSyncClientCapabilities struct {
3579	// Whether implementation supports dynamic registration. If this is
3580	// set to `true` the client supports the new
3581	// `(TextDocumentRegistrationOptions & StaticRegistrationOptions)`
3582	// return value for the corresponding server capability as well.
3583	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
3584	// The client supports sending execution summary data per cell.
3585	ExecutionSummarySupport bool `json:"executionSummarySupport,omitempty"`
3586}
3587
3588// Options specific to a notebook plus its cells
3589// to be synced to the server.
3590//
3591// If a selector provides a notebook document
3592// filter but no cell selector all cells of a
3593// matching notebook document will be synced.
3594//
3595// If a selector provides no notebook document
3596// filter but only a cell selector all notebook
3597// document that contain at least one matching
3598// cell will be synced.
3599//
3600// @since 3.17.0
3601//
3602// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentSyncOptions
3603type NotebookDocumentSyncOptions struct {
3604	// The notebooks to be synced
3605	NotebookSelector []Or_NotebookDocumentSyncOptions_notebookSelector_Elem `json:"notebookSelector"`
3606	// Whether save notification should be forwarded to
3607	// the server. Will only be honored if mode === `notebook`.
3608	Save bool `json:"save,omitempty"`
3609}
3610
3611// Registration options specific to a notebook.
3612//
3613// @since 3.17.0
3614//
3615// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentSyncRegistrationOptions
3616type NotebookDocumentSyncRegistrationOptions struct {
3617	NotebookDocumentSyncOptions
3618	StaticRegistrationOptions
3619}
3620
3621// A text document identifier to optionally denote a specific version of a text document.
3622//
3623// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#optionalVersionedTextDocumentIdentifier
3624type OptionalVersionedTextDocumentIdentifier struct {
3625	// The version number of this document. If a versioned text document identifier
3626	// is sent from the server to the client and the file is not open in the editor
3627	// (the server has not received an open notification before) the server can send
3628	// `null` to indicate that the version is unknown and the content on disk is the
3629	// truth (as specified with document content ownership).
3630	Version int32 `json:"version"`
3631	TextDocumentIdentifier
3632}
3633
3634// created for Or [int32 string]
3635type Or_CancelParams_id struct {
3636	Value interface{} `json:"value"`
3637}
3638
3639// created for Or [ClientSemanticTokensRequestFullDelta bool]
3640type Or_ClientSemanticTokensRequestOptions_full struct {
3641	Value interface{} `json:"value"`
3642}
3643
3644// created for Or [Lit_ClientSemanticTokensRequestOptions_range_Item1 bool]
3645type Or_ClientSemanticTokensRequestOptions_range struct {
3646	Value interface{} `json:"value"`
3647}
3648
3649// created for Or [EditRangeWithInsertReplace Range]
3650type Or_CompletionItemDefaults_editRange struct {
3651	Value interface{} `json:"value"`
3652}
3653
3654// created for Or [MarkupContent string]
3655type Or_CompletionItem_documentation struct {
3656	Value interface{} `json:"value"`
3657}
3658
3659// created for Or [InsertReplaceEdit TextEdit]
3660type Or_CompletionItem_textEdit struct {
3661	Value interface{} `json:"value"`
3662}
3663
3664// created for Or [Location []Location]
3665type Or_Declaration struct {
3666	Value interface{} `json:"value"`
3667}
3668
3669// created for Or [Location []Location]
3670type Or_Definition struct {
3671	Value interface{} `json:"value"`
3672}
3673
3674// created for Or [int32 string]
3675type Or_Diagnostic_code struct {
3676	Value interface{} `json:"value"`
3677}
3678
3679// created for Or [[]string string]
3680type Or_DidChangeConfigurationRegistrationOptions_section struct {
3681	Value interface{} `json:"value"`
3682}
3683
3684// created for Or [RelatedFullDocumentDiagnosticReport RelatedUnchangedDocumentDiagnosticReport]
3685type Or_DocumentDiagnosticReport struct {
3686	Value interface{} `json:"value"`
3687}
3688
3689// created for Or [FullDocumentDiagnosticReport UnchangedDocumentDiagnosticReport]
3690type Or_DocumentDiagnosticReportPartialResult_relatedDocuments_Value struct {
3691	Value interface{} `json:"value"`
3692}
3693
3694// created for Or [NotebookCellTextDocumentFilter TextDocumentFilter]
3695type Or_DocumentFilter struct {
3696	Value interface{} `json:"value"`
3697}
3698
3699// created for Or [Pattern RelativePattern]
3700type Or_GlobPattern struct {
3701	Value interface{} `json:"value"`
3702}
3703
3704// created for Or [MarkedString MarkupContent []MarkedString]
3705type Or_Hover_contents struct {
3706	Value interface{} `json:"value"`
3707}
3708
3709// created for Or [MarkupContent string]
3710type Or_InlayHintLabelPart_tooltip struct {
3711	Value interface{} `json:"value"`
3712}
3713
3714// created for Or [[]InlayHintLabelPart string]
3715type Or_InlayHint_label struct {
3716	Value interface{} `json:"value"`
3717}
3718
3719// created for Or [MarkupContent string]
3720type Or_InlayHint_tooltip struct {
3721	Value interface{} `json:"value"`
3722}
3723
3724// created for Or [StringValue string]
3725type Or_InlineCompletionItem_insertText struct {
3726	Value interface{} `json:"value"`
3727}
3728
3729// created for Or [InlineValueEvaluatableExpression InlineValueText InlineValueVariableLookup]
3730type Or_InlineValue struct {
3731	Value interface{} `json:"value"`
3732}
3733
3734// created for Or [LSPArray LSPObject bool float64 int32 string uint32]
3735type Or_LSPAny struct {
3736	Value interface{} `json:"value"`
3737}
3738
3739// created for Or [MarkedStringWithLanguage string]
3740type Or_MarkedString struct {
3741	Value interface{} `json:"value"`
3742}
3743
3744// created for Or [NotebookDocumentFilter string]
3745type Or_NotebookCellTextDocumentFilter_notebook struct {
3746	Value interface{} `json:"value"`
3747}
3748
3749// created for Or [NotebookDocumentFilterNotebookType NotebookDocumentFilterPattern NotebookDocumentFilterScheme]
3750type Or_NotebookDocumentFilter struct {
3751	Value interface{} `json:"value"`
3752}
3753
3754// created for Or [NotebookDocumentFilter string]
3755type Or_NotebookDocumentFilterWithCells_notebook struct {
3756	Value interface{} `json:"value"`
3757}
3758
3759// created for Or [NotebookDocumentFilter string]
3760type Or_NotebookDocumentFilterWithNotebook_notebook struct {
3761	Value interface{} `json:"value"`
3762}
3763
3764// created for Or [NotebookDocumentFilterWithCells NotebookDocumentFilterWithNotebook]
3765type Or_NotebookDocumentSyncOptions_notebookSelector_Elem struct {
3766	Value interface{} `json:"value"`
3767}
3768
3769// created for Or [MarkupContent string]
3770type Or_ParameterInformation_documentation struct {
3771	Value interface{} `json:"value"`
3772}
3773
3774// created for Or [Tuple_ParameterInformation_label_Item1 string]
3775type Or_ParameterInformation_label struct {
3776	Value interface{} `json:"value"`
3777}
3778
3779// created for Or [PrepareRenameDefaultBehavior PrepareRenamePlaceholder Range]
3780type Or_PrepareRenameResult struct {
3781	Value interface{} `json:"value"`
3782}
3783
3784// created for Or [int32 string]
3785type Or_ProgressToken struct {
3786	Value interface{} `json:"value"`
3787}
3788
3789// created for Or [FullDocumentDiagnosticReport UnchangedDocumentDiagnosticReport]
3790type Or_RelatedFullDocumentDiagnosticReport_relatedDocuments_Value struct {
3791	Value interface{} `json:"value"`
3792}
3793
3794// created for Or [FullDocumentDiagnosticReport UnchangedDocumentDiagnosticReport]
3795type Or_RelatedUnchangedDocumentDiagnosticReport_relatedDocuments_Value struct {
3796	Value interface{} `json:"value"`
3797}
3798
3799// created for Or [URI WorkspaceFolder]
3800type Or_RelativePattern_baseUri struct {
3801	Value interface{} `json:"value"`
3802}
3803
3804// created for Or [CodeAction Command]
3805type Or_Result_textDocument_codeAction_Item0_Elem struct {
3806	Value interface{} `json:"value"`
3807}
3808
3809// created for Or [CompletionList []CompletionItem]
3810type Or_Result_textDocument_completion struct {
3811	Value interface{} `json:"value"`
3812}
3813
3814// created for Or [Declaration []DeclarationLink]
3815type Or_Result_textDocument_declaration struct {
3816	Value interface{} `json:"value"`
3817}
3818
3819// created for Or [Definition []DefinitionLink]
3820type Or_Result_textDocument_definition struct {
3821	Value interface{} `json:"value"`
3822}
3823
3824// created for Or [[]DocumentSymbol []SymbolInformation]
3825type Or_Result_textDocument_documentSymbol struct {
3826	Value interface{} `json:"value"`
3827}
3828
3829// created for Or [Definition []DefinitionLink]
3830type Or_Result_textDocument_implementation struct {
3831	Value interface{} `json:"value"`
3832}
3833
3834// created for Or [InlineCompletionList []InlineCompletionItem]
3835type Or_Result_textDocument_inlineCompletion struct {
3836	Value interface{} `json:"value"`
3837}
3838
3839// created for Or [SemanticTokens SemanticTokensDelta]
3840type Or_Result_textDocument_semanticTokens_full_delta struct {
3841	Value interface{} `json:"value"`
3842}
3843
3844// created for Or [Definition []DefinitionLink]
3845type Or_Result_textDocument_typeDefinition struct {
3846	Value interface{} `json:"value"`
3847}
3848
3849// created for Or [[]SymbolInformation []WorkspaceSymbol]
3850type Or_Result_workspace_symbol struct {
3851	Value interface{} `json:"value"`
3852}
3853
3854// created for Or [SemanticTokensFullDelta bool]
3855type Or_SemanticTokensOptions_full struct {
3856	Value interface{} `json:"value"`
3857}
3858
3859// created for Or [Lit_SemanticTokensOptions_range_Item1 bool]
3860type Or_SemanticTokensOptions_range struct {
3861	Value interface{} `json:"value"`
3862}
3863
3864// created for Or [CallHierarchyOptions CallHierarchyRegistrationOptions bool]
3865type Or_ServerCapabilities_callHierarchyProvider struct {
3866	Value interface{} `json:"value"`
3867}
3868
3869// created for Or [CodeActionOptions bool]
3870type Or_ServerCapabilities_codeActionProvider struct {
3871	Value interface{} `json:"value"`
3872}
3873
3874// created for Or [DocumentColorOptions DocumentColorRegistrationOptions bool]
3875type Or_ServerCapabilities_colorProvider struct {
3876	Value interface{} `json:"value"`
3877}
3878
3879// created for Or [DeclarationOptions DeclarationRegistrationOptions bool]
3880type Or_ServerCapabilities_declarationProvider struct {
3881	Value interface{} `json:"value"`
3882}
3883
3884// created for Or [DefinitionOptions bool]
3885type Or_ServerCapabilities_definitionProvider struct {
3886	Value interface{} `json:"value"`
3887}
3888
3889// created for Or [DiagnosticOptions DiagnosticRegistrationOptions]
3890type Or_ServerCapabilities_diagnosticProvider struct {
3891	Value interface{} `json:"value"`
3892}
3893
3894// created for Or [DocumentFormattingOptions bool]
3895type Or_ServerCapabilities_documentFormattingProvider struct {
3896	Value interface{} `json:"value"`
3897}
3898
3899// created for Or [DocumentHighlightOptions bool]
3900type Or_ServerCapabilities_documentHighlightProvider struct {
3901	Value interface{} `json:"value"`
3902}
3903
3904// created for Or [DocumentRangeFormattingOptions bool]
3905type Or_ServerCapabilities_documentRangeFormattingProvider struct {
3906	Value interface{} `json:"value"`
3907}
3908
3909// created for Or [DocumentSymbolOptions bool]
3910type Or_ServerCapabilities_documentSymbolProvider struct {
3911	Value interface{} `json:"value"`
3912}
3913
3914// created for Or [FoldingRangeOptions FoldingRangeRegistrationOptions bool]
3915type Or_ServerCapabilities_foldingRangeProvider struct {
3916	Value interface{} `json:"value"`
3917}
3918
3919// created for Or [HoverOptions bool]
3920type Or_ServerCapabilities_hoverProvider struct {
3921	Value interface{} `json:"value"`
3922}
3923
3924// created for Or [ImplementationOptions ImplementationRegistrationOptions bool]
3925type Or_ServerCapabilities_implementationProvider struct {
3926	Value interface{} `json:"value"`
3927}
3928
3929// created for Or [InlayHintOptions InlayHintRegistrationOptions bool]
3930type Or_ServerCapabilities_inlayHintProvider struct {
3931	Value interface{} `json:"value"`
3932}
3933
3934// created for Or [InlineCompletionOptions bool]
3935type Or_ServerCapabilities_inlineCompletionProvider struct {
3936	Value interface{} `json:"value"`
3937}
3938
3939// created for Or [InlineValueOptions InlineValueRegistrationOptions bool]
3940type Or_ServerCapabilities_inlineValueProvider struct {
3941	Value interface{} `json:"value"`
3942}
3943
3944// created for Or [LinkedEditingRangeOptions LinkedEditingRangeRegistrationOptions bool]
3945type Or_ServerCapabilities_linkedEditingRangeProvider struct {
3946	Value interface{} `json:"value"`
3947}
3948
3949// created for Or [MonikerOptions MonikerRegistrationOptions bool]
3950type Or_ServerCapabilities_monikerProvider struct {
3951	Value interface{} `json:"value"`
3952}
3953
3954// created for Or [NotebookDocumentSyncOptions NotebookDocumentSyncRegistrationOptions]
3955type Or_ServerCapabilities_notebookDocumentSync struct {
3956	Value interface{} `json:"value"`
3957}
3958
3959// created for Or [ReferenceOptions bool]
3960type Or_ServerCapabilities_referencesProvider struct {
3961	Value interface{} `json:"value"`
3962}
3963
3964// created for Or [RenameOptions bool]
3965type Or_ServerCapabilities_renameProvider struct {
3966	Value interface{} `json:"value"`
3967}
3968
3969// created for Or [SelectionRangeOptions SelectionRangeRegistrationOptions bool]
3970type Or_ServerCapabilities_selectionRangeProvider struct {
3971	Value interface{} `json:"value"`
3972}
3973
3974// created for Or [SemanticTokensOptions SemanticTokensRegistrationOptions]
3975type Or_ServerCapabilities_semanticTokensProvider struct {
3976	Value interface{} `json:"value"`
3977}
3978
3979// created for Or [TextDocumentSyncKind TextDocumentSyncOptions]
3980type Or_ServerCapabilities_textDocumentSync struct {
3981	Value interface{} `json:"value"`
3982}
3983
3984// created for Or [TypeDefinitionOptions TypeDefinitionRegistrationOptions bool]
3985type Or_ServerCapabilities_typeDefinitionProvider struct {
3986	Value interface{} `json:"value"`
3987}
3988
3989// created for Or [TypeHierarchyOptions TypeHierarchyRegistrationOptions bool]
3990type Or_ServerCapabilities_typeHierarchyProvider struct {
3991	Value interface{} `json:"value"`
3992}
3993
3994// created for Or [WorkspaceSymbolOptions bool]
3995type Or_ServerCapabilities_workspaceSymbolProvider struct {
3996	Value interface{} `json:"value"`
3997}
3998
3999// created for Or [MarkupContent string]
4000type Or_SignatureInformation_documentation struct {
4001	Value interface{} `json:"value"`
4002}
4003
4004// created for Or [TextDocumentContentChangePartial TextDocumentContentChangeWholeDocument]
4005type Or_TextDocumentContentChangeEvent struct {
4006	Value interface{} `json:"value"`
4007}
4008
4009// created for Or [AnnotatedTextEdit SnippetTextEdit TextEdit]
4010type Or_TextDocumentEdit_edits_Elem struct {
4011	Value interface{} `json:"value"`
4012}
4013
4014// created for Or [TextDocumentFilterLanguage TextDocumentFilterPattern TextDocumentFilterScheme]
4015type Or_TextDocumentFilter struct {
4016	Value interface{} `json:"value"`
4017}
4018
4019// created for Or [SaveOptions bool]
4020type Or_TextDocumentSyncOptions_save struct {
4021	Value interface{} `json:"value"`
4022}
4023
4024// created for Or [WorkspaceFullDocumentDiagnosticReport WorkspaceUnchangedDocumentDiagnosticReport]
4025type Or_WorkspaceDocumentDiagnosticReport struct {
4026	Value interface{} `json:"value"`
4027}
4028
4029// created for Or [CreateFile DeleteFile RenameFile TextDocumentEdit]
4030type Or_WorkspaceEdit_documentChanges_Elem struct {
4031	Value interface{} `json:"value"`
4032}
4033
4034// created for Or [bool string]
4035type Or_WorkspaceFoldersServerCapabilities_changeNotifications struct {
4036	Value interface{} `json:"value"`
4037}
4038
4039// created for Or [TextDocumentContentOptions TextDocumentContentRegistrationOptions]
4040type Or_WorkspaceOptions_textDocumentContent struct {
4041	Value interface{} `json:"value"`
4042}
4043
4044// created for Or [Location LocationUriOnly]
4045type Or_WorkspaceSymbol_location struct {
4046	Value interface{} `json:"value"`
4047}
4048
4049// The parameters of a configuration request.
4050//
4051// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#configurationParams
4052type ParamConfiguration struct {
4053	Items []ConfigurationItem `json:"items"`
4054}
4055
4056// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#initializeParams
4057type ParamInitialize struct {
4058	XInitializeParams
4059	WorkspaceFoldersInitializeParams
4060}
4061
4062// Represents a parameter of a callable-signature. A parameter can
4063// have a label and a doc-comment.
4064//
4065// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#parameterInformation
4066type ParameterInformation struct {
4067	// The label of this parameter information.
4068	//
4069	// Either a string or an inclusive start and exclusive end offsets within its containing
4070	// signature label. (see SignatureInformation.label). The offsets are based on a UTF-16
4071	// string representation as `Position` and `Range` does.
4072	//
4073	// To avoid ambiguities a server should use the [start, end] offset value instead of using
4074	// a substring. Whether a client support this is controlled via `labelOffsetSupport` client
4075	// capability.
4076	//
4077	// *Note*: a label of type string should be a substring of its containing signature label.
4078	// Its intended use case is to highlight the parameter label part in the `SignatureInformation.label`.
4079	Label Or_ParameterInformation_label `json:"label"`
4080	// The human-readable doc-comment of this parameter. Will be shown
4081	// in the UI but can be omitted.
4082	Documentation *Or_ParameterInformation_documentation `json:"documentation,omitempty"`
4083}
4084
4085// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#partialResultParams
4086type PartialResultParams struct {
4087	// An optional token that a server can use to report partial results (e.g. streaming) to
4088	// the client.
4089	PartialResultToken *ProgressToken `json:"partialResultToken,omitempty"`
4090}
4091
4092// The glob pattern to watch relative to the base path. Glob patterns can have the following syntax:
4093//
4094//   - `*` to match one or more characters in a path segment
4095//   - `?` to match on one character in a path segment
4096//   - `**` to match any number of path segments, including none
4097//   - `{}` to group conditions (e.g. `**​/*.{ts,js}` matches all TypeScript and JavaScript files)
4098//   - `[]` to declare a range of characters to match in a path segment (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …)
4099//   - `[!...]` to negate a range of characters to match in a path segment (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but not `example.0`)
4100//
4101// @since 3.17.0
4102//
4103// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#pattern
4104type Pattern = string // (alias)
4105// Position in a text document expressed as zero-based line and character
4106// offset. Prior to 3.17 the offsets were always based on a UTF-16 string
4107// representation. So a string of the form `a𐐀b` the character offset of the
4108// character `a` is 0, the character offset of `𐐀` is 1 and the character
4109// offset of b is 3 since `𐐀` is represented using two code units in UTF-16.
4110// Since 3.17 clients and servers can agree on a different string encoding
4111// representation (e.g. UTF-8). The client announces it's supported encoding
4112// via the client capability [`general.positionEncodings`](https://microsoft.github.io/language-server-protocol/specifications/specification-current/#clientCapabilities).
4113// The value is an array of position encodings the client supports, with
4114// decreasing preference (e.g. the encoding at index `0` is the most preferred
4115// one). To stay backwards compatible the only mandatory encoding is UTF-16
4116// represented via the string `utf-16`. The server can pick one of the
4117// encodings offered by the client and signals that encoding back to the
4118// client via the initialize result's property
4119// [`capabilities.positionEncoding`](https://microsoft.github.io/language-server-protocol/specifications/specification-current/#serverCapabilities). If the string value
4120// `utf-16` is missing from the client's capability `general.positionEncodings`
4121// servers can safely assume that the client supports UTF-16. If the server
4122// omits the position encoding in its initialize result the encoding defaults
4123// to the string value `utf-16`. Implementation considerations: since the
4124// conversion from one encoding into another requires the content of the
4125// file / line the conversion is best done where the file is read which is
4126// usually on the server side.
4127//
4128// Positions are line end character agnostic. So you can not specify a position
4129// that denotes `\r|\n` or `\n|` where `|` represents the character offset.
4130//
4131// @since 3.17.0 - support for negotiated position encoding.
4132//
4133// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#position
4134type Position struct {
4135	// Line position in a document (zero-based).
4136	//
4137	// If a line number is greater than the number of lines in a document, it defaults back to the number of lines in the document.
4138	// If a line number is negative, it defaults to 0.
4139	Line uint32 `json:"line"`
4140	// Character offset on a line in a document (zero-based).
4141	//
4142	// The meaning of this offset is determined by the negotiated
4143	// `PositionEncodingKind`.
4144	//
4145	// If the character value is greater than the line length it defaults back to the
4146	// line length.
4147	Character uint32 `json:"character"`
4148}
4149
4150// A set of predefined position encoding kinds.
4151//
4152// @since 3.17.0
4153type PositionEncodingKind string
4154
4155// @since 3.18.0
4156//
4157// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#prepareRenameDefaultBehavior
4158type PrepareRenameDefaultBehavior struct {
4159	DefaultBehavior bool `json:"defaultBehavior"`
4160}
4161
4162// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#prepareRenameParams
4163type PrepareRenameParams struct {
4164	TextDocumentPositionParams
4165	WorkDoneProgressParams
4166}
4167
4168// @since 3.18.0
4169//
4170// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#prepareRenamePlaceholder
4171type PrepareRenamePlaceholder struct {
4172	Range       Range  `json:"range"`
4173	Placeholder string `json:"placeholder"`
4174}
4175
4176// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#prepareRenameResult
4177type PrepareRenameResult = Or_PrepareRenameResult // (alias)
4178type PrepareSupportDefaultBehavior uint32
4179
4180// A previous result id in a workspace pull request.
4181//
4182// @since 3.17.0
4183//
4184// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#previousResultId
4185type PreviousResultID struct {
4186	// The URI for which the client knowns a
4187	// result id.
4188	URI DocumentUri `json:"uri"`
4189	// The value of the previous result id.
4190	Value string `json:"value"`
4191}
4192
4193// A previous result id in a workspace pull request.
4194//
4195// @since 3.17.0
4196//
4197// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#previousResultId
4198type PreviousResultId struct {
4199	// The URI for which the client knowns a
4200	// result id.
4201	URI DocumentUri `json:"uri"`
4202	// The value of the previous result id.
4203	Value string `json:"value"`
4204}
4205
4206// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#progressParams
4207type ProgressParams struct {
4208	// The progress token provided by the client or server.
4209	Token ProgressToken `json:"token"`
4210	// The progress data.
4211	Value interface{} `json:"value"`
4212}
4213
4214// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#progressToken
4215type ProgressToken = Or_ProgressToken // (alias)
4216// The publish diagnostic client capabilities.
4217//
4218// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#publishDiagnosticsClientCapabilities
4219type PublishDiagnosticsClientCapabilities struct {
4220	// Whether the client interprets the version property of the
4221	// `textDocument/publishDiagnostics` notification's parameter.
4222	//
4223	// @since 3.15.0
4224	VersionSupport bool `json:"versionSupport,omitempty"`
4225	DiagnosticsCapabilities
4226}
4227
4228// The publish diagnostic notification's parameters.
4229//
4230// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#publishDiagnosticsParams
4231type PublishDiagnosticsParams struct {
4232	// The URI for which diagnostic information is reported.
4233	URI DocumentUri `json:"uri"`
4234	// Optional the version number of the document the diagnostics are published for.
4235	//
4236	// @since 3.15.0
4237	Version int32 `json:"version,omitempty"`
4238	// An array of diagnostic information items.
4239	Diagnostics []Diagnostic `json:"diagnostics"`
4240}
4241
4242// A range in a text document expressed as (zero-based) start and end positions.
4243//
4244// If you want to specify a range that contains a line including the line ending
4245// character(s) then use an end position denoting the start of the next line.
4246// For example:
4247// ```ts
4248//
4249//	{
4250//	    start: { line: 5, character: 23 }
4251//	    end : { line 6, character : 0 }
4252//	}
4253//
4254// ```
4255//
4256// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#range
4257type Range struct {
4258	// The range's start position.
4259	Start Position `json:"start"`
4260	// The range's end position.
4261	End Position `json:"end"`
4262}
4263
4264// Client Capabilities for a {@link ReferencesRequest}.
4265//
4266// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#referenceClientCapabilities
4267type ReferenceClientCapabilities struct {
4268	// Whether references supports dynamic registration.
4269	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
4270}
4271
4272// Value-object that contains additional information when
4273// requesting references.
4274//
4275// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#referenceContext
4276type ReferenceContext struct {
4277	// Include the declaration of the current symbol.
4278	IncludeDeclaration bool `json:"includeDeclaration"`
4279}
4280
4281// Reference options.
4282//
4283// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#referenceOptions
4284type ReferenceOptions struct {
4285	WorkDoneProgressOptions
4286}
4287
4288// Parameters for a {@link ReferencesRequest}.
4289//
4290// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#referenceParams
4291type ReferenceParams struct {
4292	Context ReferenceContext `json:"context"`
4293	TextDocumentPositionParams
4294	WorkDoneProgressParams
4295	PartialResultParams
4296}
4297
4298// Registration options for a {@link ReferencesRequest}.
4299//
4300// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#referenceRegistrationOptions
4301type ReferenceRegistrationOptions struct {
4302	TextDocumentRegistrationOptions
4303	ReferenceOptions
4304}
4305
4306// General parameters to register for a notification or to register a provider.
4307//
4308// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#registration
4309type Registration struct {
4310	// The id used to register the request. The id can be used to deregister
4311	// the request again.
4312	ID string `json:"id"`
4313	// The method / capability to register for.
4314	Method string `json:"method"`
4315	// Options necessary for the registration.
4316	RegisterOptions interface{} `json:"registerOptions,omitempty"`
4317}
4318
4319// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#registrationParams
4320type RegistrationParams struct {
4321	Registrations []Registration `json:"registrations"`
4322}
4323
4324// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#regularExpressionEngineKind
4325type RegularExpressionEngineKind = string // (alias)
4326// Client capabilities specific to regular expressions.
4327//
4328// @since 3.16.0
4329//
4330// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#regularExpressionsClientCapabilities
4331type RegularExpressionsClientCapabilities struct {
4332	// The engine's name.
4333	Engine RegularExpressionEngineKind `json:"engine"`
4334	// The engine's version.
4335	Version string `json:"version,omitempty"`
4336}
4337
4338// A full diagnostic report with a set of related documents.
4339//
4340// @since 3.17.0
4341//
4342// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#relatedFullDocumentDiagnosticReport
4343type RelatedFullDocumentDiagnosticReport struct {
4344	// Diagnostics of related documents. This information is useful
4345	// in programming languages where code in a file A can generate
4346	// diagnostics in a file B which A depends on. An example of
4347	// such a language is C/C++ where marco definitions in a file
4348	// a.cpp and result in errors in a header file b.hpp.
4349	//
4350	// @since 3.17.0
4351	RelatedDocuments map[DocumentUri]interface{} `json:"relatedDocuments,omitempty"`
4352	FullDocumentDiagnosticReport
4353}
4354
4355// An unchanged diagnostic report with a set of related documents.
4356//
4357// @since 3.17.0
4358//
4359// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#relatedUnchangedDocumentDiagnosticReport
4360type RelatedUnchangedDocumentDiagnosticReport struct {
4361	// Diagnostics of related documents. This information is useful
4362	// in programming languages where code in a file A can generate
4363	// diagnostics in a file B which A depends on. An example of
4364	// such a language is C/C++ where marco definitions in a file
4365	// a.cpp and result in errors in a header file b.hpp.
4366	//
4367	// @since 3.17.0
4368	RelatedDocuments map[DocumentUri]interface{} `json:"relatedDocuments,omitempty"`
4369	UnchangedDocumentDiagnosticReport
4370}
4371
4372// A relative pattern is a helper to construct glob patterns that are matched
4373// relatively to a base URI. The common value for a `baseUri` is a workspace
4374// folder root, but it can be another absolute URI as well.
4375//
4376// @since 3.17.0
4377//
4378// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#relativePattern
4379type RelativePattern struct {
4380	// A workspace folder or a base URI to which this pattern will be matched
4381	// against relatively.
4382	BaseURI Or_RelativePattern_baseUri `json:"baseUri"`
4383	// The actual glob pattern;
4384	Pattern Pattern `json:"pattern"`
4385}
4386
4387// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#renameClientCapabilities
4388type RenameClientCapabilities struct {
4389	// Whether rename supports dynamic registration.
4390	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
4391	// Client supports testing for validity of rename operations
4392	// before execution.
4393	//
4394	// @since 3.12.0
4395	PrepareSupport bool `json:"prepareSupport,omitempty"`
4396	// Client supports the default behavior result.
4397	//
4398	// The value indicates the default behavior used by the
4399	// client.
4400	//
4401	// @since 3.16.0
4402	PrepareSupportDefaultBehavior *PrepareSupportDefaultBehavior `json:"prepareSupportDefaultBehavior,omitempty"`
4403	// Whether the client honors the change annotations in
4404	// text edits and resource operations returned via the
4405	// rename request's workspace edit by for example presenting
4406	// the workspace edit in the user interface and asking
4407	// for confirmation.
4408	//
4409	// @since 3.16.0
4410	HonorsChangeAnnotations bool `json:"honorsChangeAnnotations,omitempty"`
4411}
4412
4413// Rename file operation
4414//
4415// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#renameFile
4416type RenameFile struct {
4417	// A rename
4418	Kind string `json:"kind"`
4419	// The old (existing) location.
4420	OldURI DocumentUri `json:"oldUri"`
4421	// The new location.
4422	NewURI DocumentUri `json:"newUri"`
4423	// Rename options.
4424	Options *RenameFileOptions `json:"options,omitempty"`
4425	ResourceOperation
4426}
4427
4428// Rename file options
4429//
4430// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#renameFileOptions
4431type RenameFileOptions struct {
4432	// Overwrite target if existing. Overwrite wins over `ignoreIfExists`
4433	Overwrite bool `json:"overwrite,omitempty"`
4434	// Ignores if target exists.
4435	IgnoreIfExists bool `json:"ignoreIfExists,omitempty"`
4436}
4437
4438// The parameters sent in notifications/requests for user-initiated renames of
4439// files.
4440//
4441// @since 3.16.0
4442//
4443// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#renameFilesParams
4444type RenameFilesParams struct {
4445	// An array of all files/folders renamed in this operation. When a folder is renamed, only
4446	// the folder will be included, and not its children.
4447	Files []FileRename `json:"files"`
4448}
4449
4450// Provider options for a {@link RenameRequest}.
4451//
4452// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#renameOptions
4453type RenameOptions struct {
4454	// Renames should be checked and tested before being executed.
4455	//
4456	// @since version 3.12.0
4457	PrepareProvider bool `json:"prepareProvider,omitempty"`
4458	WorkDoneProgressOptions
4459}
4460
4461// The parameters of a {@link RenameRequest}.
4462//
4463// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#renameParams
4464type RenameParams struct {
4465	// The document to rename.
4466	TextDocument TextDocumentIdentifier `json:"textDocument"`
4467	// The position at which this request was sent.
4468	Position Position `json:"position"`
4469	// The new name of the symbol. If the given name is not valid the
4470	// request must return a {@link ResponseError} with an
4471	// appropriate message set.
4472	NewName string `json:"newName"`
4473	WorkDoneProgressParams
4474}
4475
4476// Registration options for a {@link RenameRequest}.
4477//
4478// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#renameRegistrationOptions
4479type RenameRegistrationOptions struct {
4480	TextDocumentRegistrationOptions
4481	RenameOptions
4482}
4483
4484// A generic resource operation.
4485//
4486// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#resourceOperation
4487type ResourceOperation struct {
4488	// The resource operation kind.
4489	Kind string `json:"kind"`
4490	// An optional annotation identifier describing the operation.
4491	//
4492	// @since 3.16.0
4493	AnnotationID *ChangeAnnotationIdentifier `json:"annotationId,omitempty"`
4494}
4495type ResourceOperationKind string
4496
4497// Save options.
4498//
4499// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#saveOptions
4500type SaveOptions struct {
4501	// The client is supposed to include the content on save.
4502	IncludeText bool `json:"includeText,omitempty"`
4503}
4504
4505// Describes the currently selected completion item.
4506//
4507// @since 3.18.0
4508// @proposed
4509//
4510// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#selectedCompletionInfo
4511type SelectedCompletionInfo struct {
4512	// The range that will be replaced if this completion item is accepted.
4513	Range Range `json:"range"`
4514	// The text the range will be replaced with if this completion is accepted.
4515	Text string `json:"text"`
4516}
4517
4518// A selection range represents a part of a selection hierarchy. A selection range
4519// may have a parent selection range that contains it.
4520//
4521// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#selectionRange
4522type SelectionRange struct {
4523	// The {@link Range range} of this selection range.
4524	Range Range `json:"range"`
4525	// The parent selection range containing this range. Therefore `parent.range` must contain `this.range`.
4526	Parent *SelectionRange `json:"parent,omitempty"`
4527}
4528
4529// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#selectionRangeClientCapabilities
4530type SelectionRangeClientCapabilities struct {
4531	// Whether implementation supports dynamic registration for selection range providers. If this is set to `true`
4532	// the client supports the new `SelectionRangeRegistrationOptions` return value for the corresponding server
4533	// capability as well.
4534	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
4535}
4536
4537// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#selectionRangeOptions
4538type SelectionRangeOptions struct {
4539	WorkDoneProgressOptions
4540}
4541
4542// A parameter literal used in selection range requests.
4543//
4544// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#selectionRangeParams
4545type SelectionRangeParams struct {
4546	// The text document.
4547	TextDocument TextDocumentIdentifier `json:"textDocument"`
4548	// The positions inside the text document.
4549	Positions []Position `json:"positions"`
4550	WorkDoneProgressParams
4551	PartialResultParams
4552}
4553
4554// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#selectionRangeRegistrationOptions
4555type SelectionRangeRegistrationOptions struct {
4556	SelectionRangeOptions
4557	TextDocumentRegistrationOptions
4558	StaticRegistrationOptions
4559}
4560
4561// A set of predefined token modifiers. This set is not fixed
4562// an clients can specify additional token types via the
4563// corresponding client capabilities.
4564//
4565// @since 3.16.0
4566type SemanticTokenModifiers string
4567
4568// A set of predefined token types. This set is not fixed
4569// an clients can specify additional token types via the
4570// corresponding client capabilities.
4571//
4572// @since 3.16.0
4573type SemanticTokenTypes string
4574
4575// @since 3.16.0
4576//
4577// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokens
4578type SemanticTokens struct {
4579	// An optional result id. If provided and clients support delta updating
4580	// the client will include the result id in the next semantic token request.
4581	// A server can then instead of computing all semantic tokens again simply
4582	// send a delta.
4583	ResultID string `json:"resultId,omitempty"`
4584	// The actual tokens.
4585	Data []uint32 `json:"data"`
4586}
4587
4588// @since 3.16.0
4589//
4590// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensClientCapabilities
4591type SemanticTokensClientCapabilities struct {
4592	// Whether implementation supports dynamic registration. If this is set to `true`
4593	// the client supports the new `(TextDocumentRegistrationOptions & StaticRegistrationOptions)`
4594	// return value for the corresponding server capability as well.
4595	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
4596	// Which requests the client supports and might send to the server
4597	// depending on the server's capability. Please note that clients might not
4598	// show semantic tokens or degrade some of the user experience if a range
4599	// or full request is advertised by the client but not provided by the
4600	// server. If for example the client capability `requests.full` and
4601	// `request.range` are both set to true but the server only provides a
4602	// range provider the client might not render a minimap correctly or might
4603	// even decide to not show any semantic tokens at all.
4604	Requests ClientSemanticTokensRequestOptions `json:"requests"`
4605	// The token types that the client supports.
4606	TokenTypes []string `json:"tokenTypes"`
4607	// The token modifiers that the client supports.
4608	TokenModifiers []string `json:"tokenModifiers"`
4609	// The token formats the clients supports.
4610	Formats []TokenFormat `json:"formats"`
4611	// Whether the client supports tokens that can overlap each other.
4612	OverlappingTokenSupport bool `json:"overlappingTokenSupport,omitempty"`
4613	// Whether the client supports tokens that can span multiple lines.
4614	MultilineTokenSupport bool `json:"multilineTokenSupport,omitempty"`
4615	// Whether the client allows the server to actively cancel a
4616	// semantic token request, e.g. supports returning
4617	// LSPErrorCodes.ServerCancelled. If a server does the client
4618	// needs to retrigger the request.
4619	//
4620	// @since 3.17.0
4621	ServerCancelSupport bool `json:"serverCancelSupport,omitempty"`
4622	// Whether the client uses semantic tokens to augment existing
4623	// syntax tokens. If set to `true` client side created syntax
4624	// tokens and semantic tokens are both used for colorization. If
4625	// set to `false` the client only uses the returned semantic tokens
4626	// for colorization.
4627	//
4628	// If the value is `undefined` then the client behavior is not
4629	// specified.
4630	//
4631	// @since 3.17.0
4632	AugmentsSyntaxTokens bool `json:"augmentsSyntaxTokens,omitempty"`
4633}
4634
4635// @since 3.16.0
4636//
4637// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensDelta
4638type SemanticTokensDelta struct {
4639	ResultID string `json:"resultId,omitempty"`
4640	// The semantic token edits to transform a previous result into a new result.
4641	Edits []SemanticTokensEdit `json:"edits"`
4642}
4643
4644// @since 3.16.0
4645//
4646// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensDeltaParams
4647type SemanticTokensDeltaParams struct {
4648	// The text document.
4649	TextDocument TextDocumentIdentifier `json:"textDocument"`
4650	// The result id of a previous response. The result Id can either point to a full response
4651	// or a delta response depending on what was received last.
4652	PreviousResultID string `json:"previousResultId"`
4653	WorkDoneProgressParams
4654	PartialResultParams
4655}
4656
4657// @since 3.16.0
4658//
4659// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensDeltaPartialResult
4660type SemanticTokensDeltaPartialResult struct {
4661	Edits []SemanticTokensEdit `json:"edits"`
4662}
4663
4664// @since 3.16.0
4665//
4666// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensEdit
4667type SemanticTokensEdit struct {
4668	// The start offset of the edit.
4669	Start uint32 `json:"start"`
4670	// The count of elements to remove.
4671	DeleteCount uint32 `json:"deleteCount"`
4672	// The elements to insert.
4673	Data []uint32 `json:"data,omitempty"`
4674}
4675
4676// Semantic tokens options to support deltas for full documents
4677//
4678// @since 3.18.0
4679//
4680// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensFullDelta
4681type SemanticTokensFullDelta struct {
4682	// The server supports deltas for full documents.
4683	Delta bool `json:"delta,omitempty"`
4684}
4685
4686// @since 3.16.0
4687//
4688// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensLegend
4689type SemanticTokensLegend struct {
4690	// The token types a server uses.
4691	TokenTypes []string `json:"tokenTypes"`
4692	// The token modifiers a server uses.
4693	TokenModifiers []string `json:"tokenModifiers"`
4694}
4695
4696// @since 3.16.0
4697//
4698// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensOptions
4699type SemanticTokensOptions struct {
4700	// The legend used by the server
4701	Legend SemanticTokensLegend `json:"legend"`
4702	// Server supports providing semantic tokens for a specific range
4703	// of a document.
4704	Range *Or_SemanticTokensOptions_range `json:"range,omitempty"`
4705	// Server supports providing semantic tokens for a full document.
4706	Full *Or_SemanticTokensOptions_full `json:"full,omitempty"`
4707	WorkDoneProgressOptions
4708}
4709
4710// @since 3.16.0
4711//
4712// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensParams
4713type SemanticTokensParams struct {
4714	// The text document.
4715	TextDocument TextDocumentIdentifier `json:"textDocument"`
4716	WorkDoneProgressParams
4717	PartialResultParams
4718}
4719
4720// @since 3.16.0
4721//
4722// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensPartialResult
4723type SemanticTokensPartialResult struct {
4724	Data []uint32 `json:"data"`
4725}
4726
4727// @since 3.16.0
4728//
4729// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensRangeParams
4730type SemanticTokensRangeParams struct {
4731	// The text document.
4732	TextDocument TextDocumentIdentifier `json:"textDocument"`
4733	// The range the semantic tokens are requested for.
4734	Range Range `json:"range"`
4735	WorkDoneProgressParams
4736	PartialResultParams
4737}
4738
4739// @since 3.16.0
4740//
4741// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensRegistrationOptions
4742type SemanticTokensRegistrationOptions struct {
4743	TextDocumentRegistrationOptions
4744	SemanticTokensOptions
4745	StaticRegistrationOptions
4746}
4747
4748// @since 3.16.0
4749//
4750// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensWorkspaceClientCapabilities
4751type SemanticTokensWorkspaceClientCapabilities struct {
4752	// Whether the client implementation supports a refresh request sent from
4753	// the server to the client.
4754	//
4755	// Note that this event is global and will force the client to refresh all
4756	// semantic tokens currently shown. It should be used with absolute care
4757	// and is useful for situation where a server for example detects a project
4758	// wide change that requires such a calculation.
4759	RefreshSupport bool `json:"refreshSupport,omitempty"`
4760}
4761
4762// Defines the capabilities provided by a language
4763// server.
4764//
4765// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#serverCapabilities
4766type ServerCapabilities struct {
4767	// The position encoding the server picked from the encodings offered
4768	// by the client via the client capability `general.positionEncodings`.
4769	//
4770	// If the client didn't provide any position encodings the only valid
4771	// value that a server can return is 'utf-16'.
4772	//
4773	// If omitted it defaults to 'utf-16'.
4774	//
4775	// @since 3.17.0
4776	PositionEncoding *PositionEncodingKind `json:"positionEncoding,omitempty"`
4777	// Defines how text documents are synced. Is either a detailed structure
4778	// defining each notification or for backwards compatibility the
4779	// TextDocumentSyncKind number.
4780	TextDocumentSync interface{} `json:"textDocumentSync,omitempty"`
4781	// Defines how notebook documents are synced.
4782	//
4783	// @since 3.17.0
4784	NotebookDocumentSync *Or_ServerCapabilities_notebookDocumentSync `json:"notebookDocumentSync,omitempty"`
4785	// The server provides completion support.
4786	CompletionProvider *CompletionOptions `json:"completionProvider,omitempty"`
4787	// The server provides hover support.
4788	HoverProvider *Or_ServerCapabilities_hoverProvider `json:"hoverProvider,omitempty"`
4789	// The server provides signature help support.
4790	SignatureHelpProvider *SignatureHelpOptions `json:"signatureHelpProvider,omitempty"`
4791	// The server provides Goto Declaration support.
4792	DeclarationProvider *Or_ServerCapabilities_declarationProvider `json:"declarationProvider,omitempty"`
4793	// The server provides goto definition support.
4794	DefinitionProvider *Or_ServerCapabilities_definitionProvider `json:"definitionProvider,omitempty"`
4795	// The server provides Goto Type Definition support.
4796	TypeDefinitionProvider *Or_ServerCapabilities_typeDefinitionProvider `json:"typeDefinitionProvider,omitempty"`
4797	// The server provides Goto Implementation support.
4798	ImplementationProvider *Or_ServerCapabilities_implementationProvider `json:"implementationProvider,omitempty"`
4799	// The server provides find references support.
4800	ReferencesProvider *Or_ServerCapabilities_referencesProvider `json:"referencesProvider,omitempty"`
4801	// The server provides document highlight support.
4802	DocumentHighlightProvider *Or_ServerCapabilities_documentHighlightProvider `json:"documentHighlightProvider,omitempty"`
4803	// The server provides document symbol support.
4804	DocumentSymbolProvider *Or_ServerCapabilities_documentSymbolProvider `json:"documentSymbolProvider,omitempty"`
4805	// The server provides code actions. CodeActionOptions may only be
4806	// specified if the client states that it supports
4807	// `codeActionLiteralSupport` in its initial `initialize` request.
4808	CodeActionProvider interface{} `json:"codeActionProvider,omitempty"`
4809	// The server provides code lens.
4810	CodeLensProvider *CodeLensOptions `json:"codeLensProvider,omitempty"`
4811	// The server provides document link support.
4812	DocumentLinkProvider *DocumentLinkOptions `json:"documentLinkProvider,omitempty"`
4813	// The server provides color provider support.
4814	ColorProvider *Or_ServerCapabilities_colorProvider `json:"colorProvider,omitempty"`
4815	// The server provides workspace symbol support.
4816	WorkspaceSymbolProvider *Or_ServerCapabilities_workspaceSymbolProvider `json:"workspaceSymbolProvider,omitempty"`
4817	// The server provides document formatting.
4818	DocumentFormattingProvider *Or_ServerCapabilities_documentFormattingProvider `json:"documentFormattingProvider,omitempty"`
4819	// The server provides document range formatting.
4820	DocumentRangeFormattingProvider *Or_ServerCapabilities_documentRangeFormattingProvider `json:"documentRangeFormattingProvider,omitempty"`
4821	// The server provides document formatting on typing.
4822	DocumentOnTypeFormattingProvider *DocumentOnTypeFormattingOptions `json:"documentOnTypeFormattingProvider,omitempty"`
4823	// The server provides rename support. RenameOptions may only be
4824	// specified if the client states that it supports
4825	// `prepareSupport` in its initial `initialize` request.
4826	RenameProvider interface{} `json:"renameProvider,omitempty"`
4827	// The server provides folding provider support.
4828	FoldingRangeProvider *Or_ServerCapabilities_foldingRangeProvider `json:"foldingRangeProvider,omitempty"`
4829	// The server provides selection range support.
4830	SelectionRangeProvider *Or_ServerCapabilities_selectionRangeProvider `json:"selectionRangeProvider,omitempty"`
4831	// The server provides execute command support.
4832	ExecuteCommandProvider *ExecuteCommandOptions `json:"executeCommandProvider,omitempty"`
4833	// The server provides call hierarchy support.
4834	//
4835	// @since 3.16.0
4836	CallHierarchyProvider *Or_ServerCapabilities_callHierarchyProvider `json:"callHierarchyProvider,omitempty"`
4837	// The server provides linked editing range support.
4838	//
4839	// @since 3.16.0
4840	LinkedEditingRangeProvider *Or_ServerCapabilities_linkedEditingRangeProvider `json:"linkedEditingRangeProvider,omitempty"`
4841	// The server provides semantic tokens support.
4842	//
4843	// @since 3.16.0
4844	SemanticTokensProvider interface{} `json:"semanticTokensProvider,omitempty"`
4845	// The server provides moniker support.
4846	//
4847	// @since 3.16.0
4848	MonikerProvider *Or_ServerCapabilities_monikerProvider `json:"monikerProvider,omitempty"`
4849	// The server provides type hierarchy support.
4850	//
4851	// @since 3.17.0
4852	TypeHierarchyProvider *Or_ServerCapabilities_typeHierarchyProvider `json:"typeHierarchyProvider,omitempty"`
4853	// The server provides inline values.
4854	//
4855	// @since 3.17.0
4856	InlineValueProvider *Or_ServerCapabilities_inlineValueProvider `json:"inlineValueProvider,omitempty"`
4857	// The server provides inlay hints.
4858	//
4859	// @since 3.17.0
4860	InlayHintProvider interface{} `json:"inlayHintProvider,omitempty"`
4861	// The server has support for pull model diagnostics.
4862	//
4863	// @since 3.17.0
4864	DiagnosticProvider *Or_ServerCapabilities_diagnosticProvider `json:"diagnosticProvider,omitempty"`
4865	// Inline completion options used during static registration.
4866	//
4867	// @since 3.18.0
4868	// @proposed
4869	InlineCompletionProvider *Or_ServerCapabilities_inlineCompletionProvider `json:"inlineCompletionProvider,omitempty"`
4870	// Workspace specific server capabilities.
4871	Workspace *WorkspaceOptions `json:"workspace,omitempty"`
4872	// Experimental server capabilities.
4873	Experimental interface{} `json:"experimental,omitempty"`
4874}
4875
4876// @since 3.18.0
4877//
4878// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#serverCompletionItemOptions
4879type ServerCompletionItemOptions struct {
4880	// The server has support for completion item label
4881	// details (see also `CompletionItemLabelDetails`) when
4882	// receiving a completion item in a resolve call.
4883	//
4884	// @since 3.17.0
4885	LabelDetailsSupport bool `json:"labelDetailsSupport,omitempty"`
4886}
4887
4888// Information about the server
4889//
4890// @since 3.15.0
4891// @since 3.18.0 ServerInfo type name added.
4892//
4893// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#serverInfo
4894type ServerInfo struct {
4895	// The name of the server as defined by the server.
4896	Name string `json:"name"`
4897	// The server's version as defined by the server.
4898	Version string `json:"version,omitempty"`
4899}
4900
4901// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#setTraceParams
4902type SetTraceParams struct {
4903	Value TraceValue `json:"value"`
4904}
4905
4906// Client capabilities for the showDocument request.
4907//
4908// @since 3.16.0
4909//
4910// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#showDocumentClientCapabilities
4911type ShowDocumentClientCapabilities struct {
4912	// The client has support for the showDocument
4913	// request.
4914	Support bool `json:"support"`
4915}
4916
4917// Params to show a resource in the UI.
4918//
4919// @since 3.16.0
4920//
4921// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#showDocumentParams
4922type ShowDocumentParams struct {
4923	// The uri to show.
4924	URI URI `json:"uri"`
4925	// Indicates to show the resource in an external program.
4926	// To show, for example, `https://code.visualstudio.com/`
4927	// in the default WEB browser set `external` to `true`.
4928	External bool `json:"external,omitempty"`
4929	// An optional property to indicate whether the editor
4930	// showing the document should take focus or not.
4931	// Clients might ignore this property if an external
4932	// program is started.
4933	TakeFocus bool `json:"takeFocus,omitempty"`
4934	// An optional selection range if the document is a text
4935	// document. Clients might ignore the property if an
4936	// external program is started or the file is not a text
4937	// file.
4938	Selection *Range `json:"selection,omitempty"`
4939}
4940
4941// The result of a showDocument request.
4942//
4943// @since 3.16.0
4944//
4945// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#showDocumentResult
4946type ShowDocumentResult struct {
4947	// A boolean indicating if the show was successful.
4948	Success bool `json:"success"`
4949}
4950
4951// The parameters of a notification message.
4952//
4953// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#showMessageParams
4954type ShowMessageParams struct {
4955	// The message type. See {@link MessageType}
4956	Type MessageType `json:"type"`
4957	// The actual message.
4958	Message string `json:"message"`
4959}
4960
4961// Show message request client capabilities
4962//
4963// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#showMessageRequestClientCapabilities
4964type ShowMessageRequestClientCapabilities struct {
4965	// Capabilities specific to the `MessageActionItem` type.
4966	MessageActionItem *ClientShowMessageActionItemOptions `json:"messageActionItem,omitempty"`
4967}
4968
4969// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#showMessageRequestParams
4970type ShowMessageRequestParams struct {
4971	// The message type. See {@link MessageType}
4972	Type MessageType `json:"type"`
4973	// The actual message.
4974	Message string `json:"message"`
4975	// The message action items to present.
4976	Actions []MessageActionItem `json:"actions,omitempty"`
4977}
4978
4979// Signature help represents the signature of something
4980// callable. There can be multiple signature but only one
4981// active and only one active parameter.
4982//
4983// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#signatureHelp
4984type SignatureHelp struct {
4985	// One or more signatures.
4986	Signatures []SignatureInformation `json:"signatures"`
4987	// The active signature. If omitted or the value lies outside the
4988	// range of `signatures` the value defaults to zero or is ignored if
4989	// the `SignatureHelp` has no signatures.
4990	//
4991	// Whenever possible implementors should make an active decision about
4992	// the active signature and shouldn't rely on a default value.
4993	//
4994	// In future version of the protocol this property might become
4995	// mandatory to better express this.
4996	ActiveSignature uint32 `json:"activeSignature,omitempty"`
4997	// The active parameter of the active signature.
4998	//
4999	// If `null`, no parameter of the signature is active (for example a named
5000	// argument that does not match any declared parameters). This is only valid
5001	// if the client specifies the client capability
5002	// `textDocument.signatureHelp.noActiveParameterSupport === true`
5003	//
5004	// If omitted or the value lies outside the range of
5005	// `signatures[activeSignature].parameters` defaults to 0 if the active
5006	// signature has parameters.
5007	//
5008	// If the active signature has no parameters it is ignored.
5009	//
5010	// In future version of the protocol this property might become
5011	// mandatory (but still nullable) to better express the active parameter if
5012	// the active signature does have any.
5013	ActiveParameter uint32 `json:"activeParameter,omitempty"`
5014}
5015
5016// Client Capabilities for a {@link SignatureHelpRequest}.
5017//
5018// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#signatureHelpClientCapabilities
5019type SignatureHelpClientCapabilities struct {
5020	// Whether signature help supports dynamic registration.
5021	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
5022	// The client supports the following `SignatureInformation`
5023	// specific properties.
5024	SignatureInformation *ClientSignatureInformationOptions `json:"signatureInformation,omitempty"`
5025	// The client supports to send additional context information for a
5026	// `textDocument/signatureHelp` request. A client that opts into
5027	// contextSupport will also support the `retriggerCharacters` on
5028	// `SignatureHelpOptions`.
5029	//
5030	// @since 3.15.0
5031	ContextSupport bool `json:"contextSupport,omitempty"`
5032}
5033
5034// Additional information about the context in which a signature help request was triggered.
5035//
5036// @since 3.15.0
5037//
5038// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#signatureHelpContext
5039type SignatureHelpContext struct {
5040	// Action that caused signature help to be triggered.
5041	TriggerKind SignatureHelpTriggerKind `json:"triggerKind"`
5042	// Character that caused signature help to be triggered.
5043	//
5044	// This is undefined when `triggerKind !== SignatureHelpTriggerKind.TriggerCharacter`
5045	TriggerCharacter string `json:"triggerCharacter,omitempty"`
5046	// `true` if signature help was already showing when it was triggered.
5047	//
5048	// Retriggers occurs when the signature help is already active and can be caused by actions such as
5049	// typing a trigger character, a cursor move, or document content changes.
5050	IsRetrigger bool `json:"isRetrigger"`
5051	// The currently active `SignatureHelp`.
5052	//
5053	// The `activeSignatureHelp` has its `SignatureHelp.activeSignature` field updated based on
5054	// the user navigating through available signatures.
5055	ActiveSignatureHelp *SignatureHelp `json:"activeSignatureHelp,omitempty"`
5056}
5057
5058// Server Capabilities for a {@link SignatureHelpRequest}.
5059//
5060// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#signatureHelpOptions
5061type SignatureHelpOptions struct {
5062	// List of characters that trigger signature help automatically.
5063	TriggerCharacters []string `json:"triggerCharacters,omitempty"`
5064	// List of characters that re-trigger signature help.
5065	//
5066	// These trigger characters are only active when signature help is already showing. All trigger characters
5067	// are also counted as re-trigger characters.
5068	//
5069	// @since 3.15.0
5070	RetriggerCharacters []string `json:"retriggerCharacters,omitempty"`
5071	WorkDoneProgressOptions
5072}
5073
5074// Parameters for a {@link SignatureHelpRequest}.
5075//
5076// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#signatureHelpParams
5077type SignatureHelpParams struct {
5078	// The signature help context. This is only available if the client specifies
5079	// to send this using the client capability `textDocument.signatureHelp.contextSupport === true`
5080	//
5081	// @since 3.15.0
5082	Context *SignatureHelpContext `json:"context,omitempty"`
5083	TextDocumentPositionParams
5084	WorkDoneProgressParams
5085}
5086
5087// Registration options for a {@link SignatureHelpRequest}.
5088//
5089// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#signatureHelpRegistrationOptions
5090type SignatureHelpRegistrationOptions struct {
5091	TextDocumentRegistrationOptions
5092	SignatureHelpOptions
5093}
5094
5095// How a signature help was triggered.
5096//
5097// @since 3.15.0
5098type SignatureHelpTriggerKind uint32
5099
5100// Represents the signature of something callable. A signature
5101// can have a label, like a function-name, a doc-comment, and
5102// a set of parameters.
5103//
5104// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#signatureInformation
5105type SignatureInformation struct {
5106	// The label of this signature. Will be shown in
5107	// the UI.
5108	Label string `json:"label"`
5109	// The human-readable doc-comment of this signature. Will be shown
5110	// in the UI but can be omitted.
5111	Documentation *Or_SignatureInformation_documentation `json:"documentation,omitempty"`
5112	// The parameters of this signature.
5113	Parameters []ParameterInformation `json:"parameters,omitempty"`
5114	// The index of the active parameter.
5115	//
5116	// If `null`, no parameter of the signature is active (for example a named
5117	// argument that does not match any declared parameters). This is only valid
5118	// if the client specifies the client capability
5119	// `textDocument.signatureHelp.noActiveParameterSupport === true`
5120	//
5121	// If provided (or `null`), this is used in place of
5122	// `SignatureHelp.activeParameter`.
5123	//
5124	// @since 3.16.0
5125	ActiveParameter uint32 `json:"activeParameter,omitempty"`
5126}
5127
5128// An interactive text edit.
5129//
5130// @since 3.18.0
5131// @proposed
5132//
5133// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#snippetTextEdit
5134type SnippetTextEdit struct {
5135	// The range of the text document to be manipulated.
5136	Range Range `json:"range"`
5137	// The snippet to be inserted.
5138	Snippet StringValue `json:"snippet"`
5139	// The actual identifier of the snippet edit.
5140	AnnotationID *ChangeAnnotationIdentifier `json:"annotationId,omitempty"`
5141}
5142
5143// @since 3.18.0
5144//
5145// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#staleRequestSupportOptions
5146type StaleRequestSupportOptions struct {
5147	// The client will actively cancel the request.
5148	Cancel bool `json:"cancel"`
5149	// The list of requests for which the client
5150	// will retry the request if it receives a
5151	// response with error code `ContentModified`
5152	RetryOnContentModified []string `json:"retryOnContentModified"`
5153}
5154
5155// Static registration options to be returned in the initialize
5156// request.
5157//
5158// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#staticRegistrationOptions
5159type StaticRegistrationOptions struct {
5160	// The id used to register the request. The id can be used to deregister
5161	// the request again. See also Registration#id.
5162	ID string `json:"id,omitempty"`
5163}
5164
5165// A string value used as a snippet is a template which allows to insert text
5166// and to control the editor cursor when insertion happens.
5167//
5168// A snippet can define tab stops and placeholders with `$1`, `$2`
5169// and `${3:foo}`. `$0` defines the final tab stop, it defaults to
5170// the end of the snippet. Variables are defined with `$name` and
5171// `${name:default value}`.
5172//
5173// @since 3.18.0
5174// @proposed
5175//
5176// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#stringValue
5177type StringValue struct {
5178	// The kind of string value.
5179	Kind string `json:"kind"`
5180	// The snippet string.
5181	Value string `json:"value"`
5182}
5183
5184// Represents information about programming constructs like variables, classes,
5185// interfaces etc.
5186//
5187// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#symbolInformation
5188type SymbolInformation struct {
5189	// extends BaseSymbolInformation
5190	// Indicates if this symbol is deprecated.
5191	//
5192	// @deprecated Use tags instead
5193	Deprecated bool `json:"deprecated,omitempty"`
5194	// The location of this symbol. The location's range is used by a tool
5195	// to reveal the location in the editor. If the symbol is selected in the
5196	// tool the range's start information is used to position the cursor. So
5197	// the range usually spans more than the actual symbol's name and does
5198	// normally include things like visibility modifiers.
5199	//
5200	// The range doesn't have to denote a node range in the sense of an abstract
5201	// syntax tree. It can therefore not be used to re-construct a hierarchy of
5202	// the symbols.
5203	Location Location `json:"location"`
5204	// The name of this symbol.
5205	Name string `json:"name"`
5206	// The kind of this symbol.
5207	Kind SymbolKind `json:"kind"`
5208	// Tags for this symbol.
5209	//
5210	// @since 3.16.0
5211	Tags []SymbolTag `json:"tags,omitempty"`
5212	// The name of the symbol containing this symbol. This information is for
5213	// user interface purposes (e.g. to render a qualifier in the user interface
5214	// if necessary). It can't be used to re-infer a hierarchy for the document
5215	// symbols.
5216	ContainerName string `json:"containerName,omitempty"`
5217}
5218
5219// A symbol kind.
5220type SymbolKind uint32
5221
5222// Symbol tags are extra annotations that tweak the rendering of a symbol.
5223//
5224// @since 3.16
5225type SymbolTag uint32
5226
5227// Describe options to be used when registered for text document change events.
5228//
5229// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentChangeRegistrationOptions
5230type TextDocumentChangeRegistrationOptions struct {
5231	// How documents are synced to the server.
5232	SyncKind TextDocumentSyncKind `json:"syncKind"`
5233	TextDocumentRegistrationOptions
5234}
5235
5236// Text document specific client capabilities.
5237//
5238// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentClientCapabilities
5239type TextDocumentClientCapabilities struct {
5240	// Defines which synchronization capabilities the client supports.
5241	Synchronization *TextDocumentSyncClientCapabilities `json:"synchronization,omitempty"`
5242	// Capabilities specific to the `textDocument/completion` request.
5243	Completion CompletionClientCapabilities `json:"completion,omitempty"`
5244	// Capabilities specific to the `textDocument/hover` request.
5245	Hover *HoverClientCapabilities `json:"hover,omitempty"`
5246	// Capabilities specific to the `textDocument/signatureHelp` request.
5247	SignatureHelp *SignatureHelpClientCapabilities `json:"signatureHelp,omitempty"`
5248	// Capabilities specific to the `textDocument/declaration` request.
5249	//
5250	// @since 3.14.0
5251	Declaration *DeclarationClientCapabilities `json:"declaration,omitempty"`
5252	// Capabilities specific to the `textDocument/definition` request.
5253	Definition *DefinitionClientCapabilities `json:"definition,omitempty"`
5254	// Capabilities specific to the `textDocument/typeDefinition` request.
5255	//
5256	// @since 3.6.0
5257	TypeDefinition *TypeDefinitionClientCapabilities `json:"typeDefinition,omitempty"`
5258	// Capabilities specific to the `textDocument/implementation` request.
5259	//
5260	// @since 3.6.0
5261	Implementation *ImplementationClientCapabilities `json:"implementation,omitempty"`
5262	// Capabilities specific to the `textDocument/references` request.
5263	References *ReferenceClientCapabilities `json:"references,omitempty"`
5264	// Capabilities specific to the `textDocument/documentHighlight` request.
5265	DocumentHighlight *DocumentHighlightClientCapabilities `json:"documentHighlight,omitempty"`
5266	// Capabilities specific to the `textDocument/documentSymbol` request.
5267	DocumentSymbol DocumentSymbolClientCapabilities `json:"documentSymbol,omitempty"`
5268	// Capabilities specific to the `textDocument/codeAction` request.
5269	CodeAction CodeActionClientCapabilities `json:"codeAction,omitempty"`
5270	// Capabilities specific to the `textDocument/codeLens` request.
5271	CodeLens *CodeLensClientCapabilities `json:"codeLens,omitempty"`
5272	// Capabilities specific to the `textDocument/documentLink` request.
5273	DocumentLink *DocumentLinkClientCapabilities `json:"documentLink,omitempty"`
5274	// Capabilities specific to the `textDocument/documentColor` and the
5275	// `textDocument/colorPresentation` request.
5276	//
5277	// @since 3.6.0
5278	ColorProvider *DocumentColorClientCapabilities `json:"colorProvider,omitempty"`
5279	// Capabilities specific to the `textDocument/formatting` request.
5280	Formatting *DocumentFormattingClientCapabilities `json:"formatting,omitempty"`
5281	// Capabilities specific to the `textDocument/rangeFormatting` request.
5282	RangeFormatting *DocumentRangeFormattingClientCapabilities `json:"rangeFormatting,omitempty"`
5283	// Capabilities specific to the `textDocument/onTypeFormatting` request.
5284	OnTypeFormatting *DocumentOnTypeFormattingClientCapabilities `json:"onTypeFormatting,omitempty"`
5285	// Capabilities specific to the `textDocument/rename` request.
5286	Rename *RenameClientCapabilities `json:"rename,omitempty"`
5287	// Capabilities specific to the `textDocument/foldingRange` request.
5288	//
5289	// @since 3.10.0
5290	FoldingRange *FoldingRangeClientCapabilities `json:"foldingRange,omitempty"`
5291	// Capabilities specific to the `textDocument/selectionRange` request.
5292	//
5293	// @since 3.15.0
5294	SelectionRange *SelectionRangeClientCapabilities `json:"selectionRange,omitempty"`
5295	// Capabilities specific to the `textDocument/publishDiagnostics` notification.
5296	PublishDiagnostics PublishDiagnosticsClientCapabilities `json:"publishDiagnostics,omitempty"`
5297	// Capabilities specific to the various call hierarchy requests.
5298	//
5299	// @since 3.16.0
5300	CallHierarchy *CallHierarchyClientCapabilities `json:"callHierarchy,omitempty"`
5301	// Capabilities specific to the various semantic token request.
5302	//
5303	// @since 3.16.0
5304	SemanticTokens SemanticTokensClientCapabilities `json:"semanticTokens,omitempty"`
5305	// Capabilities specific to the `textDocument/linkedEditingRange` request.
5306	//
5307	// @since 3.16.0
5308	LinkedEditingRange *LinkedEditingRangeClientCapabilities `json:"linkedEditingRange,omitempty"`
5309	// Client capabilities specific to the `textDocument/moniker` request.
5310	//
5311	// @since 3.16.0
5312	Moniker *MonikerClientCapabilities `json:"moniker,omitempty"`
5313	// Capabilities specific to the various type hierarchy requests.
5314	//
5315	// @since 3.17.0
5316	TypeHierarchy *TypeHierarchyClientCapabilities `json:"typeHierarchy,omitempty"`
5317	// Capabilities specific to the `textDocument/inlineValue` request.
5318	//
5319	// @since 3.17.0
5320	InlineValue *InlineValueClientCapabilities `json:"inlineValue,omitempty"`
5321	// Capabilities specific to the `textDocument/inlayHint` request.
5322	//
5323	// @since 3.17.0
5324	InlayHint *InlayHintClientCapabilities `json:"inlayHint,omitempty"`
5325	// Capabilities specific to the diagnostic pull model.
5326	//
5327	// @since 3.17.0
5328	Diagnostic *DiagnosticClientCapabilities `json:"diagnostic,omitempty"`
5329	// Client capabilities specific to inline completions.
5330	//
5331	// @since 3.18.0
5332	// @proposed
5333	InlineCompletion *InlineCompletionClientCapabilities `json:"inlineCompletion,omitempty"`
5334}
5335
5336// An event describing a change to a text document. If only a text is provided
5337// it is considered to be the full content of the document.
5338//
5339// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentContentChangeEvent
5340type TextDocumentContentChangeEvent = Or_TextDocumentContentChangeEvent // (alias)
5341// @since 3.18.0
5342//
5343// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentContentChangePartial
5344type TextDocumentContentChangePartial struct {
5345	// The range of the document that changed.
5346	Range *Range `json:"range,omitempty"`
5347	// The optional length of the range that got replaced.
5348	//
5349	// @deprecated use range instead.
5350	RangeLength uint32 `json:"rangeLength,omitempty"`
5351	// The new text for the provided range.
5352	Text string `json:"text"`
5353}
5354
5355// @since 3.18.0
5356//
5357// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentContentChangeWholeDocument
5358type TextDocumentContentChangeWholeDocument struct {
5359	// The new text of the whole document.
5360	Text string `json:"text"`
5361}
5362
5363// Client capabilities for a text document content provider.
5364//
5365// @since 3.18.0
5366// @proposed
5367//
5368// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentContentClientCapabilities
5369type TextDocumentContentClientCapabilities struct {
5370	// Text document content provider supports dynamic registration.
5371	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
5372}
5373
5374// Text document content provider options.
5375//
5376// @since 3.18.0
5377// @proposed
5378//
5379// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentContentOptions
5380type TextDocumentContentOptions struct {
5381	// The scheme for which the server provides content.
5382	Scheme string `json:"scheme"`
5383}
5384
5385// Parameters for the `workspace/textDocumentContent` request.
5386//
5387// @since 3.18.0
5388// @proposed
5389//
5390// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentContentParams
5391type TextDocumentContentParams struct {
5392	// The uri of the text document.
5393	URI DocumentUri `json:"uri"`
5394}
5395
5396// Parameters for the `workspace/textDocumentContent/refresh` request.
5397//
5398// @since 3.18.0
5399// @proposed
5400//
5401// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentContentRefreshParams
5402type TextDocumentContentRefreshParams struct {
5403	// The uri of the text document to refresh.
5404	URI DocumentUri `json:"uri"`
5405}
5406
5407// Text document content provider registration options.
5408//
5409// @since 3.18.0
5410// @proposed
5411//
5412// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentContentRegistrationOptions
5413type TextDocumentContentRegistrationOptions struct {
5414	TextDocumentContentOptions
5415	StaticRegistrationOptions
5416}
5417
5418// Describes textual changes on a text document. A TextDocumentEdit describes all changes
5419// on a document version Si and after they are applied move the document to version Si+1.
5420// So the creator of a TextDocumentEdit doesn't need to sort the array of edits or do any
5421// kind of ordering. However the edits must be non overlapping.
5422//
5423// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentEdit
5424type TextDocumentEdit struct {
5425	// The text document to change.
5426	TextDocument OptionalVersionedTextDocumentIdentifier `json:"textDocument"`
5427	// The edits to be applied.
5428	//
5429	// @since 3.16.0 - support for AnnotatedTextEdit. This is guarded using a
5430	// client capability.
5431	//
5432	// @since 3.18.0 - support for SnippetTextEdit. This is guarded using a
5433	// client capability.
5434	Edits []Or_TextDocumentEdit_edits_Elem `json:"edits"`
5435}
5436
5437// A document filter denotes a document by different properties like
5438// the {@link TextDocument.languageId language}, the {@link Uri.scheme scheme} of
5439// its resource, or a glob-pattern that is applied to the {@link TextDocument.fileName path}.
5440//
5441// Glob patterns can have the following syntax:
5442//
5443//   - `*` to match one or more characters in a path segment
5444//   - `?` to match on one character in a path segment
5445//   - `**` to match any number of path segments, including none
5446//   - `{}` to group sub patterns into an OR expression. (e.g. `**​/*.{ts,js}` matches all TypeScript and JavaScript files)
5447//   - `[]` to declare a range of characters to match in a path segment (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …)
5448//   - `[!...]` to negate a range of characters to match in a path segment (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but not `example.0`)
5449//
5450// @sample A language filter that applies to typescript files on disk: `{ language: 'typescript', scheme: 'file' }`
5451// @sample A language filter that applies to all package.json paths: `{ language: 'json', pattern: '**package.json' }`
5452//
5453// @since 3.17.0
5454//
5455// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentFilter
5456type TextDocumentFilter = Or_TextDocumentFilter // (alias)
5457// A document filter where `language` is required field.
5458//
5459// @since 3.18.0
5460//
5461// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentFilterLanguage
5462type TextDocumentFilterLanguage struct {
5463	// A language id, like `typescript`.
5464	Language string `json:"language"`
5465	// A Uri {@link Uri.scheme scheme}, like `file` or `untitled`.
5466	Scheme string `json:"scheme,omitempty"`
5467	// A glob pattern, like **​/*.{ts,js}. See TextDocumentFilter for examples.
5468	//
5469	// @since 3.18.0 - support for relative patterns.
5470	Pattern *GlobPattern `json:"pattern,omitempty"`
5471}
5472
5473// A document filter where `pattern` is required field.
5474//
5475// @since 3.18.0
5476//
5477// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentFilterPattern
5478type TextDocumentFilterPattern struct {
5479	// A language id, like `typescript`.
5480	Language string `json:"language,omitempty"`
5481	// A Uri {@link Uri.scheme scheme}, like `file` or `untitled`.
5482	Scheme string `json:"scheme,omitempty"`
5483	// A glob pattern, like **​/*.{ts,js}. See TextDocumentFilter for examples.
5484	//
5485	// @since 3.18.0 - support for relative patterns.
5486	Pattern GlobPattern `json:"pattern"`
5487}
5488
5489// A document filter where `scheme` is required field.
5490//
5491// @since 3.18.0
5492//
5493// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentFilterScheme
5494type TextDocumentFilterScheme struct {
5495	// A language id, like `typescript`.
5496	Language string `json:"language,omitempty"`
5497	// A Uri {@link Uri.scheme scheme}, like `file` or `untitled`.
5498	Scheme string `json:"scheme"`
5499	// A glob pattern, like **​/*.{ts,js}. See TextDocumentFilter for examples.
5500	//
5501	// @since 3.18.0 - support for relative patterns.
5502	Pattern *GlobPattern `json:"pattern,omitempty"`
5503}
5504
5505// A literal to identify a text document in the client.
5506//
5507// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentIdentifier
5508type TextDocumentIdentifier struct {
5509	// The text document's uri.
5510	URI DocumentUri `json:"uri"`
5511}
5512
5513// An item to transfer a text document from the client to the
5514// server.
5515//
5516// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentItem
5517type TextDocumentItem struct {
5518	// The text document's uri.
5519	URI DocumentUri `json:"uri"`
5520	// The text document's language identifier.
5521	LanguageID LanguageKind `json:"languageId"`
5522	// The version number of this document (it will increase after each
5523	// change, including undo/redo).
5524	Version int32 `json:"version"`
5525	// The content of the opened text document.
5526	Text string `json:"text"`
5527}
5528
5529// A parameter literal used in requests to pass a text document and a position inside that
5530// document.
5531//
5532// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentPositionParams
5533type TextDocumentPositionParams struct {
5534	// The text document.
5535	TextDocument TextDocumentIdentifier `json:"textDocument"`
5536	// The position inside the text document.
5537	Position Position `json:"position"`
5538}
5539
5540// General text document registration options.
5541//
5542// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentRegistrationOptions
5543type TextDocumentRegistrationOptions struct {
5544	// A document selector to identify the scope of the registration. If set to null
5545	// the document selector provided on the client side will be used.
5546	DocumentSelector DocumentSelector `json:"documentSelector"`
5547}
5548
5549// Represents reasons why a text document is saved.
5550type TextDocumentSaveReason uint32
5551
5552// Save registration options.
5553//
5554// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentSaveRegistrationOptions
5555type TextDocumentSaveRegistrationOptions struct {
5556	TextDocumentRegistrationOptions
5557	SaveOptions
5558}
5559
5560// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentSyncClientCapabilities
5561type TextDocumentSyncClientCapabilities struct {
5562	// Whether text document synchronization supports dynamic registration.
5563	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
5564	// The client supports sending will save notifications.
5565	WillSave bool `json:"willSave,omitempty"`
5566	// The client supports sending a will save request and
5567	// waits for a response providing text edits which will
5568	// be applied to the document before it is saved.
5569	WillSaveWaitUntil bool `json:"willSaveWaitUntil,omitempty"`
5570	// The client supports did save notifications.
5571	DidSave bool `json:"didSave,omitempty"`
5572}
5573
5574// Defines how the host (editor) should sync
5575// document changes to the language server.
5576type TextDocumentSyncKind uint32
5577
5578// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentSyncOptions
5579type TextDocumentSyncOptions struct {
5580	// Open and close notifications are sent to the server. If omitted open close notification should not
5581	// be sent.
5582	OpenClose bool `json:"openClose,omitempty"`
5583	// Change notifications are sent to the server. See TextDocumentSyncKind.None, TextDocumentSyncKind.Full
5584	// and TextDocumentSyncKind.Incremental. If omitted it defaults to TextDocumentSyncKind.None.
5585	Change TextDocumentSyncKind `json:"change,omitempty"`
5586	// If present will save notifications are sent to the server. If omitted the notification should not be
5587	// sent.
5588	WillSave bool `json:"willSave,omitempty"`
5589	// If present will save wait until requests are sent to the server. If omitted the request should not be
5590	// sent.
5591	WillSaveWaitUntil bool `json:"willSaveWaitUntil,omitempty"`
5592	// If present save notifications are sent to the server. If omitted the notification should not be
5593	// sent.
5594	Save *SaveOptions `json:"save,omitempty"`
5595}
5596
5597// A text edit applicable to a text document.
5598//
5599// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textEdit
5600type TextEdit struct {
5601	// The range of the text document to be manipulated. To insert
5602	// text into a document create a range where start === end.
5603	Range Range `json:"range"`
5604	// The string to be inserted. For delete operations use an
5605	// empty string.
5606	NewText string `json:"newText"`
5607}
5608type TokenFormat string
5609type TraceValue string
5610
5611// created for Tuple
5612type Tuple_ParameterInformation_label_Item1 struct {
5613	Fld0 uint32 `json:"fld0"`
5614	Fld1 uint32 `json:"fld1"`
5615}
5616
5617// Since 3.6.0
5618//
5619// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeDefinitionClientCapabilities
5620type TypeDefinitionClientCapabilities struct {
5621	// Whether implementation supports dynamic registration. If this is set to `true`
5622	// the client supports the new `TypeDefinitionRegistrationOptions` return value
5623	// for the corresponding server capability as well.
5624	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
5625	// The client supports additional metadata in the form of definition links.
5626	//
5627	// Since 3.14.0
5628	LinkSupport bool `json:"linkSupport,omitempty"`
5629}
5630
5631// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeDefinitionOptions
5632type TypeDefinitionOptions struct {
5633	WorkDoneProgressOptions
5634}
5635
5636// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeDefinitionParams
5637type TypeDefinitionParams struct {
5638	TextDocumentPositionParams
5639	WorkDoneProgressParams
5640	PartialResultParams
5641}
5642
5643// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeDefinitionRegistrationOptions
5644type TypeDefinitionRegistrationOptions struct {
5645	TextDocumentRegistrationOptions
5646	TypeDefinitionOptions
5647	StaticRegistrationOptions
5648}
5649
5650// @since 3.17.0
5651//
5652// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeHierarchyClientCapabilities
5653type TypeHierarchyClientCapabilities struct {
5654	// Whether implementation supports dynamic registration. If this is set to `true`
5655	// the client supports the new `(TextDocumentRegistrationOptions & StaticRegistrationOptions)`
5656	// return value for the corresponding server capability as well.
5657	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
5658}
5659
5660// @since 3.17.0
5661//
5662// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeHierarchyItem
5663type TypeHierarchyItem struct {
5664	// The name of this item.
5665	Name string `json:"name"`
5666	// The kind of this item.
5667	Kind SymbolKind `json:"kind"`
5668	// Tags for this item.
5669	Tags []SymbolTag `json:"tags,omitempty"`
5670	// More detail for this item, e.g. the signature of a function.
5671	Detail string `json:"detail,omitempty"`
5672	// The resource identifier of this item.
5673	URI DocumentUri `json:"uri"`
5674	// The range enclosing this symbol not including leading/trailing whitespace
5675	// but everything else, e.g. comments and code.
5676	Range Range `json:"range"`
5677	// The range that should be selected and revealed when this symbol is being
5678	// picked, e.g. the name of a function. Must be contained by the
5679	// {@link TypeHierarchyItem.range `range`}.
5680	SelectionRange Range `json:"selectionRange"`
5681	// A data entry field that is preserved between a type hierarchy prepare and
5682	// supertypes or subtypes requests. It could also be used to identify the
5683	// type hierarchy in the server, helping improve the performance on
5684	// resolving supertypes and subtypes.
5685	Data interface{} `json:"data,omitempty"`
5686}
5687
5688// Type hierarchy options used during static registration.
5689//
5690// @since 3.17.0
5691//
5692// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeHierarchyOptions
5693type TypeHierarchyOptions struct {
5694	WorkDoneProgressOptions
5695}
5696
5697// The parameter of a `textDocument/prepareTypeHierarchy` request.
5698//
5699// @since 3.17.0
5700//
5701// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeHierarchyPrepareParams
5702type TypeHierarchyPrepareParams struct {
5703	TextDocumentPositionParams
5704	WorkDoneProgressParams
5705}
5706
5707// Type hierarchy options used during static or dynamic registration.
5708//
5709// @since 3.17.0
5710//
5711// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeHierarchyRegistrationOptions
5712type TypeHierarchyRegistrationOptions struct {
5713	TextDocumentRegistrationOptions
5714	TypeHierarchyOptions
5715	StaticRegistrationOptions
5716}
5717
5718// The parameter of a `typeHierarchy/subtypes` request.
5719//
5720// @since 3.17.0
5721//
5722// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeHierarchySubtypesParams
5723type TypeHierarchySubtypesParams struct {
5724	Item TypeHierarchyItem `json:"item"`
5725	WorkDoneProgressParams
5726	PartialResultParams
5727}
5728
5729// The parameter of a `typeHierarchy/supertypes` request.
5730//
5731// @since 3.17.0
5732//
5733// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeHierarchySupertypesParams
5734type TypeHierarchySupertypesParams struct {
5735	Item TypeHierarchyItem `json:"item"`
5736	WorkDoneProgressParams
5737	PartialResultParams
5738}
5739
5740// A diagnostic report indicating that the last returned
5741// report is still accurate.
5742//
5743// @since 3.17.0
5744//
5745// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#unchangedDocumentDiagnosticReport
5746type UnchangedDocumentDiagnosticReport struct {
5747	// A document diagnostic report indicating
5748	// no changes to the last result. A server can
5749	// only return `unchanged` if result ids are
5750	// provided.
5751	Kind string `json:"kind"`
5752	// A result id which will be sent on the next
5753	// diagnostic request for the same document.
5754	ResultID string `json:"resultId"`
5755}
5756
5757// Moniker uniqueness level to define scope of the moniker.
5758//
5759// @since 3.16.0
5760type UniquenessLevel string
5761
5762// General parameters to unregister a request or notification.
5763//
5764// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#unregistration
5765type Unregistration struct {
5766	// The id used to unregister the request or notification. Usually an id
5767	// provided during the register request.
5768	ID string `json:"id"`
5769	// The method to unregister for.
5770	Method string `json:"method"`
5771}
5772
5773// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#unregistrationParams
5774type UnregistrationParams struct {
5775	Unregisterations []Unregistration `json:"unregisterations"`
5776}
5777
5778// A versioned notebook document identifier.
5779//
5780// @since 3.17.0
5781//
5782// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#versionedNotebookDocumentIdentifier
5783type VersionedNotebookDocumentIdentifier struct {
5784	// The version number of this notebook document.
5785	Version int32 `json:"version"`
5786	// The notebook document's uri.
5787	URI URI `json:"uri"`
5788}
5789
5790// A text document identifier to denote a specific version of a text document.
5791//
5792// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#versionedTextDocumentIdentifier
5793type VersionedTextDocumentIdentifier struct {
5794	// The version number of this document.
5795	Version int32 `json:"version"`
5796	TextDocumentIdentifier
5797}
5798type WatchKind = uint32 // The parameters sent in a will save text document notification.
5799// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#willSaveTextDocumentParams
5800type WillSaveTextDocumentParams struct {
5801	// The document that will be saved.
5802	TextDocument TextDocumentIdentifier `json:"textDocument"`
5803	// The 'TextDocumentSaveReason'.
5804	Reason TextDocumentSaveReason `json:"reason"`
5805}
5806
5807// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#windowClientCapabilities
5808type WindowClientCapabilities struct {
5809	// It indicates whether the client supports server initiated
5810	// progress using the `window/workDoneProgress/create` request.
5811	//
5812	// The capability also controls Whether client supports handling
5813	// of progress notifications. If set servers are allowed to report a
5814	// `workDoneProgress` property in the request specific server
5815	// capabilities.
5816	//
5817	// @since 3.15.0
5818	WorkDoneProgress bool `json:"workDoneProgress,omitempty"`
5819	// Capabilities specific to the showMessage request.
5820	//
5821	// @since 3.16.0
5822	ShowMessage *ShowMessageRequestClientCapabilities `json:"showMessage,omitempty"`
5823	// Capabilities specific to the showDocument request.
5824	//
5825	// @since 3.16.0
5826	ShowDocument *ShowDocumentClientCapabilities `json:"showDocument,omitempty"`
5827}
5828
5829// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workDoneProgressBegin
5830type WorkDoneProgressBegin struct {
5831	Kind string `json:"kind"`
5832	// Mandatory title of the progress operation. Used to briefly inform about
5833	// the kind of operation being performed.
5834	//
5835	// Examples: "Indexing" or "Linking dependencies".
5836	Title string `json:"title"`
5837	// Controls if a cancel button should show to allow the user to cancel the
5838	// long running operation. Clients that don't support cancellation are allowed
5839	// to ignore the setting.
5840	Cancellable bool `json:"cancellable,omitempty"`
5841	// Optional, more detailed associated progress message. Contains
5842	// complementary information to the `title`.
5843	//
5844	// Examples: "3/25 files", "project/src/module2", "node_modules/some_dep".
5845	// If unset, the previous progress message (if any) is still valid.
5846	Message string `json:"message,omitempty"`
5847	// Optional progress percentage to display (value 100 is considered 100%).
5848	// If not provided infinite progress is assumed and clients are allowed
5849	// to ignore the `percentage` value in subsequent in report notifications.
5850	//
5851	// The value should be steadily rising. Clients are free to ignore values
5852	// that are not following this rule. The value range is [0, 100].
5853	Percentage uint32 `json:"percentage,omitempty"`
5854}
5855
5856// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workDoneProgressCancelParams
5857type WorkDoneProgressCancelParams struct {
5858	// The token to be used to report progress.
5859	Token ProgressToken `json:"token"`
5860}
5861
5862// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workDoneProgressCreateParams
5863type WorkDoneProgressCreateParams struct {
5864	// The token to be used to report progress.
5865	Token ProgressToken `json:"token"`
5866}
5867
5868// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workDoneProgressEnd
5869type WorkDoneProgressEnd struct {
5870	Kind string `json:"kind"`
5871	// Optional, a final message indicating to for example indicate the outcome
5872	// of the operation.
5873	Message string `json:"message,omitempty"`
5874}
5875
5876// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workDoneProgressOptions
5877type WorkDoneProgressOptions struct {
5878	WorkDoneProgress bool `json:"workDoneProgress,omitempty"`
5879}
5880
5881// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workDoneProgressParams
5882type WorkDoneProgressParams struct {
5883	// An optional token that a server can use to report work done progress.
5884	WorkDoneToken ProgressToken `json:"workDoneToken,omitempty"`
5885}
5886
5887// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workDoneProgressReport
5888type WorkDoneProgressReport struct {
5889	Kind string `json:"kind"`
5890	// Controls enablement state of a cancel button.
5891	//
5892	// Clients that don't support cancellation or don't support controlling the button's
5893	// enablement state are allowed to ignore the property.
5894	Cancellable bool `json:"cancellable,omitempty"`
5895	// Optional, more detailed associated progress message. Contains
5896	// complementary information to the `title`.
5897	//
5898	// Examples: "3/25 files", "project/src/module2", "node_modules/some_dep".
5899	// If unset, the previous progress message (if any) is still valid.
5900	Message string `json:"message,omitempty"`
5901	// Optional progress percentage to display (value 100 is considered 100%).
5902	// If not provided infinite progress is assumed and clients are allowed
5903	// to ignore the `percentage` value in subsequent in report notifications.
5904	//
5905	// The value should be steadily rising. Clients are free to ignore values
5906	// that are not following this rule. The value range is [0, 100]
5907	Percentage uint32 `json:"percentage,omitempty"`
5908}
5909
5910// Workspace specific client capabilities.
5911//
5912// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceClientCapabilities
5913type WorkspaceClientCapabilities struct {
5914	// The client supports applying batch edits
5915	// to the workspace by supporting the request
5916	// 'workspace/applyEdit'
5917	ApplyEdit bool `json:"applyEdit,omitempty"`
5918	// Capabilities specific to `WorkspaceEdit`s.
5919	WorkspaceEdit *WorkspaceEditClientCapabilities `json:"workspaceEdit,omitempty"`
5920	// Capabilities specific to the `workspace/didChangeConfiguration` notification.
5921	DidChangeConfiguration DidChangeConfigurationClientCapabilities `json:"didChangeConfiguration,omitempty"`
5922	// Capabilities specific to the `workspace/didChangeWatchedFiles` notification.
5923	DidChangeWatchedFiles DidChangeWatchedFilesClientCapabilities `json:"didChangeWatchedFiles,omitempty"`
5924	// Capabilities specific to the `workspace/symbol` request.
5925	Symbol *WorkspaceSymbolClientCapabilities `json:"symbol,omitempty"`
5926	// Capabilities specific to the `workspace/executeCommand` request.
5927	ExecuteCommand *ExecuteCommandClientCapabilities `json:"executeCommand,omitempty"`
5928	// The client has support for workspace folders.
5929	//
5930	// @since 3.6.0
5931	WorkspaceFolders bool `json:"workspaceFolders,omitempty"`
5932	// The client supports `workspace/configuration` requests.
5933	//
5934	// @since 3.6.0
5935	Configuration bool `json:"configuration,omitempty"`
5936	// Capabilities specific to the semantic token requests scoped to the
5937	// workspace.
5938	//
5939	// @since 3.16.0.
5940	SemanticTokens *SemanticTokensWorkspaceClientCapabilities `json:"semanticTokens,omitempty"`
5941	// Capabilities specific to the code lens requests scoped to the
5942	// workspace.
5943	//
5944	// @since 3.16.0.
5945	CodeLens *CodeLensWorkspaceClientCapabilities `json:"codeLens,omitempty"`
5946	// The client has support for file notifications/requests for user operations on files.
5947	//
5948	// Since 3.16.0
5949	FileOperations *FileOperationClientCapabilities `json:"fileOperations,omitempty"`
5950	// Capabilities specific to the inline values requests scoped to the
5951	// workspace.
5952	//
5953	// @since 3.17.0.
5954	InlineValue *InlineValueWorkspaceClientCapabilities `json:"inlineValue,omitempty"`
5955	// Capabilities specific to the inlay hint requests scoped to the
5956	// workspace.
5957	//
5958	// @since 3.17.0.
5959	InlayHint *InlayHintWorkspaceClientCapabilities `json:"inlayHint,omitempty"`
5960	// Capabilities specific to the diagnostic requests scoped to the
5961	// workspace.
5962	//
5963	// @since 3.17.0.
5964	Diagnostics *DiagnosticWorkspaceClientCapabilities `json:"diagnostics,omitempty"`
5965	// Capabilities specific to the folding range requests scoped to the workspace.
5966	//
5967	// @since 3.18.0
5968	// @proposed
5969	FoldingRange *FoldingRangeWorkspaceClientCapabilities `json:"foldingRange,omitempty"`
5970	// Capabilities specific to the `workspace/textDocumentContent` request.
5971	//
5972	// @since 3.18.0
5973	// @proposed
5974	TextDocumentContent *TextDocumentContentClientCapabilities `json:"textDocumentContent,omitempty"`
5975}
5976
5977// Parameters of the workspace diagnostic request.
5978//
5979// @since 3.17.0
5980//
5981// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceDiagnosticParams
5982type WorkspaceDiagnosticParams struct {
5983	// The additional identifier provided during registration.
5984	Identifier string `json:"identifier,omitempty"`
5985	// The currently known diagnostic reports with their
5986	// previous result ids.
5987	PreviousResultIds []PreviousResultId `json:"previousResultIds"`
5988	WorkDoneProgressParams
5989	PartialResultParams
5990}
5991
5992// A workspace diagnostic report.
5993//
5994// @since 3.17.0
5995//
5996// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceDiagnosticReport
5997type WorkspaceDiagnosticReport struct {
5998	Items []WorkspaceDocumentDiagnosticReport `json:"items"`
5999}
6000
6001// A partial result for a workspace diagnostic report.
6002//
6003// @since 3.17.0
6004//
6005// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceDiagnosticReportPartialResult
6006type WorkspaceDiagnosticReportPartialResult struct {
6007	Items []WorkspaceDocumentDiagnosticReport `json:"items"`
6008}
6009
6010// A workspace diagnostic document report.
6011//
6012// @since 3.17.0
6013//
6014// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceDocumentDiagnosticReport
6015type WorkspaceDocumentDiagnosticReport = Or_WorkspaceDocumentDiagnosticReport // (alias)
6016// A workspace edit represents changes to many resources managed in the workspace. The edit
6017// should either provide `changes` or `documentChanges`. If documentChanges are present
6018// they are preferred over `changes` if the client can handle versioned document edits.
6019//
6020// Since version 3.13.0 a workspace edit can contain resource operations as well. If resource
6021// operations are present clients need to execute the operations in the order in which they
6022// are provided. So a workspace edit for example can consist of the following two changes:
6023// (1) a create file a.txt and (2) a text document edit which insert text into file a.txt.
6024//
6025// An invalid sequence (e.g. (1) delete file a.txt and (2) insert text into file a.txt) will
6026// cause failure of the operation. How the client recovers from the failure is described by
6027// the client capability: `workspace.workspaceEdit.failureHandling`
6028//
6029// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceEdit
6030type WorkspaceEdit struct {
6031	// Holds changes to existing resources.
6032	Changes map[DocumentUri][]TextEdit `json:"changes,omitempty"`
6033	// Depending on the client capability `workspace.workspaceEdit.resourceOperations` document changes
6034	// are either an array of `TextDocumentEdit`s to express changes to n different text documents
6035	// where each text document edit addresses a specific version of a text document. Or it can contain
6036	// above `TextDocumentEdit`s mixed with create, rename and delete file / folder operations.
6037	//
6038	// Whether a client supports versioned document edits is expressed via
6039	// `workspace.workspaceEdit.documentChanges` client capability.
6040	//
6041	// If a client neither supports `documentChanges` nor `workspace.workspaceEdit.resourceOperations` then
6042	// only plain `TextEdit`s using the `changes` property are supported.
6043	DocumentChanges []DocumentChange `json:"documentChanges,omitempty"`
6044	// A map of change annotations that can be referenced in `AnnotatedTextEdit`s or create, rename and
6045	// delete file / folder operations.
6046	//
6047	// Whether clients honor this property depends on the client capability `workspace.changeAnnotationSupport`.
6048	//
6049	// @since 3.16.0
6050	ChangeAnnotations map[ChangeAnnotationIdentifier]ChangeAnnotation `json:"changeAnnotations,omitempty"`
6051}
6052
6053// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceEditClientCapabilities
6054type WorkspaceEditClientCapabilities struct {
6055	// The client supports versioned document changes in `WorkspaceEdit`s
6056	DocumentChanges bool `json:"documentChanges,omitempty"`
6057	// The resource operations the client supports. Clients should at least
6058	// support 'create', 'rename' and 'delete' files and folders.
6059	//
6060	// @since 3.13.0
6061	ResourceOperations []ResourceOperationKind `json:"resourceOperations,omitempty"`
6062	// The failure handling strategy of a client if applying the workspace edit
6063	// fails.
6064	//
6065	// @since 3.13.0
6066	FailureHandling *FailureHandlingKind `json:"failureHandling,omitempty"`
6067	// Whether the client normalizes line endings to the client specific
6068	// setting.
6069	// If set to `true` the client will normalize line ending characters
6070	// in a workspace edit to the client-specified new line
6071	// character.
6072	//
6073	// @since 3.16.0
6074	NormalizesLineEndings bool `json:"normalizesLineEndings,omitempty"`
6075	// Whether the client in general supports change annotations on text edits,
6076	// create file, rename file and delete file changes.
6077	//
6078	// @since 3.16.0
6079	ChangeAnnotationSupport *ChangeAnnotationsSupportOptions `json:"changeAnnotationSupport,omitempty"`
6080	// Whether the client supports `WorkspaceEditMetadata` in `WorkspaceEdit`s.
6081	//
6082	// @since 3.18.0
6083	// @proposed
6084	MetadataSupport bool `json:"metadataSupport,omitempty"`
6085	// Whether the client supports snippets as text edits.
6086	//
6087	// @since 3.18.0
6088	// @proposed
6089	SnippetEditSupport bool `json:"snippetEditSupport,omitempty"`
6090}
6091
6092// Additional data about a workspace edit.
6093//
6094// @since 3.18.0
6095// @proposed
6096//
6097// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceEditMetadata
6098type WorkspaceEditMetadata struct {
6099	// Signal to the editor that this edit is a refactoring.
6100	IsRefactoring bool `json:"isRefactoring,omitempty"`
6101}
6102
6103// A workspace folder inside a client.
6104//
6105// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceFolder
6106type WorkspaceFolder struct {
6107	// The associated URI for this workspace folder.
6108	URI URI `json:"uri"`
6109	// The name of the workspace folder. Used to refer to this
6110	// workspace folder in the user interface.
6111	Name string `json:"name"`
6112}
6113
6114// The workspace folder change event.
6115//
6116// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceFoldersChangeEvent
6117type WorkspaceFoldersChangeEvent struct {
6118	// The array of added workspace folders
6119	Added []WorkspaceFolder `json:"added"`
6120	// The array of the removed workspace folders
6121	Removed []WorkspaceFolder `json:"removed"`
6122}
6123
6124// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceFoldersInitializeParams
6125type WorkspaceFoldersInitializeParams struct {
6126	// The workspace folders configured in the client when the server starts.
6127	//
6128	// This property is only available if the client supports workspace folders.
6129	// It can be `null` if the client supports workspace folders but none are
6130	// configured.
6131	//
6132	// @since 3.6.0
6133	WorkspaceFolders []WorkspaceFolder `json:"workspaceFolders,omitempty"`
6134}
6135
6136// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceFoldersServerCapabilities
6137type WorkspaceFoldersServerCapabilities struct {
6138	// The server has support for workspace folders
6139	Supported bool `json:"supported,omitempty"`
6140	// Whether the server wants to receive workspace folder
6141	// change notifications.
6142	//
6143	// If a string is provided the string is treated as an ID
6144	// under which the notification is registered on the client
6145	// side. The ID can be used to unregister for these events
6146	// using the `client/unregisterCapability` request.
6147	ChangeNotifications *Or_WorkspaceFoldersServerCapabilities_changeNotifications `json:"changeNotifications,omitempty"`
6148}
6149
6150// A full document diagnostic report for a workspace diagnostic result.
6151//
6152// @since 3.17.0
6153//
6154// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceFullDocumentDiagnosticReport
6155type WorkspaceFullDocumentDiagnosticReport struct {
6156	// The URI for which diagnostic information is reported.
6157	URI DocumentUri `json:"uri"`
6158	// The version number for which the diagnostics are reported.
6159	// If the document is not marked as open `null` can be provided.
6160	Version int32 `json:"version"`
6161	FullDocumentDiagnosticReport
6162}
6163
6164// Defines workspace specific capabilities of the server.
6165//
6166// @since 3.18.0
6167//
6168// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceOptions
6169type WorkspaceOptions struct {
6170	// The server supports workspace folder.
6171	//
6172	// @since 3.6.0
6173	WorkspaceFolders *WorkspaceFoldersServerCapabilities `json:"workspaceFolders,omitempty"`
6174	// The server is interested in notifications/requests for operations on files.
6175	//
6176	// @since 3.16.0
6177	FileOperations *FileOperationOptions `json:"fileOperations,omitempty"`
6178	// The server supports the `workspace/textDocumentContent` request.
6179	//
6180	// @since 3.18.0
6181	// @proposed
6182	TextDocumentContent *Or_WorkspaceOptions_textDocumentContent `json:"textDocumentContent,omitempty"`
6183}
6184
6185// A special workspace symbol that supports locations without a range.
6186//
6187// See also SymbolInformation.
6188//
6189// @since 3.17.0
6190//
6191// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceSymbol
6192type WorkspaceSymbol struct {
6193	// The location of the symbol. Whether a server is allowed to
6194	// return a location without a range depends on the client
6195	// capability `workspace.symbol.resolveSupport`.
6196	//
6197	// See SymbolInformation#location for more details.
6198	Location Or_WorkspaceSymbol_location `json:"location"`
6199	// A data entry field that is preserved on a workspace symbol between a
6200	// workspace symbol request and a workspace symbol resolve request.
6201	Data interface{} `json:"data,omitempty"`
6202	BaseSymbolInformation
6203}
6204
6205// Client capabilities for a {@link WorkspaceSymbolRequest}.
6206//
6207// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceSymbolClientCapabilities
6208type WorkspaceSymbolClientCapabilities struct {
6209	// Symbol request supports dynamic registration.
6210	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
6211	// Specific capabilities for the `SymbolKind` in the `workspace/symbol` request.
6212	SymbolKind *ClientSymbolKindOptions `json:"symbolKind,omitempty"`
6213	// The client supports tags on `SymbolInformation`.
6214	// Clients supporting tags have to handle unknown tags gracefully.
6215	//
6216	// @since 3.16.0
6217	TagSupport *ClientSymbolTagOptions `json:"tagSupport,omitempty"`
6218	// The client support partial workspace symbols. The client will send the
6219	// request `workspaceSymbol/resolve` to the server to resolve additional
6220	// properties.
6221	//
6222	// @since 3.17.0
6223	ResolveSupport *ClientSymbolResolveOptions `json:"resolveSupport,omitempty"`
6224}
6225
6226// Server capabilities for a {@link WorkspaceSymbolRequest}.
6227//
6228// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceSymbolOptions
6229type WorkspaceSymbolOptions struct {
6230	// The server provides support to resolve additional
6231	// information for a workspace symbol.
6232	//
6233	// @since 3.17.0
6234	ResolveProvider bool `json:"resolveProvider,omitempty"`
6235	WorkDoneProgressOptions
6236}
6237
6238// The parameters of a {@link WorkspaceSymbolRequest}.
6239//
6240// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceSymbolParams
6241type WorkspaceSymbolParams struct {
6242	// A query string to filter symbols by. Clients may send an empty
6243	// string here to request all symbols.
6244	//
6245	// The `query`-parameter should be interpreted in a *relaxed way* as editors
6246	// will apply their own highlighting and scoring on the results. A good rule
6247	// of thumb is to match case-insensitive and to simply check that the
6248	// characters of *query* appear in their order in a candidate symbol.
6249	// Servers shouldn't use prefix, substring, or similar strict matching.
6250	Query string `json:"query"`
6251	WorkDoneProgressParams
6252	PartialResultParams
6253}
6254
6255// Registration options for a {@link WorkspaceSymbolRequest}.
6256//
6257// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceSymbolRegistrationOptions
6258type WorkspaceSymbolRegistrationOptions struct {
6259	WorkspaceSymbolOptions
6260}
6261
6262// An unchanged document diagnostic report for a workspace diagnostic result.
6263//
6264// @since 3.17.0
6265//
6266// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceUnchangedDocumentDiagnosticReport
6267type WorkspaceUnchangedDocumentDiagnosticReport struct {
6268	// The URI for which diagnostic information is reported.
6269	URI DocumentUri `json:"uri"`
6270	// The version number for which the diagnostics are reported.
6271	// If the document is not marked as open `null` can be provided.
6272	Version int32 `json:"version"`
6273	UnchangedDocumentDiagnosticReport
6274}
6275
6276// The initialize parameters
6277//
6278// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#_InitializeParams
6279type XInitializeParams struct {
6280	// The process Id of the parent process that started
6281	// the server.
6282	//
6283	// Is `null` if the process has not been started by another process.
6284	// If the parent process is not alive then the server should exit.
6285	ProcessID int32 `json:"processId"`
6286	// Information about the client
6287	//
6288	// @since 3.15.0
6289	ClientInfo *ClientInfo `json:"clientInfo,omitempty"`
6290	// The locale the client is currently showing the user interface
6291	// in. This must not necessarily be the locale of the operating
6292	// system.
6293	//
6294	// Uses IETF language tags as the value's syntax
6295	// (See https://en.wikipedia.org/wiki/IETF_language_tag)
6296	//
6297	// @since 3.16.0
6298	Locale string `json:"locale,omitempty"`
6299	// The rootPath of the workspace. Is null
6300	// if no folder is open.
6301	//
6302	// @deprecated in favour of rootUri.
6303	RootPath string `json:"rootPath,omitempty"`
6304	// The rootUri of the workspace. Is null if no
6305	// folder is open. If both `rootPath` and `rootUri` are set
6306	// `rootUri` wins.
6307	//
6308	// @deprecated in favour of workspaceFolders.
6309	RootURI DocumentUri `json:"rootUri"`
6310	// The capabilities provided by the client (editor or tool)
6311	Capabilities ClientCapabilities `json:"capabilities"`
6312	// User provided initialization options.
6313	InitializationOptions interface{} `json:"initializationOptions,omitempty"`
6314	// The initial trace setting. If omitted trace is disabled ('off').
6315	Trace *TraceValue `json:"trace,omitempty"`
6316	WorkDoneProgressParams
6317}
6318
6319// The initialize parameters
6320//
6321// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#_InitializeParams
6322type _InitializeParams struct {
6323	// The process Id of the parent process that started
6324	// the server.
6325	//
6326	// Is `null` if the process has not been started by another process.
6327	// If the parent process is not alive then the server should exit.
6328	ProcessID int32 `json:"processId"`
6329	// Information about the client
6330	//
6331	// @since 3.15.0
6332	ClientInfo *ClientInfo `json:"clientInfo,omitempty"`
6333	// The locale the client is currently showing the user interface
6334	// in. This must not necessarily be the locale of the operating
6335	// system.
6336	//
6337	// Uses IETF language tags as the value's syntax
6338	// (See https://en.wikipedia.org/wiki/IETF_language_tag)
6339	//
6340	// @since 3.16.0
6341	Locale string `json:"locale,omitempty"`
6342	// The rootPath of the workspace. Is null
6343	// if no folder is open.
6344	//
6345	// @deprecated in favour of rootUri.
6346	RootPath string `json:"rootPath,omitempty"`
6347	// The rootUri of the workspace. Is null if no
6348	// folder is open. If both `rootPath` and `rootUri` are set
6349	// `rootUri` wins.
6350	//
6351	// @deprecated in favour of workspaceFolders.
6352	RootURI DocumentUri `json:"rootUri"`
6353	// The capabilities provided by the client (editor or tool)
6354	Capabilities ClientCapabilities `json:"capabilities"`
6355	// User provided initialization options.
6356	InitializationOptions interface{} `json:"initializationOptions,omitempty"`
6357	// The initial trace setting. If omitted trace is disabled ('off').
6358	Trace *TraceValue `json:"trace,omitempty"`
6359	WorkDoneProgressParams
6360}
6361
6362const (
6363	// A set of predefined code action kinds
6364	// Empty kind.
6365	Empty CodeActionKind = ""
6366	// Base kind for quickfix actions: 'quickfix'
6367	QuickFix CodeActionKind = "quickfix"
6368	// Base kind for refactoring actions: 'refactor'
6369	Refactor CodeActionKind = "refactor"
6370	// Base kind for refactoring extraction actions: 'refactor.extract'
6371	//
6372	// Example extract actions:
6373	//
6374	//
6375	//  - Extract method
6376	//  - Extract function
6377	//  - Extract variable
6378	//  - Extract interface from class
6379	//  - ...
6380	RefactorExtract CodeActionKind = "refactor.extract"
6381	// Base kind for refactoring inline actions: 'refactor.inline'
6382	//
6383	// Example inline actions:
6384	//
6385	//
6386	//  - Inline function
6387	//  - Inline variable
6388	//  - Inline constant
6389	//  - ...
6390	RefactorInline CodeActionKind = "refactor.inline"
6391	// Base kind for refactoring move actions: `refactor.move`
6392	//
6393	// Example move actions:
6394	//
6395	//
6396	//  - Move a function to a new file
6397	//  - Move a property between classes
6398	//  - Move method to base class
6399	//  - ...
6400	//
6401	// @since 3.18.0
6402	// @proposed
6403	RefactorMove CodeActionKind = "refactor.move"
6404	// Base kind for refactoring rewrite actions: 'refactor.rewrite'
6405	//
6406	// Example rewrite actions:
6407	//
6408	//
6409	//  - Convert JavaScript function to class
6410	//  - Add or remove parameter
6411	//  - Encapsulate field
6412	//  - Make method static
6413	//  - Move method to base class
6414	//  - ...
6415	RefactorRewrite CodeActionKind = "refactor.rewrite"
6416	// Base kind for source actions: `source`
6417	//
6418	// Source code actions apply to the entire file.
6419	Source CodeActionKind = "source"
6420	// Base kind for an organize imports source action: `source.organizeImports`
6421	SourceOrganizeImports CodeActionKind = "source.organizeImports"
6422	// Base kind for auto-fix source actions: `source.fixAll`.
6423	//
6424	// Fix all actions automatically fix errors that have a clear fix that do not require user input.
6425	// They should not suppress errors or perform unsafe fixes such as generating new types or classes.
6426	//
6427	// @since 3.15.0
6428	SourceFixAll CodeActionKind = "source.fixAll"
6429	// Base kind for all code actions applying to the entire notebook's scope. CodeActionKinds using
6430	// this should always begin with `notebook.`
6431	//
6432	// @since 3.18.0
6433	Notebook CodeActionKind = "notebook"
6434	// The reason why code actions were requested.
6435	//
6436	// @since 3.17.0
6437	// Code actions were explicitly requested by the user or by an extension.
6438	CodeActionInvoked CodeActionTriggerKind = 1
6439	// Code actions were requested automatically.
6440	//
6441	// This typically happens when current selection in a file changes, but can
6442	// also be triggered when file content changes.
6443	CodeActionAutomatic CodeActionTriggerKind = 2
6444	// The kind of a completion entry.
6445	TextCompletion          CompletionItemKind = 1
6446	MethodCompletion        CompletionItemKind = 2
6447	FunctionCompletion      CompletionItemKind = 3
6448	ConstructorCompletion   CompletionItemKind = 4
6449	FieldCompletion         CompletionItemKind = 5
6450	VariableCompletion      CompletionItemKind = 6
6451	ClassCompletion         CompletionItemKind = 7
6452	InterfaceCompletion     CompletionItemKind = 8
6453	ModuleCompletion        CompletionItemKind = 9
6454	PropertyCompletion      CompletionItemKind = 10
6455	UnitCompletion          CompletionItemKind = 11
6456	ValueCompletion         CompletionItemKind = 12
6457	EnumCompletion          CompletionItemKind = 13
6458	KeywordCompletion       CompletionItemKind = 14
6459	SnippetCompletion       CompletionItemKind = 15
6460	ColorCompletion         CompletionItemKind = 16
6461	FileCompletion          CompletionItemKind = 17
6462	ReferenceCompletion     CompletionItemKind = 18
6463	FolderCompletion        CompletionItemKind = 19
6464	EnumMemberCompletion    CompletionItemKind = 20
6465	ConstantCompletion      CompletionItemKind = 21
6466	StructCompletion        CompletionItemKind = 22
6467	EventCompletion         CompletionItemKind = 23
6468	OperatorCompletion      CompletionItemKind = 24
6469	TypeParameterCompletion CompletionItemKind = 25
6470	// Completion item tags are extra annotations that tweak the rendering of a completion
6471	// item.
6472	//
6473	// @since 3.15.0
6474	// Render a completion as obsolete, usually using a strike-out.
6475	ComplDeprecated CompletionItemTag = 1
6476	// How a completion was triggered
6477	// Completion was triggered by typing an identifier (24x7 code
6478	// complete), manual invocation (e.g Ctrl+Space) or via API.
6479	Invoked CompletionTriggerKind = 1
6480	// Completion was triggered by a trigger character specified by
6481	// the `triggerCharacters` properties of the `CompletionRegistrationOptions`.
6482	TriggerCharacter CompletionTriggerKind = 2
6483	// Completion was re-triggered as current completion list is incomplete
6484	TriggerForIncompleteCompletions CompletionTriggerKind = 3
6485	// The diagnostic's severity.
6486	// Reports an error.
6487	SeverityError DiagnosticSeverity = 1
6488	// Reports a warning.
6489	SeverityWarning DiagnosticSeverity = 2
6490	// Reports an information.
6491	SeverityInformation DiagnosticSeverity = 3
6492	// Reports a hint.
6493	SeverityHint DiagnosticSeverity = 4
6494	// The diagnostic tags.
6495	//
6496	// @since 3.15.0
6497	// Unused or unnecessary code.
6498	//
6499	// Clients are allowed to render diagnostics with this tag faded out instead of having
6500	// an error squiggle.
6501	Unnecessary DiagnosticTag = 1
6502	// Deprecated or obsolete code.
6503	//
6504	// Clients are allowed to rendered diagnostics with this tag strike through.
6505	Deprecated DiagnosticTag = 2
6506	// The document diagnostic report kinds.
6507	//
6508	// @since 3.17.0
6509	// A diagnostic report with a full
6510	// set of problems.
6511	DiagnosticFull DocumentDiagnosticReportKind = "full"
6512	// A report indicating that the last
6513	// returned report is still accurate.
6514	DiagnosticUnchanged DocumentDiagnosticReportKind = "unchanged"
6515	// A document highlight kind.
6516	// A textual occurrence.
6517	Text DocumentHighlightKind = 1
6518	// Read-access of a symbol, like reading a variable.
6519	Read DocumentHighlightKind = 2
6520	// Write-access of a symbol, like writing to a variable.
6521	Write DocumentHighlightKind = 3
6522	// Predefined error codes.
6523	ParseError     ErrorCodes = -32700
6524	InvalidRequest ErrorCodes = -32600
6525	MethodNotFound ErrorCodes = -32601
6526	InvalidParams  ErrorCodes = -32602
6527	InternalError  ErrorCodes = -32603
6528	// Error code indicating that a server received a notification or
6529	// request before the server has received the `initialize` request.
6530	ServerNotInitialized ErrorCodes = -32002
6531	UnknownErrorCode     ErrorCodes = -32001
6532	// Applying the workspace change is simply aborted if one of the changes provided
6533	// fails. All operations executed before the failing operation stay executed.
6534	Abort FailureHandlingKind = "abort"
6535	// All operations are executed transactional. That means they either all
6536	// succeed or no changes at all are applied to the workspace.
6537	Transactional FailureHandlingKind = "transactional"
6538	// If the workspace edit contains only textual file changes they are executed transactional.
6539	// If resource changes (create, rename or delete file) are part of the change the failure
6540	// handling strategy is abort.
6541	TextOnlyTransactional FailureHandlingKind = "textOnlyTransactional"
6542	// The client tries to undo the operations already executed. But there is no
6543	// guarantee that this is succeeding.
6544	Undo FailureHandlingKind = "undo"
6545	// The file event type
6546	// The file got created.
6547	Created FileChangeType = 1
6548	// The file got changed.
6549	Changed FileChangeType = 2
6550	// The file got deleted.
6551	Deleted FileChangeType = 3
6552	// A pattern kind describing if a glob pattern matches a file a folder or
6553	// both.
6554	//
6555	// @since 3.16.0
6556	// The pattern matches a file only.
6557	FilePattern FileOperationPatternKind = "file"
6558	// The pattern matches a folder only.
6559	FolderPattern FileOperationPatternKind = "folder"
6560	// A set of predefined range kinds.
6561	// Folding range for a comment
6562	Comment FoldingRangeKind = "comment"
6563	// Folding range for an import or include
6564	Imports FoldingRangeKind = "imports"
6565	// Folding range for a region (e.g. `#region`)
6566	Region FoldingRangeKind = "region"
6567	// Inlay hint kinds.
6568	//
6569	// @since 3.17.0
6570	// An inlay hint that for a type annotation.
6571	Type InlayHintKind = 1
6572	// An inlay hint that is for a parameter.
6573	Parameter InlayHintKind = 2
6574	// Describes how an {@link InlineCompletionItemProvider inline completion provider} was triggered.
6575	//
6576	// @since 3.18.0
6577	// @proposed
6578	// Completion was triggered explicitly by a user gesture.
6579	InlineInvoked InlineCompletionTriggerKind = 1
6580	// Completion was triggered automatically while editing.
6581	InlineAutomatic InlineCompletionTriggerKind = 2
6582	// Defines whether the insert text in a completion item should be interpreted as
6583	// plain text or a snippet.
6584	// The primary text to be inserted is treated as a plain string.
6585	PlainTextTextFormat InsertTextFormat = 1
6586	// The primary text to be inserted is treated as a snippet.
6587	//
6588	// A snippet can define tab stops and placeholders with `$1`, `$2`
6589	// and `${3:foo}`. `$0` defines the final tab stop, it defaults to
6590	// the end of the snippet. Placeholders with equal identifiers are linked,
6591	// that is typing in one will update others too.
6592	//
6593	// See also: https://microsoft.github.io/language-server-protocol/specifications/specification-current/#snippet_syntax
6594	SnippetTextFormat InsertTextFormat = 2
6595	// How whitespace and indentation is handled during completion
6596	// item insertion.
6597	//
6598	// @since 3.16.0
6599	// The insertion or replace strings is taken as it is. If the
6600	// value is multi line the lines below the cursor will be
6601	// inserted using the indentation defined in the string value.
6602	// The client will not apply any kind of adjustments to the
6603	// string.
6604	AsIs InsertTextMode = 1
6605	// The editor adjusts leading whitespace of new lines so that
6606	// they match the indentation up to the cursor of the line for
6607	// which the item is accepted.
6608	//
6609	// Consider a line like this: <2tabs><cursor><3tabs>foo. Accepting a
6610	// multi line completion item is indented using 2 tabs and all
6611	// following lines inserted will be indented using 2 tabs as well.
6612	AdjustIndentation InsertTextMode = 2
6613	// A request failed but it was syntactically correct, e.g the
6614	// method name was known and the parameters were valid. The error
6615	// message should contain human readable information about why
6616	// the request failed.
6617	//
6618	// @since 3.17.0
6619	RequestFailed LSPErrorCodes = -32803
6620	// The server cancelled the request. This error code should
6621	// only be used for requests that explicitly support being
6622	// server cancellable.
6623	//
6624	// @since 3.17.0
6625	ServerCancelled LSPErrorCodes = -32802
6626	// The server detected that the content of a document got
6627	// modified outside normal conditions. A server should
6628	// NOT send this error code if it detects a content change
6629	// in it unprocessed messages. The result even computed
6630	// on an older state might still be useful for the client.
6631	//
6632	// If a client decides that a result is not of any use anymore
6633	// the client should cancel the request.
6634	ContentModified LSPErrorCodes = -32801
6635	// The client has canceled a request and a server has detected
6636	// the cancel.
6637	RequestCancelled LSPErrorCodes = -32800
6638	// Predefined Language kinds
6639	// @since 3.18.0
6640	// @proposed
6641	LangABAP         LanguageKind = "abap"
6642	LangWindowsBat   LanguageKind = "bat"
6643	LangBibTeX       LanguageKind = "bibtex"
6644	LangClojure      LanguageKind = "clojure"
6645	LangCoffeescript LanguageKind = "coffeescript"
6646	LangC            LanguageKind = "c"
6647	LangCPP          LanguageKind = "cpp"
6648	LangCSharp       LanguageKind = "csharp"
6649	LangCSS          LanguageKind = "css"
6650	// @since 3.18.0
6651	// @proposed
6652	LangD LanguageKind = "d"
6653	// @since 3.18.0
6654	// @proposed
6655	LangDelphi          LanguageKind = "pascal"
6656	LangDiff            LanguageKind = "diff"
6657	LangDart            LanguageKind = "dart"
6658	LangDockerfile      LanguageKind = "dockerfile"
6659	LangElixir          LanguageKind = "elixir"
6660	LangErlang          LanguageKind = "erlang"
6661	LangFSharp          LanguageKind = "fsharp"
6662	LangGitCommit       LanguageKind = "git-commit"
6663	LangGitRebase       LanguageKind = "rebase"
6664	LangGo              LanguageKind = "go"
6665	LangGroovy          LanguageKind = "groovy"
6666	LangHandlebars      LanguageKind = "handlebars"
6667	LangHaskell         LanguageKind = "haskell"
6668	LangHTML            LanguageKind = "html"
6669	LangIni             LanguageKind = "ini"
6670	LangJava            LanguageKind = "java"
6671	LangJavaScript      LanguageKind = "javascript"
6672	LangJavaScriptReact LanguageKind = "javascriptreact"
6673	LangJSON            LanguageKind = "json"
6674	LangLaTeX           LanguageKind = "latex"
6675	LangLess            LanguageKind = "less"
6676	LangLua             LanguageKind = "lua"
6677	LangMakefile        LanguageKind = "makefile"
6678	LangMarkdown        LanguageKind = "markdown"
6679	LangObjectiveC      LanguageKind = "objective-c"
6680	LangObjectiveCPP    LanguageKind = "objective-cpp"
6681	// @since 3.18.0
6682	// @proposed
6683	LangPascal          LanguageKind = "pascal"
6684	LangPerl            LanguageKind = "perl"
6685	LangPerl6           LanguageKind = "perl6"
6686	LangPHP             LanguageKind = "php"
6687	LangPowershell      LanguageKind = "powershell"
6688	LangPug             LanguageKind = "jade"
6689	LangPython          LanguageKind = "python"
6690	LangR               LanguageKind = "r"
6691	LangRazor           LanguageKind = "razor"
6692	LangRuby            LanguageKind = "ruby"
6693	LangRust            LanguageKind = "rust"
6694	LangSCSS            LanguageKind = "scss"
6695	LangSASS            LanguageKind = "sass"
6696	LangScala           LanguageKind = "scala"
6697	LangShaderLab       LanguageKind = "shaderlab"
6698	LangShellScript     LanguageKind = "shellscript"
6699	LangSQL             LanguageKind = "sql"
6700	LangSwift           LanguageKind = "swift"
6701	LangTypeScript      LanguageKind = "typescript"
6702	LangTypeScriptReact LanguageKind = "typescriptreact"
6703	LangTeX             LanguageKind = "tex"
6704	LangVisualBasic     LanguageKind = "vb"
6705	LangXML             LanguageKind = "xml"
6706	LangXSL             LanguageKind = "xsl"
6707	LangYAML            LanguageKind = "yaml"
6708	// Describes the content type that a client supports in various
6709	// result literals like `Hover`, `ParameterInfo` or `CompletionItem`.
6710	//
6711	// Please note that `MarkupKinds` must not start with a `$`. This kinds
6712	// are reserved for internal usage.
6713	// Plain text is supported as a content format
6714	PlainText MarkupKind = "plaintext"
6715	// Markdown is supported as a content format
6716	Markdown MarkupKind = "markdown"
6717	// The message type
6718	// An error message.
6719	Error MessageType = 1
6720	// A warning message.
6721	Warning MessageType = 2
6722	// An information message.
6723	Info MessageType = 3
6724	// A log message.
6725	Log MessageType = 4
6726	// A debug message.
6727	//
6728	// @since 3.18.0
6729	// @proposed
6730	Debug MessageType = 5
6731	// The moniker kind.
6732	//
6733	// @since 3.16.0
6734	// The moniker represent a symbol that is imported into a project
6735	Import MonikerKind = "import"
6736	// The moniker represents a symbol that is exported from a project
6737	Export MonikerKind = "export"
6738	// The moniker represents a symbol that is local to a project (e.g. a local
6739	// variable of a function, a class not visible outside the project, ...)
6740	Local MonikerKind = "local"
6741	// A notebook cell kind.
6742	//
6743	// @since 3.17.0
6744	// A markup-cell is formatted source that is used for display.
6745	Markup NotebookCellKind = 1
6746	// A code-cell is source code.
6747	Code NotebookCellKind = 2
6748	// A set of predefined position encoding kinds.
6749	//
6750	// @since 3.17.0
6751	// Character offsets count UTF-8 code units (e.g. bytes).
6752	UTF8 PositionEncodingKind = "utf-8"
6753	// Character offsets count UTF-16 code units.
6754	//
6755	// This is the default and must always be supported
6756	// by servers
6757	UTF16 PositionEncodingKind = "utf-16"
6758	// Character offsets count UTF-32 code units.
6759	//
6760	// Implementation note: these are the same as Unicode codepoints,
6761	// so this `PositionEncodingKind` may also be used for an
6762	// encoding-agnostic representation of character offsets.
6763	UTF32 PositionEncodingKind = "utf-32"
6764	// The client's default behavior is to select the identifier
6765	// according the to language's syntax rule.
6766	Identifier PrepareSupportDefaultBehavior = 1
6767	// Supports creating new files and folders.
6768	Create ResourceOperationKind = "create"
6769	// Supports renaming existing files and folders.
6770	Rename ResourceOperationKind = "rename"
6771	// Supports deleting existing files and folders.
6772	Delete ResourceOperationKind = "delete"
6773	// A set of predefined token modifiers. This set is not fixed
6774	// an clients can specify additional token types via the
6775	// corresponding client capabilities.
6776	//
6777	// @since 3.16.0
6778	ModDeclaration    SemanticTokenModifiers = "declaration"
6779	ModDefinition     SemanticTokenModifiers = "definition"
6780	ModReadonly       SemanticTokenModifiers = "readonly"
6781	ModStatic         SemanticTokenModifiers = "static"
6782	ModDeprecated     SemanticTokenModifiers = "deprecated"
6783	ModAbstract       SemanticTokenModifiers = "abstract"
6784	ModAsync          SemanticTokenModifiers = "async"
6785	ModModification   SemanticTokenModifiers = "modification"
6786	ModDocumentation  SemanticTokenModifiers = "documentation"
6787	ModDefaultLibrary SemanticTokenModifiers = "defaultLibrary"
6788	// A set of predefined token types. This set is not fixed
6789	// an clients can specify additional token types via the
6790	// corresponding client capabilities.
6791	//
6792	// @since 3.16.0
6793	NamespaceType SemanticTokenTypes = "namespace"
6794	// Represents a generic type. Acts as a fallback for types which can't be mapped to
6795	// a specific type like class or enum.
6796	TypeType          SemanticTokenTypes = "type"
6797	ClassType         SemanticTokenTypes = "class"
6798	EnumType          SemanticTokenTypes = "enum"
6799	InterfaceType     SemanticTokenTypes = "interface"
6800	StructType        SemanticTokenTypes = "struct"
6801	TypeParameterType SemanticTokenTypes = "typeParameter"
6802	ParameterType     SemanticTokenTypes = "parameter"
6803	VariableType      SemanticTokenTypes = "variable"
6804	PropertyType      SemanticTokenTypes = "property"
6805	EnumMemberType    SemanticTokenTypes = "enumMember"
6806	EventType         SemanticTokenTypes = "event"
6807	FunctionType      SemanticTokenTypes = "function"
6808	MethodType        SemanticTokenTypes = "method"
6809	MacroType         SemanticTokenTypes = "macro"
6810	KeywordType       SemanticTokenTypes = "keyword"
6811	ModifierType      SemanticTokenTypes = "modifier"
6812	CommentType       SemanticTokenTypes = "comment"
6813	StringType        SemanticTokenTypes = "string"
6814	NumberType        SemanticTokenTypes = "number"
6815	RegexpType        SemanticTokenTypes = "regexp"
6816	OperatorType      SemanticTokenTypes = "operator"
6817	// @since 3.17.0
6818	DecoratorType SemanticTokenTypes = "decorator"
6819	// @since 3.18.0
6820	LabelType SemanticTokenTypes = "label"
6821	// How a signature help was triggered.
6822	//
6823	// @since 3.15.0
6824	// Signature help was invoked manually by the user or by a command.
6825	SigInvoked SignatureHelpTriggerKind = 1
6826	// Signature help was triggered by a trigger character.
6827	SigTriggerCharacter SignatureHelpTriggerKind = 2
6828	// Signature help was triggered by the cursor moving or by the document content changing.
6829	SigContentChange SignatureHelpTriggerKind = 3
6830	// A symbol kind.
6831	File          SymbolKind = 1
6832	Module        SymbolKind = 2
6833	Namespace     SymbolKind = 3
6834	Package       SymbolKind = 4
6835	Class         SymbolKind = 5
6836	Method        SymbolKind = 6
6837	Property      SymbolKind = 7
6838	Field         SymbolKind = 8
6839	Constructor   SymbolKind = 9
6840	Enum          SymbolKind = 10
6841	Interface     SymbolKind = 11
6842	Function      SymbolKind = 12
6843	Variable      SymbolKind = 13
6844	Constant      SymbolKind = 14
6845	String        SymbolKind = 15
6846	Number        SymbolKind = 16
6847	Boolean       SymbolKind = 17
6848	Array         SymbolKind = 18
6849	Object        SymbolKind = 19
6850	Key           SymbolKind = 20
6851	Null          SymbolKind = 21
6852	EnumMember    SymbolKind = 22
6853	Struct        SymbolKind = 23
6854	Event         SymbolKind = 24
6855	Operator      SymbolKind = 25
6856	TypeParameter SymbolKind = 26
6857	// Symbol tags are extra annotations that tweak the rendering of a symbol.
6858	//
6859	// @since 3.16
6860	// Render a symbol as obsolete, usually using a strike-out.
6861	DeprecatedSymbol SymbolTag = 1
6862	// Represents reasons why a text document is saved.
6863	// Manually triggered, e.g. by the user pressing save, by starting debugging,
6864	// or by an API call.
6865	Manual TextDocumentSaveReason = 1
6866	// Automatic after a delay.
6867	AfterDelay TextDocumentSaveReason = 2
6868	// When the editor lost focus.
6869	FocusOut TextDocumentSaveReason = 3
6870	// Defines how the host (editor) should sync
6871	// document changes to the language server.
6872	// Documents should not be synced at all.
6873	None TextDocumentSyncKind = 0
6874	// Documents are synced by always sending the full content
6875	// of the document.
6876	Full TextDocumentSyncKind = 1
6877	// Documents are synced by sending the full content on open.
6878	// After that only incremental updates to the document are
6879	// send.
6880	Incremental TextDocumentSyncKind = 2
6881	Relative    TokenFormat          = "relative"
6882	// Turn tracing off.
6883	Off TraceValue = "off"
6884	// Trace messages only.
6885	Messages TraceValue = "messages"
6886	// Verbose message tracing.
6887	Verbose TraceValue = "verbose"
6888	// Moniker uniqueness level to define scope of the moniker.
6889	//
6890	// @since 3.16.0
6891	// The moniker is only unique inside a document
6892	Document UniquenessLevel = "document"
6893	// The moniker is unique inside a project for which a dump got created
6894	Project UniquenessLevel = "project"
6895	// The moniker is unique inside the group to which a project belongs
6896	Group UniquenessLevel = "group"
6897	// The moniker is unique inside the moniker scheme.
6898	Scheme UniquenessLevel = "scheme"
6899	// The moniker is globally unique
6900	Global UniquenessLevel = "global"
6901	// Interested in create events.
6902	WatchCreate WatchKind = 1
6903	// Interested in change events
6904	WatchChange WatchKind = 2
6905	// Interested in delete events
6906	WatchDelete WatchKind = 4
6907)