golang.org/x/tools/gopls@v0.15.3/internal/protocol/tsprotocol.go (about)

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