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