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