github.com/jd-ly/tools@v0.5.7/internal/lsp/protocol/tsprotocol.go (about)

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