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