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