github.com/powerman/golang-tools@v0.1.11-0.20220410185822-5ad214d8d803/internal/lsp/protocol/tsprotocol.go (about)

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