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)
5package protocol
6
7// Code generated (see typescript/README.md) DO NOT EDIT.
8
9import "encoding/json"
10
11/**
12 * The parameters passed via a apply workspace edit request.
13 */
14type 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 */
30type 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 */
52type 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 */
66type 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 */
83type 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 */
95type 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 */
132type 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 */
141type 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 */
159type 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 */
170type 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 */
180type CallHierarchyRegistrationOptions struct {
181	TextDocumentRegistrationOptions
182	CallHierarchyOptions
183	StaticRegistrationOptions
184}
185
186type CancelParams struct {
187	/**
188	 * The request id to cancel.
189	 */
190	ID interface{} /*number | string*/ `json:"id"`
191}
192
193type 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 */
241type 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 */
281type 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 */
319type 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 */
340type CodeActionKind string
341
342/**
343 * Provider options for a [CodeActionRequest](#CodeActionRequest).
344 */
345type 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 */
359type 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 */
383type 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 */
403type 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 */
413type 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 */
424type 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 */
436type 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 */
458type 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
469type 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 */
492type 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 */
515type 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 */
534type 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 */
622type 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 */
638type 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 */
761type 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 */
769type CompletionItemTag float64
770
771/**
772 * Represents a collection of [completion items](#CompletionItem) to be presented
773 * in the editor.
774 */
775type 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 */
789type 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 */
823type 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 */
837type CompletionTriggerKind float64
838
839type ConfigurationClientCapabilities struct {
840	/**
841	 * The workspace client capabilities
842	 */
843	Workspace WorkspaceGn `json:"workspace,omitempty"`
844}
845
846type 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 */
860type ConfigurationParams struct {
861	Items []ConfigurationItem `json:"items"`
862}
863
864/**
865 * Create file operation.
866 */
867type 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 */
886type 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 */
900type Declaration = []Location /*Location | Location[]*/
901
902/**
903 * @since 3.14.0
904 */
905type 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 */
927type DeclarationLink = LocationLink
928
929type DeclarationOptions struct {
930	WorkDoneProgressOptions
931}
932
933type DeclarationParams struct {
934	TextDocumentPositionParams
935	WorkDoneProgressParams
936	PartialResultParams
937}
938
939type 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 */
953type Definition = []Location /*Location | Location[]*/
954
955/**
956 * Client Capabilities for a [DefinitionRequest](#DefinitionRequest).
957 */
958type 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 */
977type DefinitionLink = LocationLink
978
979/**
980 * Server Capabilities for a [DefinitionRequest](#DefinitionRequest).
981 */
982type DefinitionOptions struct {
983	WorkDoneProgressOptions
984}
985
986/**
987 * Parameters for a [DefinitionRequest](#DefinitionRequest).
988 */
989type DefinitionParams struct {
990	TextDocumentPositionParams
991	WorkDoneProgressParams
992	PartialResultParams
993}
994
995/**
996 * Delete file operation
997 */
998type 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 */
1017type 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 */
1032type 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 */
1076type 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 */
1092type 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 */
1106type DiagnosticSeverity float64
1107
1108/**
1109 * The diagnostic tags.
1110 *
1111 * @since 3.15.0
1112 */
1113type DiagnosticTag float64
1114
1115type 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 */
1125type 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 */
1135type 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
1158type 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 */
1170type 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 */
1180type 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 */
1190type 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 */
1200type 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 */
1210type 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 */
1220type 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
1232type 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
1241type DocumentColorOptions struct {
1242	WorkDoneProgressOptions
1243}
1244
1245/**
1246 * Parameters for a [DocumentColorRequest](#DocumentColorRequest).
1247 */
1248type DocumentColorParams struct {
1249	/**
1250	 * The text document.
1251	 */
1252	TextDocument TextDocumentIdentifier `json:"textDocument"`
1253	WorkDoneProgressParams
1254	PartialResultParams
1255}
1256
1257type 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 */
1279type 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 */
1291type 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 */
1301type DocumentFormattingOptions struct {
1302	WorkDoneProgressOptions
1303}
1304
1305/**
1306 * The parameters of a [DocumentFormattingRequest](#DocumentFormattingRequest).
1307 */
1308type 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 */
1325type 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 */
1339type 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 */
1349type DocumentHighlightKind float64
1350
1351/**
1352 * Provider options for a [DocumentHighlightRequest](#DocumentHighlightRequest).
1353 */
1354type DocumentHighlightOptions struct {
1355	WorkDoneProgressOptions
1356}
1357
1358/**
1359 * Parameters for a [DocumentHighlightRequest](#DocumentHighlightRequest).
1360 */
1361type 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 */
1371type 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 */
1400type 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 */
1416type 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 */
1427type 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 */
1439type 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 */
1449type 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 */
1463type 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 */
1485type 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 */
1495type DocumentRangeFormattingOptions struct {
1496	WorkDoneProgressOptions
1497}
1498
1499/**
1500 * The parameters of a [DocumentRangeFormattingRequest](#DocumentRangeFormattingRequest).
1501 */
1502type 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 */
1523type 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 */
1531type 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 */
1577type 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 */
1620type DocumentSymbolOptions struct {
1621	WorkDoneProgressOptions
1622}
1623
1624/**
1625 * Parameters for a [DocumentSymbolRequest](#DocumentSymbolRequest).
1626 */
1627type 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 */
1639type DocumentURI string
1640
1641/**
1642 * The client capabilities of a [ExecuteCommandRequest](#ExecuteCommandRequest).
1643 */
1644type 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 */
1654type 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 */
1665type 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
1677type FailureHandlingKind string
1678
1679/**
1680 * The file event type
1681 */
1682type FileChangeType float64
1683
1684/**
1685 * An event describing a file change.
1686 */
1687type 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
1698type 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 */
1720type 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
1745type 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 */
1767type FoldingRangeKind string
1768
1769type FoldingRangeOptions struct {
1770	WorkDoneProgressOptions
1771}
1772
1773/**
1774 * Parameters for a [FoldingRangeRequest](#FoldingRangeRequest).
1775 */
1776type FoldingRangeParams struct {
1777	/**
1778	 * The text document.
1779	 */
1780	TextDocument TextDocumentIdentifier `json:"textDocument"`
1781	WorkDoneProgressParams
1782	PartialResultParams
1783}
1784
1785type FoldingRangeRegistrationOptions struct {
1786	TextDocumentRegistrationOptions
1787	FoldingRangeOptions
1788	StaticRegistrationOptions
1789}
1790
1791/**
1792 * Value-object describing what options formatting should use.
1793 */
1794type 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 */
1826type 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
1837type 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 */
1852type HoverOptions struct {
1853	WorkDoneProgressOptions
1854}
1855
1856/**
1857 * Parameters for a [HoverRequest](#HoverRequest).
1858 */
1859type HoverParams struct {
1860	TextDocumentPositionParams
1861	WorkDoneProgressParams
1862}
1863
1864/**
1865 * @since 3.6.0
1866 */
1867type 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
1882type ImplementationOptions struct {
1883	WorkDoneProgressOptions
1884}
1885
1886type ImplementationParams struct {
1887	TextDocumentPositionParams
1888	WorkDoneProgressParams
1889	PartialResultParams
1890}
1891
1892type ImplementationRegistrationOptions struct {
1893	TextDocumentRegistrationOptions
1894	ImplementationOptions
1895	StaticRegistrationOptions
1896}
1897
1898/**
1899 * Known error codes for an `InitializeError`;
1900 */
1901type InitializeError float64
1902
1903type InitializeParams = struct {
1904	InnerInitializeParams
1905	WorkspaceFoldersInitializeParams
1906}
1907
1908/**
1909 * The result returned from an initialize request.
1910 */
1911type 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
1933type InitializedParams struct {
1934}
1935
1936/**
1937 * Defines the capabilities provided by the client.
1938 */
1939type 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 */
1961type 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 */
2016type 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 */
2137type 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 */
2156type InsertTextFormat float64
2157
2158/**
2159 * Represents a location inside a resource, such as a line
2160 * inside a text file.
2161 */
2162type 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 */
2171type 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 */
2199type 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
2210type 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 */
2229type 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 */
2255type 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 */
2273type MarkupKind string
2274
2275type 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 */
2285type MessageType float64
2286
2287/**
2288 * Represents a parameter of a callable-signature. A parameter can
2289 * have a label and a doc-comment.
2290 */
2291type 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
2310type 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 */
2328type 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
2347type PrepareRenameParams struct {
2348	TextDocumentPositionParams
2349	WorkDoneProgressParams
2350}
2351
2352type 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
2363type ProgressToken = interface{} /*number | string*/
2364
2365/**
2366 * The publish diagnostic client capabilities.
2367 */
2368type 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 */
2403type 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 */
2433type 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 */
2447type 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 */
2458type ReferenceContext struct {
2459	/**
2460	 * Include the declaration of the current symbol.
2461	 */
2462	IncludeDeclaration bool `json:"includeDeclaration"`
2463}
2464
2465/**
2466 * Reference options.
2467 */
2468type ReferenceOptions struct {
2469	WorkDoneProgressOptions
2470}
2471
2472/**
2473 * Parameters for a [ReferencesRequest](#ReferencesRequest).
2474 */
2475type 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 */
2485type 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
2501type RegistrationParams struct {
2502	Registrations []Registration `json:"registrations"`
2503}
2504
2505type 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 */
2528type 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 */
2551type 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 */
2565type 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 */
2578type 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
2596type ResourceOperation struct {
2597	Kind string `json:"kind"`
2598}
2599
2600type ResourceOperationKind string
2601
2602/**
2603 * Save options.
2604 */
2605type 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 */
2616type 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
2627type 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
2636type SelectionRangeOptions struct {
2637	WorkDoneProgressOptions
2638}
2639
2640/**
2641 * A parameter literal used in selection range requests.
2642 */
2643type 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
2656type SelectionRangeRegistrationOptions struct {
2657	SelectionRangeOptions
2658	TextDocumentRegistrationOptions
2659	StaticRegistrationOptions
2660}
2661
2662/**
2663 * @since 3.16.0 - Proposed state
2664 */
2665type 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 */
2682type 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 */
2693type 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 */
2710type 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 */
2728type 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 */
2742type 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 */
2762type 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 */
2774type 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 */
2790type SemanticTokensRegistrationOptions struct {
2791	TextDocumentRegistrationOptions
2792	SemanticTokensOptions
2793	StaticRegistrationOptions
2794}
2795
2796type 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
2916type SetTraceParams struct {
2917	Value TraceValues `json:"value"`
2918}
2919
2920/**
2921 * The parameters of a notification message.
2922 */
2923type 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
2934type 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 */
2954type 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 */
2974type 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 */
3025type 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 */
3055type 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 */
3075type 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 */
3092type 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 */
3099type 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 */
3128type 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 */
3140type 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 */
3185type SymbolKind float64
3186
3187/**
3188 * Symbol tags are extra annotations that tweak the rendering of a symbol.
3189 * @since 3.16
3190 */
3191type SymbolTag float64
3192
3193/**
3194 * Text document specific client capabilities.
3195 */
3196type 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 */
3310type 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 */
3333type 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 */
3347type 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 */
3358type 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 */
3382type 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 */
3396type 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 */
3407type TextDocumentSaveReason float64
3408
3409type 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 */
3434type TextDocumentSyncKind float64
3435
3436type 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 */
3467type 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
3480type TraceValues = string /*'off' | 'messages' | 'verbose'*/
3481
3482/**
3483 * Since 3.6.0
3484 */
3485type 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
3500type TypeDefinitionOptions struct {
3501	WorkDoneProgressOptions
3502}
3503
3504type TypeDefinitionParams struct {
3505	TextDocumentPositionParams
3506	WorkDoneProgressParams
3507	PartialResultParams
3508}
3509
3510type 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 */
3521type URI = string
3522
3523/**
3524 * General parameters to unregister a request or notification.
3525 */
3526type 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
3538type UnregistrationParams struct {
3539	Unregisterations []Unregistration `json:"unregisterations"`
3540}
3541
3542/**
3543 * An identifier to denote a specific version of a text document.
3544 */
3545type 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
3557type WatchKind float64
3558
3559/**
3560 * The parameters send in a will save text document notification.
3561 */
3562type 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
3573type 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
3607type WorkDoneProgressCancelParams struct {
3608	/**
3609	 * The token to be used to report progress.
3610	 */
3611	Token ProgressToken `json:"token"`
3612}
3613
3614type 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
3629type WorkDoneProgressCreateParams struct {
3630	/**
3631	 * The token to be used to report progress.
3632	 */
3633	Token ProgressToken `json:"token"`
3634}
3635
3636type 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
3645type WorkDoneProgressOptions struct {
3646	WorkDoneProgress bool `json:"workDoneProgress,omitempty"`
3647}
3648
3649type 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
3656type 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 */
3687type 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 */
3721type 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
3741type 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
3762type 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 */
3777type 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
3788type WorkspaceFoldersClientCapabilities struct {
3789	/**
3790	 * The workspace client capabilities
3791	 */
3792	Workspace WorkspaceGn `json:"workspace,omitempty"`
3793}
3794
3795type WorkspaceFoldersInitializeParams struct {
3796	/**
3797	 * The actual configured workspace folders.
3798	 */
3799	WorkspaceFolders []WorkspaceFolder /*WorkspaceFolder[] | null*/ `json:"workspaceFolders"`
3800}
3801
3802type 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 */
3812type 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 */
3850type WorkspaceSymbolOptions struct {
3851	WorkDoneProgressOptions
3852}
3853
3854/**
3855 * The parameters of a [WorkspaceSymbolRequest](#WorkspaceSymbolRequest).
3856 */
3857type 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
3868type 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
3881const (
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
4274type ParamConfiguration struct {
4275	ConfigurationParams
4276	PartialResultParams
4277}
4278type ParamInitialize struct {
4279	InitializeParams
4280	WorkDoneProgressParams
4281}
4282type WorkspaceGn struct {
4283	WorkspaceFolders WorkspaceFoldersGn `json:"workspaceFolders,omitempty"`
4284}
4285type 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}
4302