@@ -0,0 +1,6907 @@
1+// Copyright 2023 The Go Authors. All rights reserved.
2+// Use of this source code is governed by a BSD-style
3+// license that can be found in the LICENSE file.
4+
5+// Code generated for LSP. DO NOT EDIT.
6+
7+package protocol
8+
9+// Code generated from protocol/metaModel.json at ref release/protocol/3.17.6-next.9 (hash c94395b5da53729e6dff931293b051009ccaaaa4).
10+// https://github.com/microsoft/vscode-languageserver-node/blob/release/protocol/3.17.6-next.9/protocol/metaModel.json
11+// LSP metaData.version = 3.17.0.
12+
13+import "encoding/json"
14+
15+// created for And
16+type And_RegOpt_textDocument_colorPresentation struct {
17+ WorkDoneProgressOptions
18+ TextDocumentRegistrationOptions
19+}
20+
21+// A special text edit with an additional change annotation.
22+//
23+// @since 3.16.0.
24+//
25+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#annotatedTextEdit
26+type AnnotatedTextEdit struct {
27+ // The actual identifier of the change annotation
28+ AnnotationID *ChangeAnnotationIdentifier `json:"annotationId,omitempty"`
29+ TextEdit
30+}
31+
32+// The parameters passed via an apply workspace edit request.
33+//
34+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#applyWorkspaceEditParams
35+type ApplyWorkspaceEditParams struct {
36+ // An optional label of the workspace edit. This label is
37+ // presented in the user interface for example on an undo
38+ // stack to undo the workspace edit.
39+ Label string `json:"label,omitempty"`
40+ // The edits to apply.
41+ Edit WorkspaceEdit `json:"edit"`
42+ // Additional data about the edit.
43+ //
44+ // @since 3.18.0
45+ // @proposed
46+ Metadata *WorkspaceEditMetadata `json:"metadata,omitempty"`
47+}
48+
49+// The result returned from the apply workspace edit request.
50+//
51+// @since 3.17 renamed from ApplyWorkspaceEditResponse
52+//
53+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#applyWorkspaceEditResult
54+type ApplyWorkspaceEditResult struct {
55+ // Indicates whether the edit was applied or not.
56+ Applied bool `json:"applied"`
57+ // An optional textual description for why the edit was not applied.
58+ // This may be used by the server for diagnostic logging or to provide
59+ // a suitable error for a request that triggered the edit.
60+ FailureReason string `json:"failureReason,omitempty"`
61+ // Depending on the client's failure handling strategy `failedChange` might
62+ // contain the index of the change that failed. This property is only available
63+ // if the client signals a `failureHandlingStrategy` in its client capabilities.
64+ FailedChange uint32 `json:"failedChange,omitempty"`
65+}
66+
67+// A base for all symbol information.
68+//
69+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#baseSymbolInformation
70+type BaseSymbolInformation struct {
71+ // The name of this symbol.
72+ Name string `json:"name"`
73+ // The kind of this symbol.
74+ Kind SymbolKind `json:"kind"`
75+ // Tags for this symbol.
76+ //
77+ // @since 3.16.0
78+ Tags []SymbolTag `json:"tags,omitempty"`
79+ // The name of the symbol containing this symbol. This information is for
80+ // user interface purposes (e.g. to render a qualifier in the user interface
81+ // if necessary). It can't be used to re-infer a hierarchy for the document
82+ // symbols.
83+ ContainerName string `json:"containerName,omitempty"`
84+}
85+
86+// @since 3.16.0
87+//
88+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#callHierarchyClientCapabilities
89+type CallHierarchyClientCapabilities struct {
90+ // Whether implementation supports dynamic registration. If this is set to `true`
91+ // the client supports the new `(TextDocumentRegistrationOptions & StaticRegistrationOptions)`
92+ // return value for the corresponding server capability as well.
93+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
94+}
95+
96+// Represents an incoming call, e.g. a caller of a method or constructor.
97+//
98+// @since 3.16.0
99+//
100+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#callHierarchyIncomingCall
101+type CallHierarchyIncomingCall struct {
102+ // The item that makes the call.
103+ From CallHierarchyItem `json:"from"`
104+ // The ranges at which the calls appear. This is relative to the caller
105+ // denoted by {@link CallHierarchyIncomingCall.from `this.from`}.
106+ FromRanges []Range `json:"fromRanges"`
107+}
108+
109+// The parameter of a `callHierarchy/incomingCalls` request.
110+//
111+// @since 3.16.0
112+//
113+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#callHierarchyIncomingCallsParams
114+type CallHierarchyIncomingCallsParams struct {
115+ Item CallHierarchyItem `json:"item"`
116+ WorkDoneProgressParams
117+ PartialResultParams
118+}
119+
120+// Represents programming constructs like functions or constructors in the context
121+// of call hierarchy.
122+//
123+// @since 3.16.0
124+//
125+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#callHierarchyItem
126+type CallHierarchyItem struct {
127+ // The name of this item.
128+ Name string `json:"name"`
129+ // The kind of this item.
130+ Kind SymbolKind `json:"kind"`
131+ // Tags for this item.
132+ Tags []SymbolTag `json:"tags,omitempty"`
133+ // More detail for this item, e.g. the signature of a function.
134+ Detail string `json:"detail,omitempty"`
135+ // The resource identifier of this item.
136+ URI DocumentUri `json:"uri"`
137+ // The range enclosing this symbol not including leading/trailing whitespace but everything else, e.g. comments and code.
138+ Range Range `json:"range"`
139+ // The range that should be selected and revealed when this symbol is being picked, e.g. the name of a function.
140+ // Must be contained by the {@link CallHierarchyItem.range `range`}.
141+ SelectionRange Range `json:"selectionRange"`
142+ // A data entry field that is preserved between a call hierarchy prepare and
143+ // incoming calls or outgoing calls requests.
144+ Data interface{} `json:"data,omitempty"`
145+}
146+
147+// Call hierarchy options used during static registration.
148+//
149+// @since 3.16.0
150+//
151+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#callHierarchyOptions
152+type CallHierarchyOptions struct {
153+ WorkDoneProgressOptions
154+}
155+
156+// Represents an outgoing call, e.g. calling a getter from a method or a method from a constructor etc.
157+//
158+// @since 3.16.0
159+//
160+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#callHierarchyOutgoingCall
161+type CallHierarchyOutgoingCall struct {
162+ // The item that is called.
163+ To CallHierarchyItem `json:"to"`
164+ // The range at which this item is called. This is the range relative to the caller, e.g the item
165+ // passed to {@link CallHierarchyItemProvider.provideCallHierarchyOutgoingCalls `provideCallHierarchyOutgoingCalls`}
166+ // and not {@link CallHierarchyOutgoingCall.to `this.to`}.
167+ FromRanges []Range `json:"fromRanges"`
168+}
169+
170+// The parameter of a `callHierarchy/outgoingCalls` request.
171+//
172+// @since 3.16.0
173+//
174+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#callHierarchyOutgoingCallsParams
175+type CallHierarchyOutgoingCallsParams struct {
176+ Item CallHierarchyItem `json:"item"`
177+ WorkDoneProgressParams
178+ PartialResultParams
179+}
180+
181+// The parameter of a `textDocument/prepareCallHierarchy` request.
182+//
183+// @since 3.16.0
184+//
185+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#callHierarchyPrepareParams
186+type CallHierarchyPrepareParams struct {
187+ TextDocumentPositionParams
188+ WorkDoneProgressParams
189+}
190+
191+// Call hierarchy options used during static or dynamic registration.
192+//
193+// @since 3.16.0
194+//
195+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#callHierarchyRegistrationOptions
196+type CallHierarchyRegistrationOptions struct {
197+ TextDocumentRegistrationOptions
198+ CallHierarchyOptions
199+ StaticRegistrationOptions
200+}
201+
202+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#cancelParams
203+type CancelParams struct {
204+ // The request id to cancel.
205+ ID interface{} `json:"id"`
206+}
207+
208+// Additional information that describes document changes.
209+//
210+// @since 3.16.0
211+//
212+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#changeAnnotation
213+type ChangeAnnotation struct {
214+ // A human-readable string describing the actual change. The string
215+ // is rendered prominent in the user interface.
216+ Label string `json:"label"`
217+ // A flag which indicates that user confirmation is needed
218+ // before applying the change.
219+ NeedsConfirmation bool `json:"needsConfirmation,omitempty"`
220+ // A human-readable string which is rendered less prominent in
221+ // the user interface.
222+ Description string `json:"description,omitempty"`
223+}
224+
225+// An identifier to refer to a change annotation stored with a workspace edit.
226+//
227+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#changeAnnotationIdentifier
228+type ChangeAnnotationIdentifier = string // (alias)
229+// @since 3.18.0
230+//
231+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#changeAnnotationsSupportOptions
232+type ChangeAnnotationsSupportOptions struct {
233+ // Whether the client groups edits with equal labels into tree nodes,
234+ // for instance all edits labelled with "Changes in Strings" would
235+ // be a tree node.
236+ GroupsOnLabel bool `json:"groupsOnLabel,omitempty"`
237+}
238+
239+// Defines the capabilities provided by the client.
240+//
241+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientCapabilities
242+type ClientCapabilities struct {
243+ // Workspace specific client capabilities.
244+ Workspace WorkspaceClientCapabilities `json:"workspace,omitempty"`
245+ // Text document specific client capabilities.
246+ TextDocument TextDocumentClientCapabilities `json:"textDocument,omitempty"`
247+ // Capabilities specific to the notebook document support.
248+ //
249+ // @since 3.17.0
250+ NotebookDocument *NotebookDocumentClientCapabilities `json:"notebookDocument,omitempty"`
251+ // Window specific client capabilities.
252+ Window WindowClientCapabilities `json:"window,omitempty"`
253+ // General client capabilities.
254+ //
255+ // @since 3.16.0
256+ General *GeneralClientCapabilities `json:"general,omitempty"`
257+ // Experimental client capabilities.
258+ Experimental interface{} `json:"experimental,omitempty"`
259+}
260+
261+// @since 3.18.0
262+//
263+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientCodeActionKindOptions
264+type ClientCodeActionKindOptions struct {
265+ // The code action kind values the client supports. When this
266+ // property exists the client also guarantees that it will
267+ // handle values outside its set gracefully and falls back
268+ // to a default value when unknown.
269+ ValueSet []CodeActionKind `json:"valueSet"`
270+}
271+
272+// @since 3.18.0
273+//
274+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientCodeActionLiteralOptions
275+type ClientCodeActionLiteralOptions struct {
276+ // The code action kind is support with the following value
277+ // set.
278+ CodeActionKind ClientCodeActionKindOptions `json:"codeActionKind"`
279+}
280+
281+// @since 3.18.0
282+//
283+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientCodeActionResolveOptions
284+type ClientCodeActionResolveOptions struct {
285+ // The properties that a client can resolve lazily.
286+ Properties []string `json:"properties"`
287+}
288+
289+// @since 3.18.0
290+//
291+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientCodeLensResolveOptions
292+type ClientCodeLensResolveOptions struct {
293+ // The properties that a client can resolve lazily.
294+ Properties []string `json:"properties"`
295+}
296+
297+// @since 3.18.0
298+//
299+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientCompletionItemInsertTextModeOptions
300+type ClientCompletionItemInsertTextModeOptions struct {
301+ ValueSet []InsertTextMode `json:"valueSet"`
302+}
303+
304+// @since 3.18.0
305+//
306+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientCompletionItemOptions
307+type ClientCompletionItemOptions struct {
308+ // Client supports snippets as insert text.
309+ //
310+ // A snippet can define tab stops and placeholders with `$1`, `$2`
311+ // and `${3:foo}`. `$0` defines the final tab stop, it defaults to
312+ // the end of the snippet. Placeholders with equal identifiers are linked,
313+ // that is typing in one will update others too.
314+ SnippetSupport bool `json:"snippetSupport,omitempty"`
315+ // Client supports commit characters on a completion item.
316+ CommitCharactersSupport bool `json:"commitCharactersSupport,omitempty"`
317+ // Client supports the following content formats for the documentation
318+ // property. The order describes the preferred format of the client.
319+ DocumentationFormat []MarkupKind `json:"documentationFormat,omitempty"`
320+ // Client supports the deprecated property on a completion item.
321+ DeprecatedSupport bool `json:"deprecatedSupport,omitempty"`
322+ // Client supports the preselect property on a completion item.
323+ PreselectSupport bool `json:"preselectSupport,omitempty"`
324+ // Client supports the tag property on a completion item. Clients supporting
325+ // tags have to handle unknown tags gracefully. Clients especially need to
326+ // preserve unknown tags when sending a completion item back to the server in
327+ // a resolve call.
328+ //
329+ // @since 3.15.0
330+ TagSupport *CompletionItemTagOptions `json:"tagSupport,omitempty"`
331+ // Client support insert replace edit to control different behavior if a
332+ // completion item is inserted in the text or should replace text.
333+ //
334+ // @since 3.16.0
335+ InsertReplaceSupport bool `json:"insertReplaceSupport,omitempty"`
336+ // Indicates which properties a client can resolve lazily on a completion
337+ // item. Before version 3.16.0 only the predefined properties `documentation`
338+ // and `details` could be resolved lazily.
339+ //
340+ // @since 3.16.0
341+ ResolveSupport *ClientCompletionItemResolveOptions `json:"resolveSupport,omitempty"`
342+ // The client supports the `insertTextMode` property on
343+ // a completion item to override the whitespace handling mode
344+ // as defined by the client (see `insertTextMode`).
345+ //
346+ // @since 3.16.0
347+ InsertTextModeSupport *ClientCompletionItemInsertTextModeOptions `json:"insertTextModeSupport,omitempty"`
348+ // The client has support for completion item label
349+ // details (see also `CompletionItemLabelDetails`).
350+ //
351+ // @since 3.17.0
352+ LabelDetailsSupport bool `json:"labelDetailsSupport,omitempty"`
353+}
354+
355+// @since 3.18.0
356+//
357+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientCompletionItemOptionsKind
358+type ClientCompletionItemOptionsKind struct {
359+ // The completion item kind values the client supports. When this
360+ // property exists the client also guarantees that it will
361+ // handle values outside its set gracefully and falls back
362+ // to a default value when unknown.
363+ //
364+ // If this property is not present the client only supports
365+ // the completion items kinds from `Text` to `Reference` as defined in
366+ // the initial version of the protocol.
367+ ValueSet []CompletionItemKind `json:"valueSet,omitempty"`
368+}
369+
370+// @since 3.18.0
371+//
372+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientCompletionItemResolveOptions
373+type ClientCompletionItemResolveOptions struct {
374+ // The properties that a client can resolve lazily.
375+ Properties []string `json:"properties"`
376+}
377+
378+// @since 3.18.0
379+//
380+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientDiagnosticsTagOptions
381+type ClientDiagnosticsTagOptions struct {
382+ // The tags supported by the client.
383+ ValueSet []DiagnosticTag `json:"valueSet"`
384+}
385+
386+// @since 3.18.0
387+//
388+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientFoldingRangeKindOptions
389+type ClientFoldingRangeKindOptions struct {
390+ // The folding range kind values the client supports. When this
391+ // property exists the client also guarantees that it will
392+ // handle values outside its set gracefully and falls back
393+ // to a default value when unknown.
394+ ValueSet []FoldingRangeKind `json:"valueSet,omitempty"`
395+}
396+
397+// @since 3.18.0
398+//
399+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientFoldingRangeOptions
400+type ClientFoldingRangeOptions struct {
401+ // If set, the client signals that it supports setting collapsedText on
402+ // folding ranges to display custom labels instead of the default text.
403+ //
404+ // @since 3.17.0
405+ CollapsedText bool `json:"collapsedText,omitempty"`
406+}
407+
408+// Information about the client
409+//
410+// @since 3.15.0
411+// @since 3.18.0 ClientInfo type name added.
412+//
413+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientInfo
414+type ClientInfo struct {
415+ // The name of the client as defined by the client.
416+ Name string `json:"name"`
417+ // The client's version as defined by the client.
418+ Version string `json:"version,omitempty"`
419+}
420+
421+// @since 3.18.0
422+//
423+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientInlayHintResolveOptions
424+type ClientInlayHintResolveOptions struct {
425+ // The properties that a client can resolve lazily.
426+ Properties []string `json:"properties"`
427+}
428+
429+// @since 3.18.0
430+//
431+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientSemanticTokensRequestFullDelta
432+type ClientSemanticTokensRequestFullDelta struct {
433+ // The client will send the `textDocument/semanticTokens/full/delta` request if
434+ // the server provides a corresponding handler.
435+ Delta bool `json:"delta,omitempty"`
436+}
437+
438+// @since 3.18.0
439+//
440+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientSemanticTokensRequestOptions
441+type ClientSemanticTokensRequestOptions struct {
442+ // The client will send the `textDocument/semanticTokens/range` request if
443+ // the server provides a corresponding handler.
444+ Range *Or_ClientSemanticTokensRequestOptions_range `json:"range,omitempty"`
445+ // The client will send the `textDocument/semanticTokens/full` request if
446+ // the server provides a corresponding handler.
447+ Full *Or_ClientSemanticTokensRequestOptions_full `json:"full,omitempty"`
448+}
449+
450+// @since 3.18.0
451+//
452+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientShowMessageActionItemOptions
453+type ClientShowMessageActionItemOptions struct {
454+ // Whether the client supports additional attributes which
455+ // are preserved and send back to the server in the
456+ // request's response.
457+ AdditionalPropertiesSupport bool `json:"additionalPropertiesSupport,omitempty"`
458+}
459+
460+// @since 3.18.0
461+//
462+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientSignatureInformationOptions
463+type ClientSignatureInformationOptions struct {
464+ // Client supports the following content formats for the documentation
465+ // property. The order describes the preferred format of the client.
466+ DocumentationFormat []MarkupKind `json:"documentationFormat,omitempty"`
467+ // Client capabilities specific to parameter information.
468+ ParameterInformation *ClientSignatureParameterInformationOptions `json:"parameterInformation,omitempty"`
469+ // The client supports the `activeParameter` property on `SignatureInformation`
470+ // literal.
471+ //
472+ // @since 3.16.0
473+ ActiveParameterSupport bool `json:"activeParameterSupport,omitempty"`
474+ // The client supports the `activeParameter` property on
475+ // `SignatureHelp`/`SignatureInformation` being set to `null` to
476+ // indicate that no parameter should be active.
477+ //
478+ // @since 3.18.0
479+ // @proposed
480+ NoActiveParameterSupport bool `json:"noActiveParameterSupport,omitempty"`
481+}
482+
483+// @since 3.18.0
484+//
485+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientSignatureParameterInformationOptions
486+type ClientSignatureParameterInformationOptions struct {
487+ // The client supports processing label offsets instead of a
488+ // simple label string.
489+ //
490+ // @since 3.14.0
491+ LabelOffsetSupport bool `json:"labelOffsetSupport,omitempty"`
492+}
493+
494+// @since 3.18.0
495+//
496+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientSymbolKindOptions
497+type ClientSymbolKindOptions struct {
498+ // The symbol kind values the client supports. When this
499+ // property exists the client also guarantees that it will
500+ // handle values outside its set gracefully and falls back
501+ // to a default value when unknown.
502+ //
503+ // If this property is not present the client only supports
504+ // the symbol kinds from `File` to `Array` as defined in
505+ // the initial version of the protocol.
506+ ValueSet []SymbolKind `json:"valueSet,omitempty"`
507+}
508+
509+// @since 3.18.0
510+//
511+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientSymbolResolveOptions
512+type ClientSymbolResolveOptions struct {
513+ // The properties that a client can resolve lazily. Usually
514+ // `location.range`
515+ Properties []string `json:"properties"`
516+}
517+
518+// @since 3.18.0
519+//
520+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientSymbolTagOptions
521+type ClientSymbolTagOptions struct {
522+ // The tags supported by the client.
523+ ValueSet []SymbolTag `json:"valueSet"`
524+}
525+
526+// A code action represents a change that can be performed in code, e.g. to fix a problem or
527+// to refactor code.
528+//
529+// A CodeAction must set either `edit` and/or a `command`. If both are supplied, the `edit` is applied first, then the `command` is executed.
530+//
531+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeAction
532+type CodeAction struct {
533+ // A short, human-readable, title for this code action.
534+ Title string `json:"title"`
535+ // The kind of the code action.
536+ //
537+ // Used to filter code actions.
538+ Kind CodeActionKind `json:"kind,omitempty"`
539+ // The diagnostics that this code action resolves.
540+ Diagnostics []Diagnostic `json:"diagnostics,omitempty"`
541+ // Marks this as a preferred action. Preferred actions are used by the `auto fix` command and can be targeted
542+ // by keybindings.
543+ //
544+ // A quick fix should be marked preferred if it properly addresses the underlying error.
545+ // A refactoring should be marked preferred if it is the most reasonable choice of actions to take.
546+ //
547+ // @since 3.15.0
548+ IsPreferred bool `json:"isPreferred,omitempty"`
549+ // Marks that the code action cannot currently be applied.
550+ //
551+ // Clients should follow the following guidelines regarding disabled code actions:
552+ //
553+ // - Disabled code actions are not shown in automatic [lightbulbs](https://code.visualstudio.com/docs/editor/editingevolved#_code-action)
554+ // code action menus.
555+ //
556+ // - Disabled actions are shown as faded out in the code action menu when the user requests a more specific type
557+ // of code action, such as refactorings.
558+ //
559+ // - If the user has a [keybinding](https://code.visualstudio.com/docs/editor/refactoring#_keybindings-for-code-actions)
560+ // that auto applies a code action and only disabled code actions are returned, the client should show the user an
561+ // error message with `reason` in the editor.
562+ //
563+ // @since 3.16.0
564+ Disabled *CodeActionDisabled `json:"disabled,omitempty"`
565+ // The workspace edit this code action performs.
566+ Edit *WorkspaceEdit `json:"edit,omitempty"`
567+ // A command this code action executes. If a code action
568+ // provides an edit and a command, first the edit is
569+ // executed and then the command.
570+ Command *Command `json:"command,omitempty"`
571+ // A data entry field that is preserved on a code action between
572+ // a `textDocument/codeAction` and a `codeAction/resolve` request.
573+ //
574+ // @since 3.16.0
575+ Data *json.RawMessage `json:"data,omitempty"`
576+}
577+
578+// The Client Capabilities of a {@link CodeActionRequest}.
579+//
580+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeActionClientCapabilities
581+type CodeActionClientCapabilities struct {
582+ // Whether code action supports dynamic registration.
583+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
584+ // The client support code action literals of type `CodeAction` as a valid
585+ // response of the `textDocument/codeAction` request. If the property is not
586+ // set the request can only return `Command` literals.
587+ //
588+ // @since 3.8.0
589+ CodeActionLiteralSupport ClientCodeActionLiteralOptions `json:"codeActionLiteralSupport,omitempty"`
590+ // Whether code action supports the `isPreferred` property.
591+ //
592+ // @since 3.15.0
593+ IsPreferredSupport bool `json:"isPreferredSupport,omitempty"`
594+ // Whether code action supports the `disabled` property.
595+ //
596+ // @since 3.16.0
597+ DisabledSupport bool `json:"disabledSupport,omitempty"`
598+ // Whether code action supports the `data` property which is
599+ // preserved between a `textDocument/codeAction` and a
600+ // `codeAction/resolve` request.
601+ //
602+ // @since 3.16.0
603+ DataSupport bool `json:"dataSupport,omitempty"`
604+ // Whether the client supports resolving additional code action
605+ // properties via a separate `codeAction/resolve` request.
606+ //
607+ // @since 3.16.0
608+ ResolveSupport *ClientCodeActionResolveOptions `json:"resolveSupport,omitempty"`
609+ // Whether the client honors the change annotations in
610+ // text edits and resource operations returned via the
611+ // `CodeAction#edit` property by for example presenting
612+ // the workspace edit in the user interface and asking
613+ // for confirmation.
614+ //
615+ // @since 3.16.0
616+ HonorsChangeAnnotations bool `json:"honorsChangeAnnotations,omitempty"`
617+ // Whether the client supports documentation for a class of
618+ // code actions.
619+ //
620+ // @since 3.18.0
621+ // @proposed
622+ DocumentationSupport bool `json:"documentationSupport,omitempty"`
623+}
624+
625+// Contains additional diagnostic information about the context in which
626+// a {@link CodeActionProvider.provideCodeActions code action} is run.
627+//
628+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeActionContext
629+type CodeActionContext struct {
630+ // An array of diagnostics known on the client side overlapping the range provided to the
631+ // `textDocument/codeAction` request. They are provided so that the server knows which
632+ // errors are currently presented to the user for the given range. There is no guarantee
633+ // that these accurately reflect the error state of the resource. The primary parameter
634+ // to compute code actions is the provided range.
635+ Diagnostics []Diagnostic `json:"diagnostics"`
636+ // Requested kind of actions to return.
637+ //
638+ // Actions not of this kind are filtered out by the client before being shown. So servers
639+ // can omit computing them.
640+ Only []CodeActionKind `json:"only,omitempty"`
641+ // The reason why code actions were requested.
642+ //
643+ // @since 3.17.0
644+ TriggerKind *CodeActionTriggerKind `json:"triggerKind,omitempty"`
645+}
646+
647+// Captures why the code action is currently disabled.
648+//
649+// @since 3.18.0
650+//
651+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeActionDisabled
652+type CodeActionDisabled struct {
653+ // Human readable description of why the code action is currently disabled.
654+ //
655+ // This is displayed in the code actions UI.
656+ Reason string `json:"reason"`
657+}
658+
659+// A set of predefined code action kinds
660+type CodeActionKind string
661+
662+// Documentation for a class of code actions.
663+//
664+// @since 3.18.0
665+// @proposed
666+//
667+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeActionKindDocumentation
668+type CodeActionKindDocumentation struct {
669+ // The kind of the code action being documented.
670+ //
671+ // If the kind is generic, such as `CodeActionKind.Refactor`, the documentation will be shown whenever any
672+ // refactorings are returned. If the kind if more specific, such as `CodeActionKind.RefactorExtract`, the
673+ // documentation will only be shown when extract refactoring code actions are returned.
674+ Kind CodeActionKind `json:"kind"`
675+ // Command that is ued to display the documentation to the user.
676+ //
677+ // The title of this documentation code action is taken from {@linkcode Command.title}
678+ Command Command `json:"command"`
679+}
680+
681+// Provider options for a {@link CodeActionRequest}.
682+//
683+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeActionOptions
684+type CodeActionOptions struct {
685+ // CodeActionKinds that this server may return.
686+ //
687+ // The list of kinds may be generic, such as `CodeActionKind.Refactor`, or the server
688+ // may list out every specific kind they provide.
689+ CodeActionKinds []CodeActionKind `json:"codeActionKinds,omitempty"`
690+ // Static documentation for a class of code actions.
691+ //
692+ // Documentation from the provider should be shown in the code actions menu if either:
693+ //
694+ //
695+ // - Code actions of `kind` are requested by the editor. In this case, the editor will show the documentation that
696+ // most closely matches the requested code action kind. For example, if a provider has documentation for
697+ // both `Refactor` and `RefactorExtract`, when the user requests code actions for `RefactorExtract`,
698+ // the editor will use the documentation for `RefactorExtract` instead of the documentation for `Refactor`.
699+ //
700+ //
701+ // - Any code actions of `kind` are returned by the provider.
702+ //
703+ // At most one documentation entry should be shown per provider.
704+ //
705+ // @since 3.18.0
706+ // @proposed
707+ Documentation []CodeActionKindDocumentation `json:"documentation,omitempty"`
708+ // The server provides support to resolve additional
709+ // information for a code action.
710+ //
711+ // @since 3.16.0
712+ ResolveProvider bool `json:"resolveProvider,omitempty"`
713+ WorkDoneProgressOptions
714+}
715+
716+// The parameters of a {@link CodeActionRequest}.
717+//
718+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeActionParams
719+type CodeActionParams struct {
720+ // The document in which the command was invoked.
721+ TextDocument TextDocumentIdentifier `json:"textDocument"`
722+ // The range for which the command was invoked.
723+ Range Range `json:"range"`
724+ // Context carrying additional information.
725+ Context CodeActionContext `json:"context"`
726+ WorkDoneProgressParams
727+ PartialResultParams
728+}
729+
730+// Registration options for a {@link CodeActionRequest}.
731+//
732+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeActionRegistrationOptions
733+type CodeActionRegistrationOptions struct {
734+ TextDocumentRegistrationOptions
735+ CodeActionOptions
736+}
737+
738+// The reason why code actions were requested.
739+//
740+// @since 3.17.0
741+type CodeActionTriggerKind uint32
742+
743+// Structure to capture a description for an error code.
744+//
745+// @since 3.16.0
746+//
747+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeDescription
748+type CodeDescription struct {
749+ // An URI to open with more information about the diagnostic error.
750+ Href URI `json:"href"`
751+}
752+
753+// A code lens represents a {@link Command command} that should be shown along with
754+// source text, like the number of references, a way to run tests, etc.
755+//
756+// A code lens is _unresolved_ when no command is associated to it. For performance
757+// reasons the creation of a code lens and resolving should be done in two stages.
758+//
759+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeLens
760+type CodeLens struct {
761+ // The range in which this code lens is valid. Should only span a single line.
762+ Range Range `json:"range"`
763+ // The command this code lens represents.
764+ Command *Command `json:"command,omitempty"`
765+ // A data entry field that is preserved on a code lens item between
766+ // a {@link CodeLensRequest} and a {@link CodeLensResolveRequest}
767+ Data interface{} `json:"data,omitempty"`
768+}
769+
770+// The client capabilities of a {@link CodeLensRequest}.
771+//
772+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeLensClientCapabilities
773+type CodeLensClientCapabilities struct {
774+ // Whether code lens supports dynamic registration.
775+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
776+ // Whether the client supports resolving additional code lens
777+ // properties via a separate `codeLens/resolve` request.
778+ //
779+ // @since 3.18.0
780+ ResolveSupport *ClientCodeLensResolveOptions `json:"resolveSupport,omitempty"`
781+}
782+
783+// Code Lens provider options of a {@link CodeLensRequest}.
784+//
785+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeLensOptions
786+type CodeLensOptions struct {
787+ // Code lens has a resolve provider as well.
788+ ResolveProvider bool `json:"resolveProvider,omitempty"`
789+ WorkDoneProgressOptions
790+}
791+
792+// The parameters of a {@link CodeLensRequest}.
793+//
794+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeLensParams
795+type CodeLensParams struct {
796+ // The document to request code lens for.
797+ TextDocument TextDocumentIdentifier `json:"textDocument"`
798+ WorkDoneProgressParams
799+ PartialResultParams
800+}
801+
802+// Registration options for a {@link CodeLensRequest}.
803+//
804+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeLensRegistrationOptions
805+type CodeLensRegistrationOptions struct {
806+ TextDocumentRegistrationOptions
807+ CodeLensOptions
808+}
809+
810+// @since 3.16.0
811+//
812+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeLensWorkspaceClientCapabilities
813+type CodeLensWorkspaceClientCapabilities struct {
814+ // Whether the client implementation supports a refresh request sent from the
815+ // server to the client.
816+ //
817+ // Note that this event is global and will force the client to refresh all
818+ // code lenses currently shown. It should be used with absolute care and is
819+ // useful for situation where a server for example detect a project wide
820+ // change that requires such a calculation.
821+ RefreshSupport bool `json:"refreshSupport,omitempty"`
822+}
823+
824+// Represents a color in RGBA space.
825+//
826+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#color
827+type Color struct {
828+ // The red component of this color in the range [0-1].
829+ Red float64 `json:"red"`
830+ // The green component of this color in the range [0-1].
831+ Green float64 `json:"green"`
832+ // The blue component of this color in the range [0-1].
833+ Blue float64 `json:"blue"`
834+ // The alpha component of this color in the range [0-1].
835+ Alpha float64 `json:"alpha"`
836+}
837+
838+// Represents a color range from a document.
839+//
840+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#colorInformation
841+type ColorInformation struct {
842+ // The range in the document where this color appears.
843+ Range Range `json:"range"`
844+ // The actual color value for this color range.
845+ Color Color `json:"color"`
846+}
847+
848+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#colorPresentation
849+type ColorPresentation struct {
850+ // The label of this color presentation. It will be shown on the color
851+ // picker header. By default this is also the text that is inserted when selecting
852+ // this color presentation.
853+ Label string `json:"label"`
854+ // An {@link TextEdit edit} which is applied to a document when selecting
855+ // this presentation for the color. When `falsy` the {@link ColorPresentation.label label}
856+ // is used.
857+ TextEdit *TextEdit `json:"textEdit,omitempty"`
858+ // An optional array of additional {@link TextEdit text edits} that are applied when
859+ // selecting this color presentation. Edits must not overlap with the main {@link ColorPresentation.textEdit edit} nor with themselves.
860+ AdditionalTextEdits []TextEdit `json:"additionalTextEdits,omitempty"`
861+}
862+
863+// Parameters for a {@link ColorPresentationRequest}.
864+//
865+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#colorPresentationParams
866+type ColorPresentationParams struct {
867+ // The text document.
868+ TextDocument TextDocumentIdentifier `json:"textDocument"`
869+ // The color to request presentations for.
870+ Color Color `json:"color"`
871+ // The range where the color would be inserted. Serves as a context.
872+ Range Range `json:"range"`
873+ WorkDoneProgressParams
874+ PartialResultParams
875+}
876+
877+// Represents a reference to a command. Provides a title which
878+// will be used to represent a command in the UI and, optionally,
879+// an array of arguments which will be passed to the command handler
880+// function when invoked.
881+//
882+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#command
883+type Command struct {
884+ // Title of the command, like `save`.
885+ Title string `json:"title"`
886+ // An optional tooltip.
887+ //
888+ // @since 3.18.0
889+ // @proposed
890+ Tooltip string `json:"tooltip,omitempty"`
891+ // The identifier of the actual command handler.
892+ Command string `json:"command"`
893+ // Arguments that the command handler should be
894+ // invoked with.
895+ Arguments []json.RawMessage `json:"arguments,omitempty"`
896+}
897+
898+// Completion client capabilities
899+//
900+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionClientCapabilities
901+type CompletionClientCapabilities struct {
902+ // Whether completion supports dynamic registration.
903+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
904+ // The client supports the following `CompletionItem` specific
905+ // capabilities.
906+ CompletionItem ClientCompletionItemOptions `json:"completionItem,omitempty"`
907+ CompletionItemKind *ClientCompletionItemOptionsKind `json:"completionItemKind,omitempty"`
908+ // Defines how the client handles whitespace and indentation
909+ // when accepting a completion item that uses multi line
910+ // text in either `insertText` or `textEdit`.
911+ //
912+ // @since 3.17.0
913+ InsertTextMode InsertTextMode `json:"insertTextMode,omitempty"`
914+ // The client supports to send additional context information for a
915+ // `textDocument/completion` request.
916+ ContextSupport bool `json:"contextSupport,omitempty"`
917+ // The client supports the following `CompletionList` specific
918+ // capabilities.
919+ //
920+ // @since 3.17.0
921+ CompletionList *CompletionListCapabilities `json:"completionList,omitempty"`
922+}
923+
924+// Contains additional information about the context in which a completion request is triggered.
925+//
926+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionContext
927+type CompletionContext struct {
928+ // How the completion was triggered.
929+ TriggerKind CompletionTriggerKind `json:"triggerKind"`
930+ // The trigger character (a single character) that has trigger code complete.
931+ // Is undefined if `triggerKind !== CompletionTriggerKind.TriggerCharacter`
932+ TriggerCharacter string `json:"triggerCharacter,omitempty"`
933+}
934+
935+// A completion item represents a text snippet that is
936+// proposed to complete text that is being typed.
937+//
938+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionItem
939+type CompletionItem struct {
940+ // The label of this completion item.
941+ //
942+ // The label property is also by default the text that
943+ // is inserted when selecting this completion.
944+ //
945+ // If label details are provided the label itself should
946+ // be an unqualified name of the completion item.
947+ Label string `json:"label"`
948+ // Additional details for the label
949+ //
950+ // @since 3.17.0
951+ LabelDetails *CompletionItemLabelDetails `json:"labelDetails,omitempty"`
952+ // The kind of this completion item. Based of the kind
953+ // an icon is chosen by the editor.
954+ Kind CompletionItemKind `json:"kind,omitempty"`
955+ // Tags for this completion item.
956+ //
957+ // @since 3.15.0
958+ Tags []CompletionItemTag `json:"tags,omitempty"`
959+ // A human-readable string with additional information
960+ // about this item, like type or symbol information.
961+ Detail string `json:"detail,omitempty"`
962+ // A human-readable string that represents a doc-comment.
963+ Documentation *Or_CompletionItem_documentation `json:"documentation,omitempty"`
964+ // Indicates if this item is deprecated.
965+ // @deprecated Use `tags` instead.
966+ Deprecated bool `json:"deprecated,omitempty"`
967+ // Select this item when showing.
968+ //
969+ // *Note* that only one completion item can be selected and that the
970+ // tool / client decides which item that is. The rule is that the *first*
971+ // item of those that match best is selected.
972+ Preselect bool `json:"preselect,omitempty"`
973+ // A string that should be used when comparing this item
974+ // with other items. When `falsy` the {@link CompletionItem.label label}
975+ // is used.
976+ SortText string `json:"sortText,omitempty"`
977+ // A string that should be used when filtering a set of
978+ // completion items. When `falsy` the {@link CompletionItem.label label}
979+ // is used.
980+ FilterText string `json:"filterText,omitempty"`
981+ // A string that should be inserted into a document when selecting
982+ // this completion. When `falsy` the {@link CompletionItem.label label}
983+ // is used.
984+ //
985+ // The `insertText` is subject to interpretation by the client side.
986+ // Some tools might not take the string literally. For example
987+ // VS Code when code complete is requested in this example
988+ // `con<cursor position>` and a completion item with an `insertText` of
989+ // `console` is provided it will only insert `sole`. Therefore it is
990+ // recommended to use `textEdit` instead since it avoids additional client
991+ // side interpretation.
992+ InsertText string `json:"insertText,omitempty"`
993+ // The format of the insert text. The format applies to both the
994+ // `insertText` property and the `newText` property of a provided
995+ // `textEdit`. If omitted defaults to `InsertTextFormat.PlainText`.
996+ //
997+ // Please note that the insertTextFormat doesn't apply to
998+ // `additionalTextEdits`.
999+ InsertTextFormat *InsertTextFormat `json:"insertTextFormat,omitempty"`
1000+ // How whitespace and indentation is handled during completion
1001+ // item insertion. If not provided the clients default value depends on
1002+ // the `textDocument.completion.insertTextMode` client capability.
1003+ //
1004+ // @since 3.16.0
1005+ InsertTextMode *InsertTextMode `json:"insertTextMode,omitempty"`
1006+ // An {@link TextEdit edit} which is applied to a document when selecting
1007+ // this completion. When an edit is provided the value of
1008+ // {@link CompletionItem.insertText insertText} is ignored.
1009+ //
1010+ // Most editors support two different operations when accepting a completion
1011+ // item. One is to insert a completion text and the other is to replace an
1012+ // existing text with a completion text. Since this can usually not be
1013+ // predetermined by a server it can report both ranges. Clients need to
1014+ // signal support for `InsertReplaceEdits` via the
1015+ // `textDocument.completion.insertReplaceSupport` client capability
1016+ // property.
1017+ //
1018+ // *Note 1:* The text edit's range as well as both ranges from an insert
1019+ // replace edit must be a [single line] and they must contain the position
1020+ // at which completion has been requested.
1021+ // *Note 2:* If an `InsertReplaceEdit` is returned the edit's insert range
1022+ // must be a prefix of the edit's replace range, that means it must be
1023+ // contained and starting at the same position.
1024+ //
1025+ // @since 3.16.0 additional type `InsertReplaceEdit`
1026+ TextEdit *Or_CompletionItem_textEdit `json:"textEdit,omitempty"`
1027+ // The edit text used if the completion item is part of a CompletionList and
1028+ // CompletionList defines an item default for the text edit range.
1029+ //
1030+ // Clients will only honor this property if they opt into completion list
1031+ // item defaults using the capability `completionList.itemDefaults`.
1032+ //
1033+ // If not provided and a list's default range is provided the label
1034+ // property is used as a text.
1035+ //
1036+ // @since 3.17.0
1037+ TextEditText string `json:"textEditText,omitempty"`
1038+ // An optional array of additional {@link TextEdit text edits} that are applied when
1039+ // selecting this completion. Edits must not overlap (including the same insert position)
1040+ // with the main {@link CompletionItem.textEdit edit} nor with themselves.
1041+ //
1042+ // Additional text edits should be used to change text unrelated to the current cursor position
1043+ // (for example adding an import statement at the top of the file if the completion item will
1044+ // insert an unqualified type).
1045+ AdditionalTextEdits []TextEdit `json:"additionalTextEdits,omitempty"`
1046+ // An optional set of characters that when pressed while this completion is active will accept it first and
1047+ // then type that character. *Note* that all commit characters should have `length=1` and that superfluous
1048+ // characters will be ignored.
1049+ CommitCharacters []string `json:"commitCharacters,omitempty"`
1050+ // An optional {@link Command command} that is executed *after* inserting this completion. *Note* that
1051+ // additional modifications to the current document should be described with the
1052+ // {@link CompletionItem.additionalTextEdits additionalTextEdits}-property.
1053+ Command *Command `json:"command,omitempty"`
1054+ // A data entry field that is preserved on a completion item between a
1055+ // {@link CompletionRequest} and a {@link CompletionResolveRequest}.
1056+ Data interface{} `json:"data,omitempty"`
1057+}
1058+
1059+// In many cases the items of an actual completion result share the same
1060+// value for properties like `commitCharacters` or the range of a text
1061+// edit. A completion list can therefore define item defaults which will
1062+// be used if a completion item itself doesn't specify the value.
1063+//
1064+// If a completion list specifies a default value and a completion item
1065+// also specifies a corresponding value the one from the item is used.
1066+//
1067+// Servers are only allowed to return default values if the client
1068+// signals support for this via the `completionList.itemDefaults`
1069+// capability.
1070+//
1071+// @since 3.17.0
1072+//
1073+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionItemDefaults
1074+type CompletionItemDefaults struct {
1075+ // A default commit character set.
1076+ //
1077+ // @since 3.17.0
1078+ CommitCharacters []string `json:"commitCharacters,omitempty"`
1079+ // A default edit range.
1080+ //
1081+ // @since 3.17.0
1082+ EditRange *Or_CompletionItemDefaults_editRange `json:"editRange,omitempty"`
1083+ // A default insert text format.
1084+ //
1085+ // @since 3.17.0
1086+ InsertTextFormat *InsertTextFormat `json:"insertTextFormat,omitempty"`
1087+ // A default insert text mode.
1088+ //
1089+ // @since 3.17.0
1090+ InsertTextMode *InsertTextMode `json:"insertTextMode,omitempty"`
1091+ // A default data value.
1092+ //
1093+ // @since 3.17.0
1094+ Data interface{} `json:"data,omitempty"`
1095+}
1096+
1097+// The kind of a completion entry.
1098+type CompletionItemKind uint32
1099+
1100+// Additional details for a completion item label.
1101+//
1102+// @since 3.17.0
1103+//
1104+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionItemLabelDetails
1105+type CompletionItemLabelDetails struct {
1106+ // An optional string which is rendered less prominently directly after {@link CompletionItem.label label},
1107+ // without any spacing. Should be used for function signatures and type annotations.
1108+ Detail string `json:"detail,omitempty"`
1109+ // An optional string which is rendered less prominently after {@link CompletionItem.detail}. Should be used
1110+ // for fully qualified names and file paths.
1111+ Description string `json:"description,omitempty"`
1112+}
1113+
1114+// Completion item tags are extra annotations that tweak the rendering of a completion
1115+// item.
1116+//
1117+// @since 3.15.0
1118+type CompletionItemTag uint32
1119+
1120+// @since 3.18.0
1121+//
1122+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionItemTagOptions
1123+type CompletionItemTagOptions struct {
1124+ // The tags supported by the client.
1125+ ValueSet []CompletionItemTag `json:"valueSet"`
1126+}
1127+
1128+// Represents a collection of {@link CompletionItem completion items} to be presented
1129+// in the editor.
1130+//
1131+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionList
1132+type CompletionList struct {
1133+ // This list it not complete. Further typing results in recomputing this list.
1134+ //
1135+ // Recomputed lists have all their items replaced (not appended) in the
1136+ // incomplete completion sessions.
1137+ IsIncomplete bool `json:"isIncomplete"`
1138+ // In many cases the items of an actual completion result share the same
1139+ // value for properties like `commitCharacters` or the range of a text
1140+ // edit. A completion list can therefore define item defaults which will
1141+ // be used if a completion item itself doesn't specify the value.
1142+ //
1143+ // If a completion list specifies a default value and a completion item
1144+ // also specifies a corresponding value the one from the item is used.
1145+ //
1146+ // Servers are only allowed to return default values if the client
1147+ // signals support for this via the `completionList.itemDefaults`
1148+ // capability.
1149+ //
1150+ // @since 3.17.0
1151+ ItemDefaults *CompletionItemDefaults `json:"itemDefaults,omitempty"`
1152+ // The completion items.
1153+ Items []CompletionItem `json:"items"`
1154+}
1155+
1156+// The client supports the following `CompletionList` specific
1157+// capabilities.
1158+//
1159+// @since 3.17.0
1160+//
1161+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionListCapabilities
1162+type CompletionListCapabilities struct {
1163+ // The client supports the following itemDefaults on
1164+ // a completion list.
1165+ //
1166+ // The value lists the supported property names of the
1167+ // `CompletionList.itemDefaults` object. If omitted
1168+ // no properties are supported.
1169+ //
1170+ // @since 3.17.0
1171+ ItemDefaults []string `json:"itemDefaults,omitempty"`
1172+}
1173+
1174+// Completion options.
1175+//
1176+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionOptions
1177+type CompletionOptions struct {
1178+ // Most tools trigger completion request automatically without explicitly requesting
1179+ // it using a keyboard shortcut (e.g. Ctrl+Space). Typically they do so when the user
1180+ // starts to type an identifier. For example if the user types `c` in a JavaScript file
1181+ // code complete will automatically pop up present `console` besides others as a
1182+ // completion item. Characters that make up identifiers don't need to be listed here.
1183+ //
1184+ // If code complete should automatically be trigger on characters not being valid inside
1185+ // an identifier (for example `.` in JavaScript) list them in `triggerCharacters`.
1186+ TriggerCharacters []string `json:"triggerCharacters,omitempty"`
1187+ // The list of all possible characters that commit a completion. This field can be used
1188+ // if clients don't support individual commit characters per completion item. See
1189+ // `ClientCapabilities.textDocument.completion.completionItem.commitCharactersSupport`
1190+ //
1191+ // If a server provides both `allCommitCharacters` and commit characters on an individual
1192+ // completion item the ones on the completion item win.
1193+ //
1194+ // @since 3.2.0
1195+ AllCommitCharacters []string `json:"allCommitCharacters,omitempty"`
1196+ // The server provides support to resolve additional
1197+ // information for a completion item.
1198+ ResolveProvider bool `json:"resolveProvider,omitempty"`
1199+ // The server supports the following `CompletionItem` specific
1200+ // capabilities.
1201+ //
1202+ // @since 3.17.0
1203+ CompletionItem *ServerCompletionItemOptions `json:"completionItem,omitempty"`
1204+ WorkDoneProgressOptions
1205+}
1206+
1207+// Completion parameters
1208+//
1209+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionParams
1210+type CompletionParams struct {
1211+ // The completion context. This is only available it the client specifies
1212+ // to send this using the client capability `textDocument.completion.contextSupport === true`
1213+ Context CompletionContext `json:"context,omitempty"`
1214+ TextDocumentPositionParams
1215+ WorkDoneProgressParams
1216+ PartialResultParams
1217+}
1218+
1219+// Registration options for a {@link CompletionRequest}.
1220+//
1221+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionRegistrationOptions
1222+type CompletionRegistrationOptions struct {
1223+ TextDocumentRegistrationOptions
1224+ CompletionOptions
1225+}
1226+
1227+// How a completion was triggered
1228+type CompletionTriggerKind uint32
1229+
1230+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#configurationItem
1231+type ConfigurationItem struct {
1232+ // The scope to get the configuration section for.
1233+ ScopeURI *URI `json:"scopeUri,omitempty"`
1234+ // The configuration section asked for.
1235+ Section string `json:"section,omitempty"`
1236+}
1237+
1238+// The parameters of a configuration request.
1239+//
1240+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#configurationParams
1241+type ConfigurationParams struct {
1242+ Items []ConfigurationItem `json:"items"`
1243+}
1244+
1245+// Create file operation.
1246+//
1247+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#createFile
1248+type CreateFile struct {
1249+ // A create
1250+ Kind string `json:"kind"`
1251+ // The resource to create.
1252+ URI DocumentUri `json:"uri"`
1253+ // Additional options
1254+ Options *CreateFileOptions `json:"options,omitempty"`
1255+ ResourceOperation
1256+}
1257+
1258+// Options to create a file.
1259+//
1260+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#createFileOptions
1261+type CreateFileOptions struct {
1262+ // Overwrite existing file. Overwrite wins over `ignoreIfExists`
1263+ Overwrite bool `json:"overwrite,omitempty"`
1264+ // Ignore if exists.
1265+ IgnoreIfExists bool `json:"ignoreIfExists,omitempty"`
1266+}
1267+
1268+// The parameters sent in notifications/requests for user-initiated creation of
1269+// files.
1270+//
1271+// @since 3.16.0
1272+//
1273+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#createFilesParams
1274+type CreateFilesParams struct {
1275+ // An array of all files/folders created in this operation.
1276+ Files []FileCreate `json:"files"`
1277+}
1278+
1279+// The declaration of a symbol representation as one or many {@link Location locations}.
1280+//
1281+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#declaration
1282+type Declaration = Or_Declaration // (alias)
1283+// @since 3.14.0
1284+//
1285+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#declarationClientCapabilities
1286+type DeclarationClientCapabilities struct {
1287+ // Whether declaration supports dynamic registration. If this is set to `true`
1288+ // the client supports the new `DeclarationRegistrationOptions` return value
1289+ // for the corresponding server capability as well.
1290+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
1291+ // The client supports additional metadata in the form of declaration links.
1292+ LinkSupport bool `json:"linkSupport,omitempty"`
1293+}
1294+
1295+// Information about where a symbol is declared.
1296+//
1297+// Provides additional metadata over normal {@link Location location} declarations, including the range of
1298+// the declaring symbol.
1299+//
1300+// Servers should prefer returning `DeclarationLink` over `Declaration` if supported
1301+// by the client.
1302+//
1303+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#declarationLink
1304+type DeclarationLink = LocationLink // (alias)
1305+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#declarationOptions
1306+type DeclarationOptions struct {
1307+ WorkDoneProgressOptions
1308+}
1309+
1310+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#declarationParams
1311+type DeclarationParams struct {
1312+ TextDocumentPositionParams
1313+ WorkDoneProgressParams
1314+ PartialResultParams
1315+}
1316+
1317+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#declarationRegistrationOptions
1318+type DeclarationRegistrationOptions struct {
1319+ DeclarationOptions
1320+ TextDocumentRegistrationOptions
1321+ StaticRegistrationOptions
1322+}
1323+
1324+// The definition of a symbol represented as one or many {@link Location locations}.
1325+// For most programming languages there is only one location at which a symbol is
1326+// defined.
1327+//
1328+// Servers should prefer returning `DefinitionLink` over `Definition` if supported
1329+// by the client.
1330+//
1331+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#definition
1332+type Definition = Or_Definition // (alias)
1333+// Client Capabilities for a {@link DefinitionRequest}.
1334+//
1335+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#definitionClientCapabilities
1336+type DefinitionClientCapabilities struct {
1337+ // Whether definition supports dynamic registration.
1338+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
1339+ // The client supports additional metadata in the form of definition links.
1340+ //
1341+ // @since 3.14.0
1342+ LinkSupport bool `json:"linkSupport,omitempty"`
1343+}
1344+
1345+// Information about where a symbol is defined.
1346+//
1347+// Provides additional metadata over normal {@link Location location} definitions, including the range of
1348+// the defining symbol
1349+//
1350+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#definitionLink
1351+type DefinitionLink = LocationLink // (alias)
1352+// Server Capabilities for a {@link DefinitionRequest}.
1353+//
1354+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#definitionOptions
1355+type DefinitionOptions struct {
1356+ WorkDoneProgressOptions
1357+}
1358+
1359+// Parameters for a {@link DefinitionRequest}.
1360+//
1361+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#definitionParams
1362+type DefinitionParams struct {
1363+ TextDocumentPositionParams
1364+ WorkDoneProgressParams
1365+ PartialResultParams
1366+}
1367+
1368+// Registration options for a {@link DefinitionRequest}.
1369+//
1370+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#definitionRegistrationOptions
1371+type DefinitionRegistrationOptions struct {
1372+ TextDocumentRegistrationOptions
1373+ DefinitionOptions
1374+}
1375+
1376+// Delete file operation
1377+//
1378+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#deleteFile
1379+type DeleteFile struct {
1380+ // A delete
1381+ Kind string `json:"kind"`
1382+ // The file to delete.
1383+ URI DocumentUri `json:"uri"`
1384+ // Delete options.
1385+ Options *DeleteFileOptions `json:"options,omitempty"`
1386+ ResourceOperation
1387+}
1388+
1389+// Delete file options
1390+//
1391+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#deleteFileOptions
1392+type DeleteFileOptions struct {
1393+ // Delete the content recursively if a folder is denoted.
1394+ Recursive bool `json:"recursive,omitempty"`
1395+ // Ignore the operation if the file doesn't exist.
1396+ IgnoreIfNotExists bool `json:"ignoreIfNotExists,omitempty"`
1397+}
1398+
1399+// The parameters sent in notifications/requests for user-initiated deletes of
1400+// files.
1401+//
1402+// @since 3.16.0
1403+//
1404+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#deleteFilesParams
1405+type DeleteFilesParams struct {
1406+ // An array of all files/folders deleted in this operation.
1407+ Files []FileDelete `json:"files"`
1408+}
1409+
1410+// Represents a diagnostic, such as a compiler error or warning. Diagnostic objects
1411+// are only valid in the scope of a resource.
1412+//
1413+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#diagnostic
1414+type Diagnostic struct {
1415+ // The range at which the message applies
1416+ Range Range `json:"range"`
1417+ // The diagnostic's severity. To avoid interpretation mismatches when a
1418+ // server is used with different clients it is highly recommended that servers
1419+ // always provide a severity value.
1420+ Severity DiagnosticSeverity `json:"severity,omitempty"`
1421+ // The diagnostic's code, which usually appear in the user interface.
1422+ Code interface{} `json:"code,omitempty"`
1423+ // An optional property to describe the error code.
1424+ // Requires the code field (above) to be present/not null.
1425+ //
1426+ // @since 3.16.0
1427+ CodeDescription *CodeDescription `json:"codeDescription,omitempty"`
1428+ // A human-readable string describing the source of this
1429+ // diagnostic, e.g. 'typescript' or 'super lint'. It usually
1430+ // appears in the user interface.
1431+ Source string `json:"source,omitempty"`
1432+ // The diagnostic's message. It usually appears in the user interface
1433+ Message string `json:"message"`
1434+ // Additional metadata about the diagnostic.
1435+ //
1436+ // @since 3.15.0
1437+ Tags []DiagnosticTag `json:"tags,omitempty"`
1438+ // An array of related diagnostic information, e.g. when symbol-names within
1439+ // a scope collide all definitions can be marked via this property.
1440+ RelatedInformation []DiagnosticRelatedInformation `json:"relatedInformation,omitempty"`
1441+ // A data entry field that is preserved between a `textDocument/publishDiagnostics`
1442+ // notification and `textDocument/codeAction` request.
1443+ //
1444+ // @since 3.16.0
1445+ Data *json.RawMessage `json:"data,omitempty"`
1446+}
1447+
1448+// Client capabilities specific to diagnostic pull requests.
1449+//
1450+// @since 3.17.0
1451+//
1452+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#diagnosticClientCapabilities
1453+type DiagnosticClientCapabilities struct {
1454+ // Whether implementation supports dynamic registration. If this is set to `true`
1455+ // the client supports the new `(TextDocumentRegistrationOptions & StaticRegistrationOptions)`
1456+ // return value for the corresponding server capability as well.
1457+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
1458+ // Whether the clients supports related documents for document diagnostic pulls.
1459+ RelatedDocumentSupport bool `json:"relatedDocumentSupport,omitempty"`
1460+ DiagnosticsCapabilities
1461+}
1462+
1463+// Diagnostic options.
1464+//
1465+// @since 3.17.0
1466+//
1467+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#diagnosticOptions
1468+type DiagnosticOptions struct {
1469+ // An optional identifier under which the diagnostics are
1470+ // managed by the client.
1471+ Identifier string `json:"identifier,omitempty"`
1472+ // Whether the language has inter file dependencies meaning that
1473+ // editing code in one file can result in a different diagnostic
1474+ // set in another file. Inter file dependencies are common for
1475+ // most programming languages and typically uncommon for linters.
1476+ InterFileDependencies bool `json:"interFileDependencies"`
1477+ // The server provides support for workspace diagnostics as well.
1478+ WorkspaceDiagnostics bool `json:"workspaceDiagnostics"`
1479+ WorkDoneProgressOptions
1480+}
1481+
1482+// Diagnostic registration options.
1483+//
1484+// @since 3.17.0
1485+//
1486+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#diagnosticRegistrationOptions
1487+type DiagnosticRegistrationOptions struct {
1488+ TextDocumentRegistrationOptions
1489+ DiagnosticOptions
1490+ StaticRegistrationOptions
1491+}
1492+
1493+// Represents a related message and source code location for a diagnostic. This should be
1494+// used to point to code locations that cause or related to a diagnostics, e.g when duplicating
1495+// a symbol in a scope.
1496+//
1497+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#diagnosticRelatedInformation
1498+type DiagnosticRelatedInformation struct {
1499+ // The location of this related diagnostic information.
1500+ Location Location `json:"location"`
1501+ // The message of this related diagnostic information.
1502+ Message string `json:"message"`
1503+}
1504+
1505+// Cancellation data returned from a diagnostic request.
1506+//
1507+// @since 3.17.0
1508+//
1509+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#diagnosticServerCancellationData
1510+type DiagnosticServerCancellationData struct {
1511+ RetriggerRequest bool `json:"retriggerRequest"`
1512+}
1513+
1514+// The diagnostic's severity.
1515+type DiagnosticSeverity uint32
1516+
1517+// The diagnostic tags.
1518+//
1519+// @since 3.15.0
1520+type DiagnosticTag uint32
1521+
1522+// Workspace client capabilities specific to diagnostic pull requests.
1523+//
1524+// @since 3.17.0
1525+//
1526+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#diagnosticWorkspaceClientCapabilities
1527+type DiagnosticWorkspaceClientCapabilities struct {
1528+ // Whether the client implementation supports a refresh request sent from
1529+ // the server to the client.
1530+ //
1531+ // Note that this event is global and will force the client to refresh all
1532+ // pulled diagnostics currently shown. It should be used with absolute care and
1533+ // is useful for situation where a server for example detects a project wide
1534+ // change that requires such a calculation.
1535+ RefreshSupport bool `json:"refreshSupport,omitempty"`
1536+}
1537+
1538+// General diagnostics capabilities for pull and push model.
1539+//
1540+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#diagnosticsCapabilities
1541+type DiagnosticsCapabilities struct {
1542+ // Whether the clients accepts diagnostics with related information.
1543+ RelatedInformation bool `json:"relatedInformation,omitempty"`
1544+ // Client supports the tag property to provide meta data about a diagnostic.
1545+ // Clients supporting tags have to handle unknown tags gracefully.
1546+ //
1547+ // @since 3.15.0
1548+ TagSupport *ClientDiagnosticsTagOptions `json:"tagSupport,omitempty"`
1549+ // Client supports a codeDescription property
1550+ //
1551+ // @since 3.16.0
1552+ CodeDescriptionSupport bool `json:"codeDescriptionSupport,omitempty"`
1553+ // Whether code action supports the `data` property which is
1554+ // preserved between a `textDocument/publishDiagnostics` and
1555+ // `textDocument/codeAction` request.
1556+ //
1557+ // @since 3.16.0
1558+ DataSupport bool `json:"dataSupport,omitempty"`
1559+}
1560+
1561+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didChangeConfigurationClientCapabilities
1562+type DidChangeConfigurationClientCapabilities struct {
1563+ // Did change configuration notification supports dynamic registration.
1564+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
1565+}
1566+
1567+// The parameters of a change configuration notification.
1568+//
1569+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didChangeConfigurationParams
1570+type DidChangeConfigurationParams struct {
1571+ // The actual changed settings
1572+ Settings interface{} `json:"settings"`
1573+}
1574+
1575+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didChangeConfigurationRegistrationOptions
1576+type DidChangeConfigurationRegistrationOptions struct {
1577+ Section *Or_DidChangeConfigurationRegistrationOptions_section `json:"section,omitempty"`
1578+}
1579+
1580+// The params sent in a change notebook document notification.
1581+//
1582+// @since 3.17.0
1583+//
1584+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didChangeNotebookDocumentParams
1585+type DidChangeNotebookDocumentParams struct {
1586+ // The notebook document that did change. The version number points
1587+ // to the version after all provided changes have been applied. If
1588+ // only the text document content of a cell changes the notebook version
1589+ // doesn't necessarily have to change.
1590+ NotebookDocument VersionedNotebookDocumentIdentifier `json:"notebookDocument"`
1591+ // The actual changes to the notebook document.
1592+ //
1593+ // The changes describe single state changes to the notebook document.
1594+ // So if there are two changes c1 (at array index 0) and c2 (at array
1595+ // index 1) for a notebook in state S then c1 moves the notebook from
1596+ // S to S' and c2 from S' to S''. So c1 is computed on the state S and
1597+ // c2 is computed on the state S'.
1598+ //
1599+ // To mirror the content of a notebook using change events use the following approach:
1600+ //
1601+ // - start with the same initial content
1602+ // - apply the 'notebookDocument/didChange' notifications in the order you receive them.
1603+ // - apply the `NotebookChangeEvent`s in a single notification in the order
1604+ // you receive them.
1605+ Change NotebookDocumentChangeEvent `json:"change"`
1606+}
1607+
1608+// The change text document notification's parameters.
1609+//
1610+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didChangeTextDocumentParams
1611+type DidChangeTextDocumentParams struct {
1612+ // The document that did change. The version number points
1613+ // to the version after all provided content changes have
1614+ // been applied.
1615+ TextDocument VersionedTextDocumentIdentifier `json:"textDocument"`
1616+ // The actual content changes. The content changes describe single state changes
1617+ // to the document. So if there are two content changes c1 (at array index 0) and
1618+ // c2 (at array index 1) for a document in state S then c1 moves the document from
1619+ // S to S' and c2 from S' to S''. So c1 is computed on the state S and c2 is computed
1620+ // on the state S'.
1621+ //
1622+ // To mirror the content of a document using change events use the following approach:
1623+ //
1624+ // - start with the same initial content
1625+ // - apply the 'textDocument/didChange' notifications in the order you receive them.
1626+ // - apply the `TextDocumentContentChangeEvent`s in a single notification in the order
1627+ // you receive them.
1628+ ContentChanges []TextDocumentContentChangeEvent `json:"contentChanges"`
1629+}
1630+
1631+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didChangeWatchedFilesClientCapabilities
1632+type DidChangeWatchedFilesClientCapabilities struct {
1633+ // Did change watched files notification supports dynamic registration. Please note
1634+ // that the current protocol doesn't support static configuration for file changes
1635+ // from the server side.
1636+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
1637+ // Whether the client has support for {@link RelativePattern relative pattern}
1638+ // or not.
1639+ //
1640+ // @since 3.17.0
1641+ RelativePatternSupport bool `json:"relativePatternSupport,omitempty"`
1642+}
1643+
1644+// The watched files change notification's parameters.
1645+//
1646+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didChangeWatchedFilesParams
1647+type DidChangeWatchedFilesParams struct {
1648+ // The actual file events.
1649+ Changes []FileEvent `json:"changes"`
1650+}
1651+
1652+// Describe options to be used when registered for text document change events.
1653+//
1654+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didChangeWatchedFilesRegistrationOptions
1655+type DidChangeWatchedFilesRegistrationOptions struct {
1656+ // The watchers to register.
1657+ Watchers []FileSystemWatcher `json:"watchers"`
1658+}
1659+
1660+// The parameters of a `workspace/didChangeWorkspaceFolders` notification.
1661+//
1662+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didChangeWorkspaceFoldersParams
1663+type DidChangeWorkspaceFoldersParams struct {
1664+ // The actual workspace folder change event.
1665+ Event WorkspaceFoldersChangeEvent `json:"event"`
1666+}
1667+
1668+// The params sent in a close notebook document notification.
1669+//
1670+// @since 3.17.0
1671+//
1672+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didCloseNotebookDocumentParams
1673+type DidCloseNotebookDocumentParams struct {
1674+ // The notebook document that got closed.
1675+ NotebookDocument NotebookDocumentIdentifier `json:"notebookDocument"`
1676+ // The text documents that represent the content
1677+ // of a notebook cell that got closed.
1678+ CellTextDocuments []TextDocumentIdentifier `json:"cellTextDocuments"`
1679+}
1680+
1681+// The parameters sent in a close text document notification
1682+//
1683+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didCloseTextDocumentParams
1684+type DidCloseTextDocumentParams struct {
1685+ // The document that was closed.
1686+ TextDocument TextDocumentIdentifier `json:"textDocument"`
1687+}
1688+
1689+// The params sent in an open notebook document notification.
1690+//
1691+// @since 3.17.0
1692+//
1693+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didOpenNotebookDocumentParams
1694+type DidOpenNotebookDocumentParams struct {
1695+ // The notebook document that got opened.
1696+ NotebookDocument NotebookDocument `json:"notebookDocument"`
1697+ // The text documents that represent the content
1698+ // of a notebook cell.
1699+ CellTextDocuments []TextDocumentItem `json:"cellTextDocuments"`
1700+}
1701+
1702+// The parameters sent in an open text document notification
1703+//
1704+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didOpenTextDocumentParams
1705+type DidOpenTextDocumentParams struct {
1706+ // The document that was opened.
1707+ TextDocument TextDocumentItem `json:"textDocument"`
1708+}
1709+
1710+// The params sent in a save notebook document notification.
1711+//
1712+// @since 3.17.0
1713+//
1714+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didSaveNotebookDocumentParams
1715+type DidSaveNotebookDocumentParams struct {
1716+ // The notebook document that got saved.
1717+ NotebookDocument NotebookDocumentIdentifier `json:"notebookDocument"`
1718+}
1719+
1720+// The parameters sent in a save text document notification
1721+//
1722+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didSaveTextDocumentParams
1723+type DidSaveTextDocumentParams struct {
1724+ // The document that was saved.
1725+ TextDocument TextDocumentIdentifier `json:"textDocument"`
1726+ // Optional the content when saved. Depends on the includeText value
1727+ // when the save notification was requested.
1728+ Text *string `json:"text,omitempty"`
1729+}
1730+
1731+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentColorClientCapabilities
1732+type DocumentColorClientCapabilities struct {
1733+ // Whether implementation supports dynamic registration. If this is set to `true`
1734+ // the client supports the new `DocumentColorRegistrationOptions` return value
1735+ // for the corresponding server capability as well.
1736+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
1737+}
1738+
1739+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentColorOptions
1740+type DocumentColorOptions struct {
1741+ WorkDoneProgressOptions
1742+}
1743+
1744+// Parameters for a {@link DocumentColorRequest}.
1745+//
1746+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentColorParams
1747+type DocumentColorParams struct {
1748+ // The text document.
1749+ TextDocument TextDocumentIdentifier `json:"textDocument"`
1750+ WorkDoneProgressParams
1751+ PartialResultParams
1752+}
1753+
1754+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentColorRegistrationOptions
1755+type DocumentColorRegistrationOptions struct {
1756+ TextDocumentRegistrationOptions
1757+ DocumentColorOptions
1758+ StaticRegistrationOptions
1759+}
1760+
1761+// Parameters of the document diagnostic request.
1762+//
1763+// @since 3.17.0
1764+//
1765+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentDiagnosticParams
1766+type DocumentDiagnosticParams struct {
1767+ // The text document.
1768+ TextDocument TextDocumentIdentifier `json:"textDocument"`
1769+ // The additional identifier provided during registration.
1770+ Identifier string `json:"identifier,omitempty"`
1771+ // The result id of a previous response if provided.
1772+ PreviousResultID string `json:"previousResultId,omitempty"`
1773+ WorkDoneProgressParams
1774+ PartialResultParams
1775+}
1776+
1777+// The result of a document diagnostic pull request. A report can
1778+// either be a full report containing all diagnostics for the
1779+// requested document or an unchanged report indicating that nothing
1780+// has changed in terms of diagnostics in comparison to the last
1781+// pull request.
1782+//
1783+// @since 3.17.0
1784+//
1785+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentDiagnosticReport
1786+type DocumentDiagnosticReport = Or_DocumentDiagnosticReport // (alias)
1787+// The document diagnostic report kinds.
1788+//
1789+// @since 3.17.0
1790+type DocumentDiagnosticReportKind string
1791+
1792+// A partial result for a document diagnostic report.
1793+//
1794+// @since 3.17.0
1795+//
1796+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentDiagnosticReportPartialResult
1797+type DocumentDiagnosticReportPartialResult struct {
1798+ RelatedDocuments map[DocumentUri]interface{} `json:"relatedDocuments"`
1799+}
1800+
1801+// A document filter describes a top level text document or
1802+// a notebook cell document.
1803+//
1804+// @since 3.17.0 - proposed support for NotebookCellTextDocumentFilter.
1805+//
1806+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentFilter
1807+type DocumentFilter = Or_DocumentFilter // (alias)
1808+// Client capabilities of a {@link DocumentFormattingRequest}.
1809+//
1810+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentFormattingClientCapabilities
1811+type DocumentFormattingClientCapabilities struct {
1812+ // Whether formatting supports dynamic registration.
1813+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
1814+}
1815+
1816+// Provider options for a {@link DocumentFormattingRequest}.
1817+//
1818+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentFormattingOptions
1819+type DocumentFormattingOptions struct {
1820+ WorkDoneProgressOptions
1821+}
1822+
1823+// The parameters of a {@link DocumentFormattingRequest}.
1824+//
1825+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentFormattingParams
1826+type DocumentFormattingParams struct {
1827+ // The document to format.
1828+ TextDocument TextDocumentIdentifier `json:"textDocument"`
1829+ // The format options.
1830+ Options FormattingOptions `json:"options"`
1831+ WorkDoneProgressParams
1832+}
1833+
1834+// Registration options for a {@link DocumentFormattingRequest}.
1835+//
1836+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentFormattingRegistrationOptions
1837+type DocumentFormattingRegistrationOptions struct {
1838+ TextDocumentRegistrationOptions
1839+ DocumentFormattingOptions
1840+}
1841+
1842+// A document highlight is a range inside a text document which deserves
1843+// special attention. Usually a document highlight is visualized by changing
1844+// the background color of its range.
1845+//
1846+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentHighlight
1847+type DocumentHighlight struct {
1848+ // The range this highlight applies to.
1849+ Range Range `json:"range"`
1850+ // The highlight kind, default is {@link DocumentHighlightKind.Text text}.
1851+ Kind DocumentHighlightKind `json:"kind,omitempty"`
1852+}
1853+
1854+// Client Capabilities for a {@link DocumentHighlightRequest}.
1855+//
1856+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentHighlightClientCapabilities
1857+type DocumentHighlightClientCapabilities struct {
1858+ // Whether document highlight supports dynamic registration.
1859+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
1860+}
1861+
1862+// A document highlight kind.
1863+type DocumentHighlightKind uint32
1864+
1865+// Provider options for a {@link DocumentHighlightRequest}.
1866+//
1867+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentHighlightOptions
1868+type DocumentHighlightOptions struct {
1869+ WorkDoneProgressOptions
1870+}
1871+
1872+// Parameters for a {@link DocumentHighlightRequest}.
1873+//
1874+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentHighlightParams
1875+type DocumentHighlightParams struct {
1876+ TextDocumentPositionParams
1877+ WorkDoneProgressParams
1878+ PartialResultParams
1879+}
1880+
1881+// Registration options for a {@link DocumentHighlightRequest}.
1882+//
1883+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentHighlightRegistrationOptions
1884+type DocumentHighlightRegistrationOptions struct {
1885+ TextDocumentRegistrationOptions
1886+ DocumentHighlightOptions
1887+}
1888+
1889+// A document link is a range in a text document that links to an internal or external resource, like another
1890+// text document or a web site.
1891+//
1892+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentLink
1893+type DocumentLink struct {
1894+ // The range this link applies to.
1895+ Range Range `json:"range"`
1896+ // The uri this link points to. If missing a resolve request is sent later.
1897+ Target *URI `json:"target,omitempty"`
1898+ // The tooltip text when you hover over this link.
1899+ //
1900+ // If a tooltip is provided, is will be displayed in a string that includes instructions on how to
1901+ // trigger the link, such as `{0} (ctrl + click)`. The specific instructions vary depending on OS,
1902+ // user settings, and localization.
1903+ //
1904+ // @since 3.15.0
1905+ Tooltip string `json:"tooltip,omitempty"`
1906+ // A data entry field that is preserved on a document link between a
1907+ // DocumentLinkRequest and a DocumentLinkResolveRequest.
1908+ Data interface{} `json:"data,omitempty"`
1909+}
1910+
1911+// The client capabilities of a {@link DocumentLinkRequest}.
1912+//
1913+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentLinkClientCapabilities
1914+type DocumentLinkClientCapabilities struct {
1915+ // Whether document link supports dynamic registration.
1916+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
1917+ // Whether the client supports the `tooltip` property on `DocumentLink`.
1918+ //
1919+ // @since 3.15.0
1920+ TooltipSupport bool `json:"tooltipSupport,omitempty"`
1921+}
1922+
1923+// Provider options for a {@link DocumentLinkRequest}.
1924+//
1925+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentLinkOptions
1926+type DocumentLinkOptions struct {
1927+ // Document links have a resolve provider as well.
1928+ ResolveProvider bool `json:"resolveProvider,omitempty"`
1929+ WorkDoneProgressOptions
1930+}
1931+
1932+// The parameters of a {@link DocumentLinkRequest}.
1933+//
1934+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentLinkParams
1935+type DocumentLinkParams struct {
1936+ // The document to provide document links for.
1937+ TextDocument TextDocumentIdentifier `json:"textDocument"`
1938+ WorkDoneProgressParams
1939+ PartialResultParams
1940+}
1941+
1942+// Registration options for a {@link DocumentLinkRequest}.
1943+//
1944+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentLinkRegistrationOptions
1945+type DocumentLinkRegistrationOptions struct {
1946+ TextDocumentRegistrationOptions
1947+ DocumentLinkOptions
1948+}
1949+
1950+// Client capabilities of a {@link DocumentOnTypeFormattingRequest}.
1951+//
1952+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentOnTypeFormattingClientCapabilities
1953+type DocumentOnTypeFormattingClientCapabilities struct {
1954+ // Whether on type formatting supports dynamic registration.
1955+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
1956+}
1957+
1958+// Provider options for a {@link DocumentOnTypeFormattingRequest}.
1959+//
1960+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentOnTypeFormattingOptions
1961+type DocumentOnTypeFormattingOptions struct {
1962+ // A character on which formatting should be triggered, like `{`.
1963+ FirstTriggerCharacter string `json:"firstTriggerCharacter"`
1964+ // More trigger characters.
1965+ MoreTriggerCharacter []string `json:"moreTriggerCharacter,omitempty"`
1966+}
1967+
1968+// The parameters of a {@link DocumentOnTypeFormattingRequest}.
1969+//
1970+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentOnTypeFormattingParams
1971+type DocumentOnTypeFormattingParams struct {
1972+ // The document to format.
1973+ TextDocument TextDocumentIdentifier `json:"textDocument"`
1974+ // The position around which the on type formatting should happen.
1975+ // This is not necessarily the exact position where the character denoted
1976+ // by the property `ch` got typed.
1977+ Position Position `json:"position"`
1978+ // The character that has been typed that triggered the formatting
1979+ // on type request. That is not necessarily the last character that
1980+ // got inserted into the document since the client could auto insert
1981+ // characters as well (e.g. like automatic brace completion).
1982+ Ch string `json:"ch"`
1983+ // The formatting options.
1984+ Options FormattingOptions `json:"options"`
1985+}
1986+
1987+// Registration options for a {@link DocumentOnTypeFormattingRequest}.
1988+//
1989+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentOnTypeFormattingRegistrationOptions
1990+type DocumentOnTypeFormattingRegistrationOptions struct {
1991+ TextDocumentRegistrationOptions
1992+ DocumentOnTypeFormattingOptions
1993+}
1994+
1995+// Client capabilities of a {@link DocumentRangeFormattingRequest}.
1996+//
1997+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentRangeFormattingClientCapabilities
1998+type DocumentRangeFormattingClientCapabilities struct {
1999+ // Whether range formatting supports dynamic registration.
2000+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
2001+ // Whether the client supports formatting multiple ranges at once.
2002+ //
2003+ // @since 3.18.0
2004+ // @proposed
2005+ RangesSupport bool `json:"rangesSupport,omitempty"`
2006+}
2007+
2008+// Provider options for a {@link DocumentRangeFormattingRequest}.
2009+//
2010+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentRangeFormattingOptions
2011+type DocumentRangeFormattingOptions struct {
2012+ // Whether the server supports formatting multiple ranges at once.
2013+ //
2014+ // @since 3.18.0
2015+ // @proposed
2016+ RangesSupport bool `json:"rangesSupport,omitempty"`
2017+ WorkDoneProgressOptions
2018+}
2019+
2020+// The parameters of a {@link DocumentRangeFormattingRequest}.
2021+//
2022+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentRangeFormattingParams
2023+type DocumentRangeFormattingParams struct {
2024+ // The document to format.
2025+ TextDocument TextDocumentIdentifier `json:"textDocument"`
2026+ // The range to format
2027+ Range Range `json:"range"`
2028+ // The format options
2029+ Options FormattingOptions `json:"options"`
2030+ WorkDoneProgressParams
2031+}
2032+
2033+// Registration options for a {@link DocumentRangeFormattingRequest}.
2034+//
2035+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentRangeFormattingRegistrationOptions
2036+type DocumentRangeFormattingRegistrationOptions struct {
2037+ TextDocumentRegistrationOptions
2038+ DocumentRangeFormattingOptions
2039+}
2040+
2041+// The parameters of a {@link DocumentRangesFormattingRequest}.
2042+//
2043+// @since 3.18.0
2044+// @proposed
2045+//
2046+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentRangesFormattingParams
2047+type DocumentRangesFormattingParams struct {
2048+ // The document to format.
2049+ TextDocument TextDocumentIdentifier `json:"textDocument"`
2050+ // The ranges to format
2051+ Ranges []Range `json:"ranges"`
2052+ // The format options
2053+ Options FormattingOptions `json:"options"`
2054+ WorkDoneProgressParams
2055+}
2056+
2057+// A document selector is the combination of one or many document filters.
2058+//
2059+// @sample `let sel:DocumentSelector = [{ language: 'typescript' }, { language: 'json', pattern: '**∕tsconfig.json' }]`;
2060+//
2061+// The use of a string as a document filter is deprecated @since 3.16.0.
2062+//
2063+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentSelector
2064+type DocumentSelector = []DocumentFilter // (alias)
2065+// Represents programming constructs like variables, classes, interfaces etc.
2066+// that appear in a document. Document symbols can be hierarchical and they
2067+// have two ranges: one that encloses its definition and one that points to
2068+// its most interesting range, e.g. the range of an identifier.
2069+//
2070+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentSymbol
2071+type DocumentSymbol struct {
2072+ // The name of this symbol. Will be displayed in the user interface and therefore must not be
2073+ // an empty string or a string only consisting of white spaces.
2074+ Name string `json:"name"`
2075+ // More detail for this symbol, e.g the signature of a function.
2076+ Detail string `json:"detail,omitempty"`
2077+ // The kind of this symbol.
2078+ Kind SymbolKind `json:"kind"`
2079+ // Tags for this document symbol.
2080+ //
2081+ // @since 3.16.0
2082+ Tags []SymbolTag `json:"tags,omitempty"`
2083+ // Indicates if this symbol is deprecated.
2084+ //
2085+ // @deprecated Use tags instead
2086+ Deprecated bool `json:"deprecated,omitempty"`
2087+ // The range enclosing this symbol not including leading/trailing whitespace but everything else
2088+ // like comments. This information is typically used to determine if the clients cursor is
2089+ // inside the symbol to reveal in the symbol in the UI.
2090+ Range Range `json:"range"`
2091+ // The range that should be selected and revealed when this symbol is being picked, e.g the name of a function.
2092+ // Must be contained by the `range`.
2093+ SelectionRange Range `json:"selectionRange"`
2094+ // Children of this symbol, e.g. properties of a class.
2095+ Children []DocumentSymbol `json:"children,omitempty"`
2096+}
2097+
2098+// Client Capabilities for a {@link DocumentSymbolRequest}.
2099+//
2100+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentSymbolClientCapabilities
2101+type DocumentSymbolClientCapabilities struct {
2102+ // Whether document symbol supports dynamic registration.
2103+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
2104+ // Specific capabilities for the `SymbolKind` in the
2105+ // `textDocument/documentSymbol` request.
2106+ SymbolKind *ClientSymbolKindOptions `json:"symbolKind,omitempty"`
2107+ // The client supports hierarchical document symbols.
2108+ HierarchicalDocumentSymbolSupport bool `json:"hierarchicalDocumentSymbolSupport,omitempty"`
2109+ // The client supports tags on `SymbolInformation`. Tags are supported on
2110+ // `DocumentSymbol` if `hierarchicalDocumentSymbolSupport` is set to true.
2111+ // Clients supporting tags have to handle unknown tags gracefully.
2112+ //
2113+ // @since 3.16.0
2114+ TagSupport *ClientSymbolTagOptions `json:"tagSupport,omitempty"`
2115+ // The client supports an additional label presented in the UI when
2116+ // registering a document symbol provider.
2117+ //
2118+ // @since 3.16.0
2119+ LabelSupport bool `json:"labelSupport,omitempty"`
2120+}
2121+
2122+// Provider options for a {@link DocumentSymbolRequest}.
2123+//
2124+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentSymbolOptions
2125+type DocumentSymbolOptions struct {
2126+ // A human-readable string that is shown when multiple outlines trees
2127+ // are shown for the same document.
2128+ //
2129+ // @since 3.16.0
2130+ Label string `json:"label,omitempty"`
2131+ WorkDoneProgressOptions
2132+}
2133+
2134+// Parameters for a {@link DocumentSymbolRequest}.
2135+//
2136+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentSymbolParams
2137+type DocumentSymbolParams struct {
2138+ // The text document.
2139+ TextDocument TextDocumentIdentifier `json:"textDocument"`
2140+ WorkDoneProgressParams
2141+ PartialResultParams
2142+}
2143+
2144+// Registration options for a {@link DocumentSymbolRequest}.
2145+//
2146+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentSymbolRegistrationOptions
2147+type DocumentSymbolRegistrationOptions struct {
2148+ TextDocumentRegistrationOptions
2149+ DocumentSymbolOptions
2150+}
2151+
2152+// Edit range variant that includes ranges for insert and replace operations.
2153+//
2154+// @since 3.18.0
2155+//
2156+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#editRangeWithInsertReplace
2157+type EditRangeWithInsertReplace struct {
2158+ Insert Range `json:"insert"`
2159+ Replace Range `json:"replace"`
2160+}
2161+
2162+// Predefined error codes.
2163+type ErrorCodes int32
2164+
2165+// The client capabilities of a {@link ExecuteCommandRequest}.
2166+//
2167+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#executeCommandClientCapabilities
2168+type ExecuteCommandClientCapabilities struct {
2169+ // Execute command supports dynamic registration.
2170+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
2171+}
2172+
2173+// The server capabilities of a {@link ExecuteCommandRequest}.
2174+//
2175+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#executeCommandOptions
2176+type ExecuteCommandOptions struct {
2177+ // The commands to be executed on the server
2178+ Commands []string `json:"commands"`
2179+ WorkDoneProgressOptions
2180+}
2181+
2182+// The parameters of a {@link ExecuteCommandRequest}.
2183+//
2184+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#executeCommandParams
2185+type ExecuteCommandParams struct {
2186+ // The identifier of the actual command handler.
2187+ Command string `json:"command"`
2188+ // Arguments that the command should be invoked with.
2189+ Arguments []json.RawMessage `json:"arguments,omitempty"`
2190+ WorkDoneProgressParams
2191+}
2192+
2193+// Registration options for a {@link ExecuteCommandRequest}.
2194+//
2195+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#executeCommandRegistrationOptions
2196+type ExecuteCommandRegistrationOptions struct {
2197+ ExecuteCommandOptions
2198+}
2199+
2200+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#executionSummary
2201+type ExecutionSummary struct {
2202+ // A strict monotonically increasing value
2203+ // indicating the execution order of a cell
2204+ // inside a notebook.
2205+ ExecutionOrder uint32 `json:"executionOrder"`
2206+ // Whether the execution was successful or
2207+ // not if known by the client.
2208+ Success bool `json:"success,omitempty"`
2209+}
2210+type FailureHandlingKind string
2211+
2212+// The file event type
2213+type FileChangeType uint32
2214+
2215+// Represents information on a file/folder create.
2216+//
2217+// @since 3.16.0
2218+//
2219+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileCreate
2220+type FileCreate struct {
2221+ // A file:// URI for the location of the file/folder being created.
2222+ URI string `json:"uri"`
2223+}
2224+
2225+// Represents information on a file/folder delete.
2226+//
2227+// @since 3.16.0
2228+//
2229+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileDelete
2230+type FileDelete struct {
2231+ // A file:// URI for the location of the file/folder being deleted.
2232+ URI string `json:"uri"`
2233+}
2234+
2235+// An event describing a file change.
2236+//
2237+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileEvent
2238+type FileEvent struct {
2239+ // The file's uri.
2240+ URI DocumentUri `json:"uri"`
2241+ // The change type.
2242+ Type FileChangeType `json:"type"`
2243+}
2244+
2245+// Capabilities relating to events from file operations by the user in the client.
2246+//
2247+// These events do not come from the file system, they come from user operations
2248+// like renaming a file in the UI.
2249+//
2250+// @since 3.16.0
2251+//
2252+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileOperationClientCapabilities
2253+type FileOperationClientCapabilities struct {
2254+ // Whether the client supports dynamic registration for file requests/notifications.
2255+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
2256+ // The client has support for sending didCreateFiles notifications.
2257+ DidCreate bool `json:"didCreate,omitempty"`
2258+ // The client has support for sending willCreateFiles requests.
2259+ WillCreate bool `json:"willCreate,omitempty"`
2260+ // The client has support for sending didRenameFiles notifications.
2261+ DidRename bool `json:"didRename,omitempty"`
2262+ // The client has support for sending willRenameFiles requests.
2263+ WillRename bool `json:"willRename,omitempty"`
2264+ // The client has support for sending didDeleteFiles notifications.
2265+ DidDelete bool `json:"didDelete,omitempty"`
2266+ // The client has support for sending willDeleteFiles requests.
2267+ WillDelete bool `json:"willDelete,omitempty"`
2268+}
2269+
2270+// A filter to describe in which file operation requests or notifications
2271+// the server is interested in receiving.
2272+//
2273+// @since 3.16.0
2274+//
2275+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileOperationFilter
2276+type FileOperationFilter struct {
2277+ // A Uri scheme like `file` or `untitled`.
2278+ Scheme string `json:"scheme,omitempty"`
2279+ // The actual file operation pattern.
2280+ Pattern FileOperationPattern `json:"pattern"`
2281+}
2282+
2283+// Options for notifications/requests for user operations on files.
2284+//
2285+// @since 3.16.0
2286+//
2287+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileOperationOptions
2288+type FileOperationOptions struct {
2289+ // The server is interested in receiving didCreateFiles notifications.
2290+ DidCreate *FileOperationRegistrationOptions `json:"didCreate,omitempty"`
2291+ // The server is interested in receiving willCreateFiles requests.
2292+ WillCreate *FileOperationRegistrationOptions `json:"willCreate,omitempty"`
2293+ // The server is interested in receiving didRenameFiles notifications.
2294+ DidRename *FileOperationRegistrationOptions `json:"didRename,omitempty"`
2295+ // The server is interested in receiving willRenameFiles requests.
2296+ WillRename *FileOperationRegistrationOptions `json:"willRename,omitempty"`
2297+ // The server is interested in receiving didDeleteFiles file notifications.
2298+ DidDelete *FileOperationRegistrationOptions `json:"didDelete,omitempty"`
2299+ // The server is interested in receiving willDeleteFiles file requests.
2300+ WillDelete *FileOperationRegistrationOptions `json:"willDelete,omitempty"`
2301+}
2302+
2303+// A pattern to describe in which file operation requests or notifications
2304+// the server is interested in receiving.
2305+//
2306+// @since 3.16.0
2307+//
2308+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileOperationPattern
2309+type FileOperationPattern struct {
2310+ // The glob pattern to match. Glob patterns can have the following syntax:
2311+ //
2312+ // - `*` to match one or more characters in a path segment
2313+ // - `?` to match on one character in a path segment
2314+ // - `**` to match any number of path segments, including none
2315+ // - `{}` to group sub patterns into an OR expression. (e.g. `**/*.{ts,js}` matches all TypeScript and JavaScript files)
2316+ // - `[]` to declare a range of characters to match in a path segment (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …)
2317+ // - `[!...]` 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`)
2318+ Glob string `json:"glob"`
2319+ // Whether to match files or folders with this pattern.
2320+ //
2321+ // Matches both if undefined.
2322+ Matches *FileOperationPatternKind `json:"matches,omitempty"`
2323+ // Additional options used during matching.
2324+ Options *FileOperationPatternOptions `json:"options,omitempty"`
2325+}
2326+
2327+// A pattern kind describing if a glob pattern matches a file a folder or
2328+// both.
2329+//
2330+// @since 3.16.0
2331+type FileOperationPatternKind string
2332+
2333+// Matching options for the file operation pattern.
2334+//
2335+// @since 3.16.0
2336+//
2337+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileOperationPatternOptions
2338+type FileOperationPatternOptions struct {
2339+ // The pattern should be matched ignoring casing.
2340+ IgnoreCase bool `json:"ignoreCase,omitempty"`
2341+}
2342+
2343+// The options to register for file operations.
2344+//
2345+// @since 3.16.0
2346+//
2347+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileOperationRegistrationOptions
2348+type FileOperationRegistrationOptions struct {
2349+ // The actual filters.
2350+ Filters []FileOperationFilter `json:"filters"`
2351+}
2352+
2353+// Represents information on a file/folder rename.
2354+//
2355+// @since 3.16.0
2356+//
2357+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileRename
2358+type FileRename struct {
2359+ // A file:// URI for the original location of the file/folder being renamed.
2360+ OldURI string `json:"oldUri"`
2361+ // A file:// URI for the new location of the file/folder being renamed.
2362+ NewURI string `json:"newUri"`
2363+}
2364+
2365+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileSystemWatcher
2366+type FileSystemWatcher struct {
2367+ // The glob pattern to watch. See {@link GlobPattern glob pattern} for more detail.
2368+ //
2369+ // @since 3.17.0 support for relative patterns.
2370+ GlobPattern GlobPattern `json:"globPattern"`
2371+ // The kind of events of interest. If omitted it defaults
2372+ // to WatchKind.Create | WatchKind.Change | WatchKind.Delete
2373+ // which is 7.
2374+ Kind *WatchKind `json:"kind,omitempty"`
2375+}
2376+
2377+// Represents a folding range. To be valid, start and end line must be bigger than zero and smaller
2378+// than the number of lines in the document. Clients are free to ignore invalid ranges.
2379+//
2380+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#foldingRange
2381+type FoldingRange struct {
2382+ // The zero-based start line of the range to fold. The folded area starts after the line's last character.
2383+ // To be valid, the end must be zero or larger and smaller than the number of lines in the document.
2384+ StartLine uint32 `json:"startLine"`
2385+ // The zero-based character offset from where the folded range starts. If not defined, defaults to the length of the start line.
2386+ StartCharacter uint32 `json:"startCharacter,omitempty"`
2387+ // The zero-based end line of the range to fold. The folded area ends with the line's last character.
2388+ // To be valid, the end must be zero or larger and smaller than the number of lines in the document.
2389+ EndLine uint32 `json:"endLine"`
2390+ // The zero-based character offset before the folded range ends. If not defined, defaults to the length of the end line.
2391+ EndCharacter uint32 `json:"endCharacter,omitempty"`
2392+ // Describes the kind of the folding range such as 'comment' or 'region'. The kind
2393+ // is used to categorize folding ranges and used by commands like 'Fold all comments'.
2394+ // See {@link FoldingRangeKind} for an enumeration of standardized kinds.
2395+ Kind string `json:"kind,omitempty"`
2396+ // The text that the client should show when the specified range is
2397+ // collapsed. If not defined or not supported by the client, a default
2398+ // will be chosen by the client.
2399+ //
2400+ // @since 3.17.0
2401+ CollapsedText string `json:"collapsedText,omitempty"`
2402+}
2403+
2404+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#foldingRangeClientCapabilities
2405+type FoldingRangeClientCapabilities struct {
2406+ // Whether implementation supports dynamic registration for folding range
2407+ // providers. If this is set to `true` the client supports the new
2408+ // `FoldingRangeRegistrationOptions` return value for the corresponding
2409+ // server capability as well.
2410+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
2411+ // The maximum number of folding ranges that the client prefers to receive
2412+ // per document. The value serves as a hint, servers are free to follow the
2413+ // limit.
2414+ RangeLimit uint32 `json:"rangeLimit,omitempty"`
2415+ // If set, the client signals that it only supports folding complete lines.
2416+ // If set, client will ignore specified `startCharacter` and `endCharacter`
2417+ // properties in a FoldingRange.
2418+ LineFoldingOnly bool `json:"lineFoldingOnly,omitempty"`
2419+ // Specific options for the folding range kind.
2420+ //
2421+ // @since 3.17.0
2422+ FoldingRangeKind *ClientFoldingRangeKindOptions `json:"foldingRangeKind,omitempty"`
2423+ // Specific options for the folding range.
2424+ //
2425+ // @since 3.17.0
2426+ FoldingRange *ClientFoldingRangeOptions `json:"foldingRange,omitempty"`
2427+}
2428+
2429+// A set of predefined range kinds.
2430+type FoldingRangeKind string
2431+
2432+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#foldingRangeOptions
2433+type FoldingRangeOptions struct {
2434+ WorkDoneProgressOptions
2435+}
2436+
2437+// Parameters for a {@link FoldingRangeRequest}.
2438+//
2439+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#foldingRangeParams
2440+type FoldingRangeParams struct {
2441+ // The text document.
2442+ TextDocument TextDocumentIdentifier `json:"textDocument"`
2443+ WorkDoneProgressParams
2444+ PartialResultParams
2445+}
2446+
2447+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#foldingRangeRegistrationOptions
2448+type FoldingRangeRegistrationOptions struct {
2449+ TextDocumentRegistrationOptions
2450+ FoldingRangeOptions
2451+ StaticRegistrationOptions
2452+}
2453+
2454+// Client workspace capabilities specific to folding ranges
2455+//
2456+// @since 3.18.0
2457+// @proposed
2458+//
2459+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#foldingRangeWorkspaceClientCapabilities
2460+type FoldingRangeWorkspaceClientCapabilities struct {
2461+ // Whether the client implementation supports a refresh request sent from the
2462+ // server to the client.
2463+ //
2464+ // Note that this event is global and will force the client to refresh all
2465+ // folding ranges currently shown. It should be used with absolute care and is
2466+ // useful for situation where a server for example detects a project wide
2467+ // change that requires such a calculation.
2468+ //
2469+ // @since 3.18.0
2470+ // @proposed
2471+ RefreshSupport bool `json:"refreshSupport,omitempty"`
2472+}
2473+
2474+// Value-object describing what options formatting should use.
2475+//
2476+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#formattingOptions
2477+type FormattingOptions struct {
2478+ // Size of a tab in spaces.
2479+ TabSize uint32 `json:"tabSize"`
2480+ // Prefer spaces over tabs.
2481+ InsertSpaces bool `json:"insertSpaces"`
2482+ // Trim trailing whitespace on a line.
2483+ //
2484+ // @since 3.15.0
2485+ TrimTrailingWhitespace bool `json:"trimTrailingWhitespace,omitempty"`
2486+ // Insert a newline character at the end of the file if one does not exist.
2487+ //
2488+ // @since 3.15.0
2489+ InsertFinalNewline bool `json:"insertFinalNewline,omitempty"`
2490+ // Trim all newlines after the final newline at the end of the file.
2491+ //
2492+ // @since 3.15.0
2493+ TrimFinalNewlines bool `json:"trimFinalNewlines,omitempty"`
2494+}
2495+
2496+// A diagnostic report with a full set of problems.
2497+//
2498+// @since 3.17.0
2499+//
2500+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fullDocumentDiagnosticReport
2501+type FullDocumentDiagnosticReport struct {
2502+ // A full document diagnostic report.
2503+ Kind string `json:"kind"`
2504+ // An optional result id. If provided it will
2505+ // be sent on the next diagnostic request for the
2506+ // same document.
2507+ ResultID string `json:"resultId,omitempty"`
2508+ // The actual items.
2509+ Items []Diagnostic `json:"items"`
2510+}
2511+
2512+// General client capabilities.
2513+//
2514+// @since 3.16.0
2515+//
2516+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#generalClientCapabilities
2517+type GeneralClientCapabilities struct {
2518+ // Client capability that signals how the client
2519+ // handles stale requests (e.g. a request
2520+ // for which the client will not process the response
2521+ // anymore since the information is outdated).
2522+ //
2523+ // @since 3.17.0
2524+ StaleRequestSupport *StaleRequestSupportOptions `json:"staleRequestSupport,omitempty"`
2525+ // Client capabilities specific to regular expressions.
2526+ //
2527+ // @since 3.16.0
2528+ RegularExpressions *RegularExpressionsClientCapabilities `json:"regularExpressions,omitempty"`
2529+ // Client capabilities specific to the client's markdown parser.
2530+ //
2531+ // @since 3.16.0
2532+ Markdown *MarkdownClientCapabilities `json:"markdown,omitempty"`
2533+ // The position encodings supported by the client. Client and server
2534+ // have to agree on the same position encoding to ensure that offsets
2535+ // (e.g. character position in a line) are interpreted the same on both
2536+ // sides.
2537+ //
2538+ // To keep the protocol backwards compatible the following applies: if
2539+ // the value 'utf-16' is missing from the array of position encodings
2540+ // servers can assume that the client supports UTF-16. UTF-16 is
2541+ // therefore a mandatory encoding.
2542+ //
2543+ // If omitted it defaults to ['utf-16'].
2544+ //
2545+ // Implementation considerations: since the conversion from one encoding
2546+ // into another requires the content of the file / line the conversion
2547+ // is best done where the file is read which is usually on the server
2548+ // side.
2549+ //
2550+ // @since 3.17.0
2551+ PositionEncodings []PositionEncodingKind `json:"positionEncodings,omitempty"`
2552+}
2553+
2554+// The glob pattern. Either a string pattern or a relative pattern.
2555+//
2556+// @since 3.17.0
2557+//
2558+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#globPattern
2559+type GlobPattern = Or_GlobPattern // (alias)
2560+// The result of a hover request.
2561+//
2562+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#hover
2563+type Hover struct {
2564+ // The hover's content
2565+ Contents MarkupContent `json:"contents"`
2566+ // An optional range inside the text document that is used to
2567+ // visualize the hover, e.g. by changing the background color.
2568+ Range Range `json:"range,omitempty"`
2569+}
2570+
2571+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#hoverClientCapabilities
2572+type HoverClientCapabilities struct {
2573+ // Whether hover supports dynamic registration.
2574+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
2575+ // Client supports the following content formats for the content
2576+ // property. The order describes the preferred format of the client.
2577+ ContentFormat []MarkupKind `json:"contentFormat,omitempty"`
2578+}
2579+
2580+// Hover options.
2581+//
2582+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#hoverOptions
2583+type HoverOptions struct {
2584+ WorkDoneProgressOptions
2585+}
2586+
2587+// Parameters for a {@link HoverRequest}.
2588+//
2589+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#hoverParams
2590+type HoverParams struct {
2591+ TextDocumentPositionParams
2592+ WorkDoneProgressParams
2593+}
2594+
2595+// Registration options for a {@link HoverRequest}.
2596+//
2597+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#hoverRegistrationOptions
2598+type HoverRegistrationOptions struct {
2599+ TextDocumentRegistrationOptions
2600+ HoverOptions
2601+}
2602+
2603+// @since 3.6.0
2604+//
2605+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#implementationClientCapabilities
2606+type ImplementationClientCapabilities struct {
2607+ // Whether implementation supports dynamic registration. If this is set to `true`
2608+ // the client supports the new `ImplementationRegistrationOptions` return value
2609+ // for the corresponding server capability as well.
2610+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
2611+ // The client supports additional metadata in the form of definition links.
2612+ //
2613+ // @since 3.14.0
2614+ LinkSupport bool `json:"linkSupport,omitempty"`
2615+}
2616+
2617+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#implementationOptions
2618+type ImplementationOptions struct {
2619+ WorkDoneProgressOptions
2620+}
2621+
2622+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#implementationParams
2623+type ImplementationParams struct {
2624+ TextDocumentPositionParams
2625+ WorkDoneProgressParams
2626+ PartialResultParams
2627+}
2628+
2629+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#implementationRegistrationOptions
2630+type ImplementationRegistrationOptions struct {
2631+ TextDocumentRegistrationOptions
2632+ ImplementationOptions
2633+ StaticRegistrationOptions
2634+}
2635+
2636+// The data type of the ResponseError if the
2637+// initialize request fails.
2638+//
2639+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#initializeError
2640+type InitializeError struct {
2641+ // Indicates whether the client execute the following retry logic:
2642+ // (1) show the message provided by the ResponseError to the user
2643+ // (2) user selects retry or cancel
2644+ // (3) if user selected retry the initialize method is sent again.
2645+ Retry bool `json:"retry"`
2646+}
2647+
2648+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#initializeParams
2649+type InitializeParams struct {
2650+ XInitializeParams
2651+ WorkspaceFoldersInitializeParams
2652+}
2653+
2654+// The result returned from an initialize request.
2655+//
2656+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#initializeResult
2657+type InitializeResult struct {
2658+ // The capabilities the language server provides.
2659+ Capabilities ServerCapabilities `json:"capabilities"`
2660+ // Information about the server.
2661+ //
2662+ // @since 3.15.0
2663+ ServerInfo *ServerInfo `json:"serverInfo,omitempty"`
2664+}
2665+
2666+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#initializedParams
2667+type InitializedParams struct {
2668+}
2669+
2670+// Inlay hint information.
2671+//
2672+// @since 3.17.0
2673+//
2674+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlayHint
2675+type InlayHint struct {
2676+ // The position of this hint.
2677+ //
2678+ // If multiple hints have the same position, they will be shown in the order
2679+ // they appear in the response.
2680+ Position Position `json:"position"`
2681+ // The label of this hint. A human readable string or an array of
2682+ // InlayHintLabelPart label parts.
2683+ //
2684+ // *Note* that neither the string nor the label part can be empty.
2685+ Label []InlayHintLabelPart `json:"label"`
2686+ // The kind of this hint. Can be omitted in which case the client
2687+ // should fall back to a reasonable default.
2688+ Kind InlayHintKind `json:"kind,omitempty"`
2689+ // Optional text edits that are performed when accepting this inlay hint.
2690+ //
2691+ // *Note* that edits are expected to change the document so that the inlay
2692+ // hint (or its nearest variant) is now part of the document and the inlay
2693+ // hint itself is now obsolete.
2694+ TextEdits []TextEdit `json:"textEdits,omitempty"`
2695+ // The tooltip text when you hover over this item.
2696+ Tooltip *Or_InlayHint_tooltip `json:"tooltip,omitempty"`
2697+ // Render padding before the hint.
2698+ //
2699+ // Note: Padding should use the editor's background color, not the
2700+ // background color of the hint itself. That means padding can be used
2701+ // to visually align/separate an inlay hint.
2702+ PaddingLeft bool `json:"paddingLeft,omitempty"`
2703+ // Render padding after the hint.
2704+ //
2705+ // Note: Padding should use the editor's background color, not the
2706+ // background color of the hint itself. That means padding can be used
2707+ // to visually align/separate an inlay hint.
2708+ PaddingRight bool `json:"paddingRight,omitempty"`
2709+ // A data entry field that is preserved on an inlay hint between
2710+ // a `textDocument/inlayHint` and a `inlayHint/resolve` request.
2711+ Data interface{} `json:"data,omitempty"`
2712+}
2713+
2714+// Inlay hint client capabilities.
2715+//
2716+// @since 3.17.0
2717+//
2718+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlayHintClientCapabilities
2719+type InlayHintClientCapabilities struct {
2720+ // Whether inlay hints support dynamic registration.
2721+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
2722+ // Indicates which properties a client can resolve lazily on an inlay
2723+ // hint.
2724+ ResolveSupport *ClientInlayHintResolveOptions `json:"resolveSupport,omitempty"`
2725+}
2726+
2727+// Inlay hint kinds.
2728+//
2729+// @since 3.17.0
2730+type InlayHintKind uint32
2731+
2732+// An inlay hint label part allows for interactive and composite labels
2733+// of inlay hints.
2734+//
2735+// @since 3.17.0
2736+//
2737+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlayHintLabelPart
2738+type InlayHintLabelPart struct {
2739+ // The value of this label part.
2740+ Value string `json:"value"`
2741+ // The tooltip text when you hover over this label part. Depending on
2742+ // the client capability `inlayHint.resolveSupport` clients might resolve
2743+ // this property late using the resolve request.
2744+ Tooltip *Or_InlayHintLabelPart_tooltip `json:"tooltip,omitempty"`
2745+ // An optional source code location that represents this
2746+ // label part.
2747+ //
2748+ // The editor will use this location for the hover and for code navigation
2749+ // features: This part will become a clickable link that resolves to the
2750+ // definition of the symbol at the given location (not necessarily the
2751+ // location itself), it shows the hover that shows at the given location,
2752+ // and it shows a context menu with further code navigation commands.
2753+ //
2754+ // Depending on the client capability `inlayHint.resolveSupport` clients
2755+ // might resolve this property late using the resolve request.
2756+ Location *Location `json:"location,omitempty"`
2757+ // An optional command for this label part.
2758+ //
2759+ // Depending on the client capability `inlayHint.resolveSupport` clients
2760+ // might resolve this property late using the resolve request.
2761+ Command *Command `json:"command,omitempty"`
2762+}
2763+
2764+// Inlay hint options used during static registration.
2765+//
2766+// @since 3.17.0
2767+//
2768+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlayHintOptions
2769+type InlayHintOptions struct {
2770+ // The server provides support to resolve additional
2771+ // information for an inlay hint item.
2772+ ResolveProvider bool `json:"resolveProvider,omitempty"`
2773+ WorkDoneProgressOptions
2774+}
2775+
2776+// A parameter literal used in inlay hint requests.
2777+//
2778+// @since 3.17.0
2779+//
2780+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlayHintParams
2781+type InlayHintParams struct {
2782+ // The text document.
2783+ TextDocument TextDocumentIdentifier `json:"textDocument"`
2784+ // The document range for which inlay hints should be computed.
2785+ Range Range `json:"range"`
2786+ WorkDoneProgressParams
2787+}
2788+
2789+// Inlay hint options used during static or dynamic registration.
2790+//
2791+// @since 3.17.0
2792+//
2793+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlayHintRegistrationOptions
2794+type InlayHintRegistrationOptions struct {
2795+ InlayHintOptions
2796+ TextDocumentRegistrationOptions
2797+ StaticRegistrationOptions
2798+}
2799+
2800+// Client workspace capabilities specific to inlay hints.
2801+//
2802+// @since 3.17.0
2803+//
2804+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlayHintWorkspaceClientCapabilities
2805+type InlayHintWorkspaceClientCapabilities struct {
2806+ // Whether the client implementation supports a refresh request sent from
2807+ // the server to the client.
2808+ //
2809+ // Note that this event is global and will force the client to refresh all
2810+ // inlay hints currently shown. It should be used with absolute care and
2811+ // is useful for situation where a server for example detects a project wide
2812+ // change that requires such a calculation.
2813+ RefreshSupport bool `json:"refreshSupport,omitempty"`
2814+}
2815+
2816+// Client capabilities specific to inline completions.
2817+//
2818+// @since 3.18.0
2819+// @proposed
2820+//
2821+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineCompletionClientCapabilities
2822+type InlineCompletionClientCapabilities struct {
2823+ // Whether implementation supports dynamic registration for inline completion providers.
2824+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
2825+}
2826+
2827+// Provides information about the context in which an inline completion was requested.
2828+//
2829+// @since 3.18.0
2830+// @proposed
2831+//
2832+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineCompletionContext
2833+type InlineCompletionContext struct {
2834+ // Describes how the inline completion was triggered.
2835+ TriggerKind InlineCompletionTriggerKind `json:"triggerKind"`
2836+ // Provides information about the currently selected item in the autocomplete widget if it is visible.
2837+ SelectedCompletionInfo *SelectedCompletionInfo `json:"selectedCompletionInfo,omitempty"`
2838+}
2839+
2840+// An inline completion item represents a text snippet that is proposed inline to complete text that is being typed.
2841+//
2842+// @since 3.18.0
2843+// @proposed
2844+//
2845+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineCompletionItem
2846+type InlineCompletionItem struct {
2847+ // The text to replace the range with. Must be set.
2848+ InsertText Or_InlineCompletionItem_insertText `json:"insertText"`
2849+ // A text that is used to decide if this inline completion should be shown. When `falsy` the {@link InlineCompletionItem.insertText} is used.
2850+ FilterText string `json:"filterText,omitempty"`
2851+ // The range to replace. Must begin and end on the same line.
2852+ Range *Range `json:"range,omitempty"`
2853+ // An optional {@link Command} that is executed *after* inserting this completion.
2854+ Command *Command `json:"command,omitempty"`
2855+}
2856+
2857+// Represents a collection of {@link InlineCompletionItem inline completion items} to be presented in the editor.
2858+//
2859+// @since 3.18.0
2860+// @proposed
2861+//
2862+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineCompletionList
2863+type InlineCompletionList struct {
2864+ // The inline completion items
2865+ Items []InlineCompletionItem `json:"items"`
2866+}
2867+
2868+// Inline completion options used during static registration.
2869+//
2870+// @since 3.18.0
2871+// @proposed
2872+//
2873+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineCompletionOptions
2874+type InlineCompletionOptions struct {
2875+ WorkDoneProgressOptions
2876+}
2877+
2878+// A parameter literal used in inline completion requests.
2879+//
2880+// @since 3.18.0
2881+// @proposed
2882+//
2883+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineCompletionParams
2884+type InlineCompletionParams struct {
2885+ // Additional information about the context in which inline completions were
2886+ // requested.
2887+ Context InlineCompletionContext `json:"context"`
2888+ TextDocumentPositionParams
2889+ WorkDoneProgressParams
2890+}
2891+
2892+// Inline completion options used during static or dynamic registration.
2893+//
2894+// @since 3.18.0
2895+// @proposed
2896+//
2897+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineCompletionRegistrationOptions
2898+type InlineCompletionRegistrationOptions struct {
2899+ InlineCompletionOptions
2900+ TextDocumentRegistrationOptions
2901+ StaticRegistrationOptions
2902+}
2903+
2904+// Describes how an {@link InlineCompletionItemProvider inline completion provider} was triggered.
2905+//
2906+// @since 3.18.0
2907+// @proposed
2908+type InlineCompletionTriggerKind uint32
2909+
2910+// Inline value information can be provided by different means:
2911+//
2912+// - directly as a text value (class InlineValueText).
2913+// - as a name to use for a variable lookup (class InlineValueVariableLookup)
2914+// - as an evaluatable expression (class InlineValueEvaluatableExpression)
2915+//
2916+// The InlineValue types combines all inline value types into one type.
2917+//
2918+// @since 3.17.0
2919+//
2920+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValue
2921+type InlineValue = Or_InlineValue // (alias)
2922+// Client capabilities specific to inline values.
2923+//
2924+// @since 3.17.0
2925+//
2926+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValueClientCapabilities
2927+type InlineValueClientCapabilities struct {
2928+ // Whether implementation supports dynamic registration for inline value providers.
2929+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
2930+}
2931+
2932+// @since 3.17.0
2933+//
2934+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValueContext
2935+type InlineValueContext struct {
2936+ // The stack frame (as a DAP Id) where the execution has stopped.
2937+ FrameID int32 `json:"frameId"`
2938+ // The document range where execution has stopped.
2939+ // Typically the end position of the range denotes the line where the inline values are shown.
2940+ StoppedLocation Range `json:"stoppedLocation"`
2941+}
2942+
2943+// Provide an inline value through an expression evaluation.
2944+// If only a range is specified, the expression will be extracted from the underlying document.
2945+// An optional expression can be used to override the extracted expression.
2946+//
2947+// @since 3.17.0
2948+//
2949+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValueEvaluatableExpression
2950+type InlineValueEvaluatableExpression struct {
2951+ // The document range for which the inline value applies.
2952+ // The range is used to extract the evaluatable expression from the underlying document.
2953+ Range Range `json:"range"`
2954+ // If specified the expression overrides the extracted expression.
2955+ Expression string `json:"expression,omitempty"`
2956+}
2957+
2958+// Inline value options used during static registration.
2959+//
2960+// @since 3.17.0
2961+//
2962+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValueOptions
2963+type InlineValueOptions struct {
2964+ WorkDoneProgressOptions
2965+}
2966+
2967+// A parameter literal used in inline value requests.
2968+//
2969+// @since 3.17.0
2970+//
2971+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValueParams
2972+type InlineValueParams struct {
2973+ // The text document.
2974+ TextDocument TextDocumentIdentifier `json:"textDocument"`
2975+ // The document range for which inline values should be computed.
2976+ Range Range `json:"range"`
2977+ // Additional information about the context in which inline values were
2978+ // requested.
2979+ Context InlineValueContext `json:"context"`
2980+ WorkDoneProgressParams
2981+}
2982+
2983+// Inline value options used during static or dynamic registration.
2984+//
2985+// @since 3.17.0
2986+//
2987+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValueRegistrationOptions
2988+type InlineValueRegistrationOptions struct {
2989+ InlineValueOptions
2990+ TextDocumentRegistrationOptions
2991+ StaticRegistrationOptions
2992+}
2993+
2994+// Provide inline value as text.
2995+//
2996+// @since 3.17.0
2997+//
2998+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValueText
2999+type InlineValueText struct {
3000+ // The document range for which the inline value applies.
3001+ Range Range `json:"range"`
3002+ // The text of the inline value.
3003+ Text string `json:"text"`
3004+}
3005+
3006+// Provide inline value through a variable lookup.
3007+// If only a range is specified, the variable name will be extracted from the underlying document.
3008+// An optional variable name can be used to override the extracted name.
3009+//
3010+// @since 3.17.0
3011+//
3012+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValueVariableLookup
3013+type InlineValueVariableLookup struct {
3014+ // The document range for which the inline value applies.
3015+ // The range is used to extract the variable name from the underlying document.
3016+ Range Range `json:"range"`
3017+ // If specified the name of the variable to look up.
3018+ VariableName string `json:"variableName,omitempty"`
3019+ // How to perform the lookup.
3020+ CaseSensitiveLookup bool `json:"caseSensitiveLookup"`
3021+}
3022+
3023+// Client workspace capabilities specific to inline values.
3024+//
3025+// @since 3.17.0
3026+//
3027+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValueWorkspaceClientCapabilities
3028+type InlineValueWorkspaceClientCapabilities struct {
3029+ // Whether the client implementation supports a refresh request sent from the
3030+ // server to the client.
3031+ //
3032+ // Note that this event is global and will force the client to refresh all
3033+ // inline values currently shown. It should be used with absolute care and is
3034+ // useful for situation where a server for example detects a project wide
3035+ // change that requires such a calculation.
3036+ RefreshSupport bool `json:"refreshSupport,omitempty"`
3037+}
3038+
3039+// A special text edit to provide an insert and a replace operation.
3040+//
3041+// @since 3.16.0
3042+//
3043+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#insertReplaceEdit
3044+type InsertReplaceEdit struct {
3045+ // The string to be inserted.
3046+ NewText string `json:"newText"`
3047+ // The range if the insert is requested
3048+ Insert Range `json:"insert"`
3049+ // The range if the replace is requested.
3050+ Replace Range `json:"replace"`
3051+}
3052+
3053+// Defines whether the insert text in a completion item should be interpreted as
3054+// plain text or a snippet.
3055+type InsertTextFormat uint32
3056+
3057+// How whitespace and indentation is handled during completion
3058+// item insertion.
3059+//
3060+// @since 3.16.0
3061+type InsertTextMode uint32
3062+type LSPAny = interface{}
3063+
3064+// LSP arrays.
3065+// @since 3.17.0
3066+//
3067+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#lSPArray
3068+type LSPArray = []interface{} // (alias)
3069+type LSPErrorCodes int32
3070+
3071+// LSP object definition.
3072+// @since 3.17.0
3073+//
3074+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#lSPObject
3075+type LSPObject = map[string]LSPAny // (alias)
3076+// Predefined Language kinds
3077+// @since 3.18.0
3078+// @proposed
3079+type LanguageKind string
3080+
3081+// Client capabilities for the linked editing range request.
3082+//
3083+// @since 3.16.0
3084+//
3085+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#linkedEditingRangeClientCapabilities
3086+type LinkedEditingRangeClientCapabilities struct {
3087+ // Whether implementation supports dynamic registration. If this is set to `true`
3088+ // the client supports the new `(TextDocumentRegistrationOptions & StaticRegistrationOptions)`
3089+ // return value for the corresponding server capability as well.
3090+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
3091+}
3092+
3093+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#linkedEditingRangeOptions
3094+type LinkedEditingRangeOptions struct {
3095+ WorkDoneProgressOptions
3096+}
3097+
3098+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#linkedEditingRangeParams
3099+type LinkedEditingRangeParams struct {
3100+ TextDocumentPositionParams
3101+ WorkDoneProgressParams
3102+}
3103+
3104+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#linkedEditingRangeRegistrationOptions
3105+type LinkedEditingRangeRegistrationOptions struct {
3106+ TextDocumentRegistrationOptions
3107+ LinkedEditingRangeOptions
3108+ StaticRegistrationOptions
3109+}
3110+
3111+// The result of a linked editing range request.
3112+//
3113+// @since 3.16.0
3114+//
3115+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#linkedEditingRanges
3116+type LinkedEditingRanges struct {
3117+ // A list of ranges that can be edited together. The ranges must have
3118+ // identical length and contain identical text content. The ranges cannot overlap.
3119+ Ranges []Range `json:"ranges"`
3120+ // An optional word pattern (regular expression) that describes valid contents for
3121+ // the given ranges. If no pattern is provided, the client configuration's word
3122+ // pattern will be used.
3123+ WordPattern string `json:"wordPattern,omitempty"`
3124+}
3125+
3126+// created for Literal (Lit_ClientSemanticTokensRequestOptions_range_Item1)
3127+type Lit_ClientSemanticTokensRequestOptions_range_Item1 struct {
3128+}
3129+
3130+// created for Literal (Lit_SemanticTokensOptions_range_Item1)
3131+type Lit_SemanticTokensOptions_range_Item1 struct {
3132+}
3133+
3134+// Represents a location inside a resource, such as a line
3135+// inside a text file.
3136+//
3137+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#location
3138+type Location struct {
3139+ URI DocumentUri `json:"uri"`
3140+ Range Range `json:"range"`
3141+}
3142+
3143+// Represents the connection of two locations. Provides additional metadata over normal {@link Location locations},
3144+// including an origin range.
3145+//
3146+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#locationLink
3147+type LocationLink struct {
3148+ // Span of the origin of this link.
3149+ //
3150+ // Used as the underlined span for mouse interaction. Defaults to the word range at
3151+ // the definition position.
3152+ OriginSelectionRange *Range `json:"originSelectionRange,omitempty"`
3153+ // The target resource identifier of this link.
3154+ TargetURI DocumentUri `json:"targetUri"`
3155+ // The full target range of this link. If the target for example is a symbol then target range is the
3156+ // range enclosing this symbol not including leading/trailing whitespace but everything else
3157+ // like comments. This information is typically used to highlight the range in the editor.
3158+ TargetRange Range `json:"targetRange"`
3159+ // The range that should be selected and revealed when this link is being followed, e.g the name of a function.
3160+ // Must be contained by the `targetRange`. See also `DocumentSymbol#range`
3161+ TargetSelectionRange Range `json:"targetSelectionRange"`
3162+}
3163+
3164+// Location with only uri and does not include range.
3165+//
3166+// @since 3.18.0
3167+//
3168+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#locationUriOnly
3169+type LocationUriOnly struct {
3170+ URI DocumentUri `json:"uri"`
3171+}
3172+
3173+// The log message parameters.
3174+//
3175+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#logMessageParams
3176+type LogMessageParams struct {
3177+ // The message type. See {@link MessageType}
3178+ Type MessageType `json:"type"`
3179+ // The actual message.
3180+ Message string `json:"message"`
3181+}
3182+
3183+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#logTraceParams
3184+type LogTraceParams struct {
3185+ Message string `json:"message"`
3186+ Verbose string `json:"verbose,omitempty"`
3187+}
3188+
3189+// Client capabilities specific to the used markdown parser.
3190+//
3191+// @since 3.16.0
3192+//
3193+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#markdownClientCapabilities
3194+type MarkdownClientCapabilities struct {
3195+ // The name of the parser.
3196+ Parser string `json:"parser"`
3197+ // The version of the parser.
3198+ Version string `json:"version,omitempty"`
3199+ // A list of HTML tags that the client allows / supports in
3200+ // Markdown.
3201+ //
3202+ // @since 3.17.0
3203+ AllowedTags []string `json:"allowedTags,omitempty"`
3204+}
3205+
3206+// MarkedString can be used to render human readable text. It is either a markdown string
3207+// or a code-block that provides a language and a code snippet. The language identifier
3208+// is semantically equal to the optional language identifier in fenced code blocks in GitHub
3209+// issues. See https://help.github.com/articles/creating-and-highlighting-code-blocks/#syntax-highlighting
3210+//
3211+// The pair of a language and a value is an equivalent to markdown:
3212+// ```${language}
3213+// ${value}
3214+// ```
3215+//
3216+// Note that markdown strings will be sanitized - that means html will be escaped.
3217+// @deprecated use MarkupContent instead.
3218+//
3219+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#markedString
3220+type MarkedString = Or_MarkedString // (alias)
3221+// @since 3.18.0
3222+// @deprecated use MarkupContent instead.
3223+//
3224+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#markedStringWithLanguage
3225+type MarkedStringWithLanguage struct {
3226+ Language string `json:"language"`
3227+ Value string `json:"value"`
3228+}
3229+
3230+// A `MarkupContent` literal represents a string value which content is interpreted base on its
3231+// kind flag. Currently the protocol supports `plaintext` and `markdown` as markup kinds.
3232+//
3233+// If the kind is `markdown` then the value can contain fenced code blocks like in GitHub issues.
3234+// See https://help.github.com/articles/creating-and-highlighting-code-blocks/#syntax-highlighting
3235+//
3236+// Here is an example how such a string can be constructed using JavaScript / TypeScript:
3237+// ```ts
3238+//
3239+// let markdown: MarkdownContent = {
3240+// kind: MarkupKind.Markdown,
3241+// value: [
3242+// '# Header',
3243+// 'Some text',
3244+// '```typescript',
3245+// 'someCode();',
3246+// '```'
3247+// ].join('\n')
3248+// };
3249+//
3250+// ```
3251+//
3252+// *Please Note* that clients might sanitize the return markdown. A client could decide to
3253+// remove HTML from the markdown to avoid script execution.
3254+//
3255+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#markupContent
3256+type MarkupContent struct {
3257+ // The type of the Markup
3258+ Kind MarkupKind `json:"kind"`
3259+ // The content itself
3260+ Value string `json:"value"`
3261+}
3262+
3263+// Describes the content type that a client supports in various
3264+// result literals like `Hover`, `ParameterInfo` or `CompletionItem`.
3265+//
3266+// Please note that `MarkupKinds` must not start with a `$`. This kinds
3267+// are reserved for internal usage.
3268+type MarkupKind string
3269+
3270+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#messageActionItem
3271+type MessageActionItem struct {
3272+ // A short title like 'Retry', 'Open Log' etc.
3273+ Title string `json:"title"`
3274+}
3275+
3276+// The message type
3277+type MessageType uint32
3278+
3279+// Moniker definition to match LSIF 0.5 moniker definition.
3280+//
3281+// @since 3.16.0
3282+//
3283+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#moniker
3284+type Moniker struct {
3285+ // The scheme of the moniker. For example tsc or .Net
3286+ Scheme string `json:"scheme"`
3287+ // The identifier of the moniker. The value is opaque in LSIF however
3288+ // schema owners are allowed to define the structure if they want.
3289+ Identifier string `json:"identifier"`
3290+ // The scope in which the moniker is unique
3291+ Unique UniquenessLevel `json:"unique"`
3292+ // The moniker kind if known.
3293+ Kind *MonikerKind `json:"kind,omitempty"`
3294+}
3295+
3296+// Client capabilities specific to the moniker request.
3297+//
3298+// @since 3.16.0
3299+//
3300+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#monikerClientCapabilities
3301+type MonikerClientCapabilities struct {
3302+ // Whether moniker supports dynamic registration. If this is set to `true`
3303+ // the client supports the new `MonikerRegistrationOptions` return value
3304+ // for the corresponding server capability as well.
3305+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
3306+}
3307+
3308+// The moniker kind.
3309+//
3310+// @since 3.16.0
3311+type MonikerKind string
3312+
3313+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#monikerOptions
3314+type MonikerOptions struct {
3315+ WorkDoneProgressOptions
3316+}
3317+
3318+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#monikerParams
3319+type MonikerParams struct {
3320+ TextDocumentPositionParams
3321+ WorkDoneProgressParams
3322+ PartialResultParams
3323+}
3324+
3325+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#monikerRegistrationOptions
3326+type MonikerRegistrationOptions struct {
3327+ TextDocumentRegistrationOptions
3328+ MonikerOptions
3329+}
3330+
3331+// A notebook cell.
3332+//
3333+// A cell's document URI must be unique across ALL notebook
3334+// cells and can therefore be used to uniquely identify a
3335+// notebook cell or the cell's text document.
3336+//
3337+// @since 3.17.0
3338+//
3339+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookCell
3340+type NotebookCell struct {
3341+ // The cell's kind
3342+ Kind NotebookCellKind `json:"kind"`
3343+ // The URI of the cell's text document
3344+ // content.
3345+ Document DocumentUri `json:"document"`
3346+ // Additional metadata stored with the cell.
3347+ //
3348+ // Note: should always be an object literal (e.g. LSPObject)
3349+ Metadata *LSPObject `json:"metadata,omitempty"`
3350+ // Additional execution summary information
3351+ // if supported by the client.
3352+ ExecutionSummary *ExecutionSummary `json:"executionSummary,omitempty"`
3353+}
3354+
3355+// A change describing how to move a `NotebookCell`
3356+// array from state S to S'.
3357+//
3358+// @since 3.17.0
3359+//
3360+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookCellArrayChange
3361+type NotebookCellArrayChange struct {
3362+ // The start oftest of the cell that changed.
3363+ Start uint32 `json:"start"`
3364+ // The deleted cells
3365+ DeleteCount uint32 `json:"deleteCount"`
3366+ // The new cells, if any
3367+ Cells []NotebookCell `json:"cells,omitempty"`
3368+}
3369+
3370+// A notebook cell kind.
3371+//
3372+// @since 3.17.0
3373+type NotebookCellKind uint32
3374+
3375+// @since 3.18.0
3376+//
3377+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookCellLanguage
3378+type NotebookCellLanguage struct {
3379+ Language string `json:"language"`
3380+}
3381+
3382+// A notebook cell text document filter denotes a cell text
3383+// document by different properties.
3384+//
3385+// @since 3.17.0
3386+//
3387+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookCellTextDocumentFilter
3388+type NotebookCellTextDocumentFilter struct {
3389+ // A filter that matches against the notebook
3390+ // containing the notebook cell. If a string
3391+ // value is provided it matches against the
3392+ // notebook type. '*' matches every notebook.
3393+ Notebook Or_NotebookCellTextDocumentFilter_notebook `json:"notebook"`
3394+ // A language id like `python`.
3395+ //
3396+ // Will be matched against the language id of the
3397+ // notebook cell document. '*' matches every language.
3398+ Language string `json:"language,omitempty"`
3399+}
3400+
3401+// A notebook document.
3402+//
3403+// @since 3.17.0
3404+//
3405+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocument
3406+type NotebookDocument struct {
3407+ // The notebook document's uri.
3408+ URI URI `json:"uri"`
3409+ // The type of the notebook.
3410+ NotebookType string `json:"notebookType"`
3411+ // The version number of this document (it will increase after each
3412+ // change, including undo/redo).
3413+ Version int32 `json:"version"`
3414+ // Additional metadata stored with the notebook
3415+ // document.
3416+ //
3417+ // Note: should always be an object literal (e.g. LSPObject)
3418+ Metadata *LSPObject `json:"metadata,omitempty"`
3419+ // The cells of a notebook.
3420+ Cells []NotebookCell `json:"cells"`
3421+}
3422+
3423+// Structural changes to cells in a notebook document.
3424+//
3425+// @since 3.18.0
3426+//
3427+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentCellChangeStructure
3428+type NotebookDocumentCellChangeStructure struct {
3429+ // The change to the cell array.
3430+ Array NotebookCellArrayChange `json:"array"`
3431+ // Additional opened cell text documents.
3432+ DidOpen []TextDocumentItem `json:"didOpen,omitempty"`
3433+ // Additional closed cell text documents.
3434+ DidClose []TextDocumentIdentifier `json:"didClose,omitempty"`
3435+}
3436+
3437+// Cell changes to a notebook document.
3438+//
3439+// @since 3.18.0
3440+//
3441+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentCellChanges
3442+type NotebookDocumentCellChanges struct {
3443+ // Changes to the cell structure to add or
3444+ // remove cells.
3445+ Structure *NotebookDocumentCellChangeStructure `json:"structure,omitempty"`
3446+ // Changes to notebook cells properties like its
3447+ // kind, execution summary or metadata.
3448+ Data []NotebookCell `json:"data,omitempty"`
3449+ // Changes to the text content of notebook cells.
3450+ TextContent []NotebookDocumentCellContentChanges `json:"textContent,omitempty"`
3451+}
3452+
3453+// Content changes to a cell in a notebook document.
3454+//
3455+// @since 3.18.0
3456+//
3457+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentCellContentChanges
3458+type NotebookDocumentCellContentChanges struct {
3459+ Document VersionedTextDocumentIdentifier `json:"document"`
3460+ Changes []TextDocumentContentChangeEvent `json:"changes"`
3461+}
3462+
3463+// A change event for a notebook document.
3464+//
3465+// @since 3.17.0
3466+//
3467+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentChangeEvent
3468+type NotebookDocumentChangeEvent struct {
3469+ // The changed meta data if any.
3470+ //
3471+ // Note: should always be an object literal (e.g. LSPObject)
3472+ Metadata *LSPObject `json:"metadata,omitempty"`
3473+ // Changes to cells
3474+ Cells *NotebookDocumentCellChanges `json:"cells,omitempty"`
3475+}
3476+
3477+// Capabilities specific to the notebook document support.
3478+//
3479+// @since 3.17.0
3480+//
3481+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentClientCapabilities
3482+type NotebookDocumentClientCapabilities struct {
3483+ // Capabilities specific to notebook document synchronization
3484+ //
3485+ // @since 3.17.0
3486+ Synchronization NotebookDocumentSyncClientCapabilities `json:"synchronization"`
3487+}
3488+
3489+// A notebook document filter denotes a notebook document by
3490+// different properties. The properties will be match
3491+// against the notebook's URI (same as with documents)
3492+//
3493+// @since 3.17.0
3494+//
3495+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentFilter
3496+type NotebookDocumentFilter = Or_NotebookDocumentFilter // (alias)
3497+// A notebook document filter where `notebookType` is required field.
3498+//
3499+// @since 3.18.0
3500+//
3501+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentFilterNotebookType
3502+type NotebookDocumentFilterNotebookType struct {
3503+ // The type of the enclosing notebook.
3504+ NotebookType string `json:"notebookType"`
3505+ // A Uri {@link Uri.scheme scheme}, like `file` or `untitled`.
3506+ Scheme string `json:"scheme,omitempty"`
3507+ // A glob pattern.
3508+ Pattern *GlobPattern `json:"pattern,omitempty"`
3509+}
3510+
3511+// A notebook document filter where `pattern` is required field.
3512+//
3513+// @since 3.18.0
3514+//
3515+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentFilterPattern
3516+type NotebookDocumentFilterPattern struct {
3517+ // The type of the enclosing notebook.
3518+ NotebookType string `json:"notebookType,omitempty"`
3519+ // A Uri {@link Uri.scheme scheme}, like `file` or `untitled`.
3520+ Scheme string `json:"scheme,omitempty"`
3521+ // A glob pattern.
3522+ Pattern GlobPattern `json:"pattern"`
3523+}
3524+
3525+// A notebook document filter where `scheme` is required field.
3526+//
3527+// @since 3.18.0
3528+//
3529+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentFilterScheme
3530+type NotebookDocumentFilterScheme struct {
3531+ // The type of the enclosing notebook.
3532+ NotebookType string `json:"notebookType,omitempty"`
3533+ // A Uri {@link Uri.scheme scheme}, like `file` or `untitled`.
3534+ Scheme string `json:"scheme"`
3535+ // A glob pattern.
3536+ Pattern *GlobPattern `json:"pattern,omitempty"`
3537+}
3538+
3539+// @since 3.18.0
3540+//
3541+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentFilterWithCells
3542+type NotebookDocumentFilterWithCells struct {
3543+ // The notebook to be synced If a string
3544+ // value is provided it matches against the
3545+ // notebook type. '*' matches every notebook.
3546+ Notebook *Or_NotebookDocumentFilterWithCells_notebook `json:"notebook,omitempty"`
3547+ // The cells of the matching notebook to be synced.
3548+ Cells []NotebookCellLanguage `json:"cells"`
3549+}
3550+
3551+// @since 3.18.0
3552+//
3553+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentFilterWithNotebook
3554+type NotebookDocumentFilterWithNotebook struct {
3555+ // The notebook to be synced If a string
3556+ // value is provided it matches against the
3557+ // notebook type. '*' matches every notebook.
3558+ Notebook Or_NotebookDocumentFilterWithNotebook_notebook `json:"notebook"`
3559+ // The cells of the matching notebook to be synced.
3560+ Cells []NotebookCellLanguage `json:"cells,omitempty"`
3561+}
3562+
3563+// A literal to identify a notebook document in the client.
3564+//
3565+// @since 3.17.0
3566+//
3567+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentIdentifier
3568+type NotebookDocumentIdentifier struct {
3569+ // The notebook document's uri.
3570+ URI URI `json:"uri"`
3571+}
3572+
3573+// Notebook specific client capabilities.
3574+//
3575+// @since 3.17.0
3576+//
3577+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentSyncClientCapabilities
3578+type NotebookDocumentSyncClientCapabilities struct {
3579+ // Whether implementation supports dynamic registration. If this is
3580+ // set to `true` the client supports the new
3581+ // `(TextDocumentRegistrationOptions & StaticRegistrationOptions)`
3582+ // return value for the corresponding server capability as well.
3583+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
3584+ // The client supports sending execution summary data per cell.
3585+ ExecutionSummarySupport bool `json:"executionSummarySupport,omitempty"`
3586+}
3587+
3588+// Options specific to a notebook plus its cells
3589+// to be synced to the server.
3590+//
3591+// If a selector provides a notebook document
3592+// filter but no cell selector all cells of a
3593+// matching notebook document will be synced.
3594+//
3595+// If a selector provides no notebook document
3596+// filter but only a cell selector all notebook
3597+// document that contain at least one matching
3598+// cell will be synced.
3599+//
3600+// @since 3.17.0
3601+//
3602+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentSyncOptions
3603+type NotebookDocumentSyncOptions struct {
3604+ // The notebooks to be synced
3605+ NotebookSelector []Or_NotebookDocumentSyncOptions_notebookSelector_Elem `json:"notebookSelector"`
3606+ // Whether save notification should be forwarded to
3607+ // the server. Will only be honored if mode === `notebook`.
3608+ Save bool `json:"save,omitempty"`
3609+}
3610+
3611+// Registration options specific to a notebook.
3612+//
3613+// @since 3.17.0
3614+//
3615+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentSyncRegistrationOptions
3616+type NotebookDocumentSyncRegistrationOptions struct {
3617+ NotebookDocumentSyncOptions
3618+ StaticRegistrationOptions
3619+}
3620+
3621+// A text document identifier to optionally denote a specific version of a text document.
3622+//
3623+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#optionalVersionedTextDocumentIdentifier
3624+type OptionalVersionedTextDocumentIdentifier struct {
3625+ // The version number of this document. If a versioned text document identifier
3626+ // is sent from the server to the client and the file is not open in the editor
3627+ // (the server has not received an open notification before) the server can send
3628+ // `null` to indicate that the version is unknown and the content on disk is the
3629+ // truth (as specified with document content ownership).
3630+ Version int32 `json:"version"`
3631+ TextDocumentIdentifier
3632+}
3633+
3634+// created for Or [int32 string]
3635+type Or_CancelParams_id struct {
3636+ Value interface{} `json:"value"`
3637+}
3638+
3639+// created for Or [ClientSemanticTokensRequestFullDelta bool]
3640+type Or_ClientSemanticTokensRequestOptions_full struct {
3641+ Value interface{} `json:"value"`
3642+}
3643+
3644+// created for Or [Lit_ClientSemanticTokensRequestOptions_range_Item1 bool]
3645+type Or_ClientSemanticTokensRequestOptions_range struct {
3646+ Value interface{} `json:"value"`
3647+}
3648+
3649+// created for Or [EditRangeWithInsertReplace Range]
3650+type Or_CompletionItemDefaults_editRange struct {
3651+ Value interface{} `json:"value"`
3652+}
3653+
3654+// created for Or [MarkupContent string]
3655+type Or_CompletionItem_documentation struct {
3656+ Value interface{} `json:"value"`
3657+}
3658+
3659+// created for Or [InsertReplaceEdit TextEdit]
3660+type Or_CompletionItem_textEdit struct {
3661+ Value interface{} `json:"value"`
3662+}
3663+
3664+// created for Or [Location []Location]
3665+type Or_Declaration struct {
3666+ Value interface{} `json:"value"`
3667+}
3668+
3669+// created for Or [Location []Location]
3670+type Or_Definition struct {
3671+ Value interface{} `json:"value"`
3672+}
3673+
3674+// created for Or [int32 string]
3675+type Or_Diagnostic_code struct {
3676+ Value interface{} `json:"value"`
3677+}
3678+
3679+// created for Or [[]string string]
3680+type Or_DidChangeConfigurationRegistrationOptions_section struct {
3681+ Value interface{} `json:"value"`
3682+}
3683+
3684+// created for Or [RelatedFullDocumentDiagnosticReport RelatedUnchangedDocumentDiagnosticReport]
3685+type Or_DocumentDiagnosticReport struct {
3686+ Value interface{} `json:"value"`
3687+}
3688+
3689+// created for Or [FullDocumentDiagnosticReport UnchangedDocumentDiagnosticReport]
3690+type Or_DocumentDiagnosticReportPartialResult_relatedDocuments_Value struct {
3691+ Value interface{} `json:"value"`
3692+}
3693+
3694+// created for Or [NotebookCellTextDocumentFilter TextDocumentFilter]
3695+type Or_DocumentFilter struct {
3696+ Value interface{} `json:"value"`
3697+}
3698+
3699+// created for Or [Pattern RelativePattern]
3700+type Or_GlobPattern struct {
3701+ Value interface{} `json:"value"`
3702+}
3703+
3704+// created for Or [MarkedString MarkupContent []MarkedString]
3705+type Or_Hover_contents struct {
3706+ Value interface{} `json:"value"`
3707+}
3708+
3709+// created for Or [MarkupContent string]
3710+type Or_InlayHintLabelPart_tooltip struct {
3711+ Value interface{} `json:"value"`
3712+}
3713+
3714+// created for Or [[]InlayHintLabelPart string]
3715+type Or_InlayHint_label struct {
3716+ Value interface{} `json:"value"`
3717+}
3718+
3719+// created for Or [MarkupContent string]
3720+type Or_InlayHint_tooltip struct {
3721+ Value interface{} `json:"value"`
3722+}
3723+
3724+// created for Or [StringValue string]
3725+type Or_InlineCompletionItem_insertText struct {
3726+ Value interface{} `json:"value"`
3727+}
3728+
3729+// created for Or [InlineValueEvaluatableExpression InlineValueText InlineValueVariableLookup]
3730+type Or_InlineValue struct {
3731+ Value interface{} `json:"value"`
3732+}
3733+
3734+// created for Or [LSPArray LSPObject bool float64 int32 string uint32]
3735+type Or_LSPAny struct {
3736+ Value interface{} `json:"value"`
3737+}
3738+
3739+// created for Or [MarkedStringWithLanguage string]
3740+type Or_MarkedString struct {
3741+ Value interface{} `json:"value"`
3742+}
3743+
3744+// created for Or [NotebookDocumentFilter string]
3745+type Or_NotebookCellTextDocumentFilter_notebook struct {
3746+ Value interface{} `json:"value"`
3747+}
3748+
3749+// created for Or [NotebookDocumentFilterNotebookType NotebookDocumentFilterPattern NotebookDocumentFilterScheme]
3750+type Or_NotebookDocumentFilter struct {
3751+ Value interface{} `json:"value"`
3752+}
3753+
3754+// created for Or [NotebookDocumentFilter string]
3755+type Or_NotebookDocumentFilterWithCells_notebook struct {
3756+ Value interface{} `json:"value"`
3757+}
3758+
3759+// created for Or [NotebookDocumentFilter string]
3760+type Or_NotebookDocumentFilterWithNotebook_notebook struct {
3761+ Value interface{} `json:"value"`
3762+}
3763+
3764+// created for Or [NotebookDocumentFilterWithCells NotebookDocumentFilterWithNotebook]
3765+type Or_NotebookDocumentSyncOptions_notebookSelector_Elem struct {
3766+ Value interface{} `json:"value"`
3767+}
3768+
3769+// created for Or [MarkupContent string]
3770+type Or_ParameterInformation_documentation struct {
3771+ Value interface{} `json:"value"`
3772+}
3773+
3774+// created for Or [Tuple_ParameterInformation_label_Item1 string]
3775+type Or_ParameterInformation_label struct {
3776+ Value interface{} `json:"value"`
3777+}
3778+
3779+// created for Or [PrepareRenameDefaultBehavior PrepareRenamePlaceholder Range]
3780+type Or_PrepareRenameResult struct {
3781+ Value interface{} `json:"value"`
3782+}
3783+
3784+// created for Or [int32 string]
3785+type Or_ProgressToken struct {
3786+ Value interface{} `json:"value"`
3787+}
3788+
3789+// created for Or [FullDocumentDiagnosticReport UnchangedDocumentDiagnosticReport]
3790+type Or_RelatedFullDocumentDiagnosticReport_relatedDocuments_Value struct {
3791+ Value interface{} `json:"value"`
3792+}
3793+
3794+// created for Or [FullDocumentDiagnosticReport UnchangedDocumentDiagnosticReport]
3795+type Or_RelatedUnchangedDocumentDiagnosticReport_relatedDocuments_Value struct {
3796+ Value interface{} `json:"value"`
3797+}
3798+
3799+// created for Or [URI WorkspaceFolder]
3800+type Or_RelativePattern_baseUri struct {
3801+ Value interface{} `json:"value"`
3802+}
3803+
3804+// created for Or [CodeAction Command]
3805+type Or_Result_textDocument_codeAction_Item0_Elem struct {
3806+ Value interface{} `json:"value"`
3807+}
3808+
3809+// created for Or [CompletionList []CompletionItem]
3810+type Or_Result_textDocument_completion struct {
3811+ Value interface{} `json:"value"`
3812+}
3813+
3814+// created for Or [Declaration []DeclarationLink]
3815+type Or_Result_textDocument_declaration struct {
3816+ Value interface{} `json:"value"`
3817+}
3818+
3819+// created for Or [Definition []DefinitionLink]
3820+type Or_Result_textDocument_definition struct {
3821+ Value interface{} `json:"value"`
3822+}
3823+
3824+// created for Or [[]DocumentSymbol []SymbolInformation]
3825+type Or_Result_textDocument_documentSymbol struct {
3826+ Value interface{} `json:"value"`
3827+}
3828+
3829+// created for Or [Definition []DefinitionLink]
3830+type Or_Result_textDocument_implementation struct {
3831+ Value interface{} `json:"value"`
3832+}
3833+
3834+// created for Or [InlineCompletionList []InlineCompletionItem]
3835+type Or_Result_textDocument_inlineCompletion struct {
3836+ Value interface{} `json:"value"`
3837+}
3838+
3839+// created for Or [SemanticTokens SemanticTokensDelta]
3840+type Or_Result_textDocument_semanticTokens_full_delta struct {
3841+ Value interface{} `json:"value"`
3842+}
3843+
3844+// created for Or [Definition []DefinitionLink]
3845+type Or_Result_textDocument_typeDefinition struct {
3846+ Value interface{} `json:"value"`
3847+}
3848+
3849+// created for Or [[]SymbolInformation []WorkspaceSymbol]
3850+type Or_Result_workspace_symbol struct {
3851+ Value interface{} `json:"value"`
3852+}
3853+
3854+// created for Or [SemanticTokensFullDelta bool]
3855+type Or_SemanticTokensOptions_full struct {
3856+ Value interface{} `json:"value"`
3857+}
3858+
3859+// created for Or [Lit_SemanticTokensOptions_range_Item1 bool]
3860+type Or_SemanticTokensOptions_range struct {
3861+ Value interface{} `json:"value"`
3862+}
3863+
3864+// created for Or [CallHierarchyOptions CallHierarchyRegistrationOptions bool]
3865+type Or_ServerCapabilities_callHierarchyProvider struct {
3866+ Value interface{} `json:"value"`
3867+}
3868+
3869+// created for Or [CodeActionOptions bool]
3870+type Or_ServerCapabilities_codeActionProvider struct {
3871+ Value interface{} `json:"value"`
3872+}
3873+
3874+// created for Or [DocumentColorOptions DocumentColorRegistrationOptions bool]
3875+type Or_ServerCapabilities_colorProvider struct {
3876+ Value interface{} `json:"value"`
3877+}
3878+
3879+// created for Or [DeclarationOptions DeclarationRegistrationOptions bool]
3880+type Or_ServerCapabilities_declarationProvider struct {
3881+ Value interface{} `json:"value"`
3882+}
3883+
3884+// created for Or [DefinitionOptions bool]
3885+type Or_ServerCapabilities_definitionProvider struct {
3886+ Value interface{} `json:"value"`
3887+}
3888+
3889+// created for Or [DiagnosticOptions DiagnosticRegistrationOptions]
3890+type Or_ServerCapabilities_diagnosticProvider struct {
3891+ Value interface{} `json:"value"`
3892+}
3893+
3894+// created for Or [DocumentFormattingOptions bool]
3895+type Or_ServerCapabilities_documentFormattingProvider struct {
3896+ Value interface{} `json:"value"`
3897+}
3898+
3899+// created for Or [DocumentHighlightOptions bool]
3900+type Or_ServerCapabilities_documentHighlightProvider struct {
3901+ Value interface{} `json:"value"`
3902+}
3903+
3904+// created for Or [DocumentRangeFormattingOptions bool]
3905+type Or_ServerCapabilities_documentRangeFormattingProvider struct {
3906+ Value interface{} `json:"value"`
3907+}
3908+
3909+// created for Or [DocumentSymbolOptions bool]
3910+type Or_ServerCapabilities_documentSymbolProvider struct {
3911+ Value interface{} `json:"value"`
3912+}
3913+
3914+// created for Or [FoldingRangeOptions FoldingRangeRegistrationOptions bool]
3915+type Or_ServerCapabilities_foldingRangeProvider struct {
3916+ Value interface{} `json:"value"`
3917+}
3918+
3919+// created for Or [HoverOptions bool]
3920+type Or_ServerCapabilities_hoverProvider struct {
3921+ Value interface{} `json:"value"`
3922+}
3923+
3924+// created for Or [ImplementationOptions ImplementationRegistrationOptions bool]
3925+type Or_ServerCapabilities_implementationProvider struct {
3926+ Value interface{} `json:"value"`
3927+}
3928+
3929+// created for Or [InlayHintOptions InlayHintRegistrationOptions bool]
3930+type Or_ServerCapabilities_inlayHintProvider struct {
3931+ Value interface{} `json:"value"`
3932+}
3933+
3934+// created for Or [InlineCompletionOptions bool]
3935+type Or_ServerCapabilities_inlineCompletionProvider struct {
3936+ Value interface{} `json:"value"`
3937+}
3938+
3939+// created for Or [InlineValueOptions InlineValueRegistrationOptions bool]
3940+type Or_ServerCapabilities_inlineValueProvider struct {
3941+ Value interface{} `json:"value"`
3942+}
3943+
3944+// created for Or [LinkedEditingRangeOptions LinkedEditingRangeRegistrationOptions bool]
3945+type Or_ServerCapabilities_linkedEditingRangeProvider struct {
3946+ Value interface{} `json:"value"`
3947+}
3948+
3949+// created for Or [MonikerOptions MonikerRegistrationOptions bool]
3950+type Or_ServerCapabilities_monikerProvider struct {
3951+ Value interface{} `json:"value"`
3952+}
3953+
3954+// created for Or [NotebookDocumentSyncOptions NotebookDocumentSyncRegistrationOptions]
3955+type Or_ServerCapabilities_notebookDocumentSync struct {
3956+ Value interface{} `json:"value"`
3957+}
3958+
3959+// created for Or [ReferenceOptions bool]
3960+type Or_ServerCapabilities_referencesProvider struct {
3961+ Value interface{} `json:"value"`
3962+}
3963+
3964+// created for Or [RenameOptions bool]
3965+type Or_ServerCapabilities_renameProvider struct {
3966+ Value interface{} `json:"value"`
3967+}
3968+
3969+// created for Or [SelectionRangeOptions SelectionRangeRegistrationOptions bool]
3970+type Or_ServerCapabilities_selectionRangeProvider struct {
3971+ Value interface{} `json:"value"`
3972+}
3973+
3974+// created for Or [SemanticTokensOptions SemanticTokensRegistrationOptions]
3975+type Or_ServerCapabilities_semanticTokensProvider struct {
3976+ Value interface{} `json:"value"`
3977+}
3978+
3979+// created for Or [TextDocumentSyncKind TextDocumentSyncOptions]
3980+type Or_ServerCapabilities_textDocumentSync struct {
3981+ Value interface{} `json:"value"`
3982+}
3983+
3984+// created for Or [TypeDefinitionOptions TypeDefinitionRegistrationOptions bool]
3985+type Or_ServerCapabilities_typeDefinitionProvider struct {
3986+ Value interface{} `json:"value"`
3987+}
3988+
3989+// created for Or [TypeHierarchyOptions TypeHierarchyRegistrationOptions bool]
3990+type Or_ServerCapabilities_typeHierarchyProvider struct {
3991+ Value interface{} `json:"value"`
3992+}
3993+
3994+// created for Or [WorkspaceSymbolOptions bool]
3995+type Or_ServerCapabilities_workspaceSymbolProvider struct {
3996+ Value interface{} `json:"value"`
3997+}
3998+
3999+// created for Or [MarkupContent string]
4000+type Or_SignatureInformation_documentation struct {
4001+ Value interface{} `json:"value"`
4002+}
4003+
4004+// created for Or [TextDocumentContentChangePartial TextDocumentContentChangeWholeDocument]
4005+type Or_TextDocumentContentChangeEvent struct {
4006+ Value interface{} `json:"value"`
4007+}
4008+
4009+// created for Or [AnnotatedTextEdit SnippetTextEdit TextEdit]
4010+type Or_TextDocumentEdit_edits_Elem struct {
4011+ Value interface{} `json:"value"`
4012+}
4013+
4014+// created for Or [TextDocumentFilterLanguage TextDocumentFilterPattern TextDocumentFilterScheme]
4015+type Or_TextDocumentFilter struct {
4016+ Value interface{} `json:"value"`
4017+}
4018+
4019+// created for Or [SaveOptions bool]
4020+type Or_TextDocumentSyncOptions_save struct {
4021+ Value interface{} `json:"value"`
4022+}
4023+
4024+// created for Or [WorkspaceFullDocumentDiagnosticReport WorkspaceUnchangedDocumentDiagnosticReport]
4025+type Or_WorkspaceDocumentDiagnosticReport struct {
4026+ Value interface{} `json:"value"`
4027+}
4028+
4029+// created for Or [CreateFile DeleteFile RenameFile TextDocumentEdit]
4030+type Or_WorkspaceEdit_documentChanges_Elem struct {
4031+ Value interface{} `json:"value"`
4032+}
4033+
4034+// created for Or [bool string]
4035+type Or_WorkspaceFoldersServerCapabilities_changeNotifications struct {
4036+ Value interface{} `json:"value"`
4037+}
4038+
4039+// created for Or [TextDocumentContentOptions TextDocumentContentRegistrationOptions]
4040+type Or_WorkspaceOptions_textDocumentContent struct {
4041+ Value interface{} `json:"value"`
4042+}
4043+
4044+// created for Or [Location LocationUriOnly]
4045+type Or_WorkspaceSymbol_location struct {
4046+ Value interface{} `json:"value"`
4047+}
4048+
4049+// The parameters of a configuration request.
4050+//
4051+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#configurationParams
4052+type ParamConfiguration struct {
4053+ Items []ConfigurationItem `json:"items"`
4054+}
4055+
4056+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#initializeParams
4057+type ParamInitialize struct {
4058+ XInitializeParams
4059+ WorkspaceFoldersInitializeParams
4060+}
4061+
4062+// Represents a parameter of a callable-signature. A parameter can
4063+// have a label and a doc-comment.
4064+//
4065+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#parameterInformation
4066+type ParameterInformation struct {
4067+ // The label of this parameter information.
4068+ //
4069+ // Either a string or an inclusive start and exclusive end offsets within its containing
4070+ // signature label. (see SignatureInformation.label). The offsets are based on a UTF-16
4071+ // string representation as `Position` and `Range` does.
4072+ //
4073+ // To avoid ambiguities a server should use the [start, end] offset value instead of using
4074+ // a substring. Whether a client support this is controlled via `labelOffsetSupport` client
4075+ // capability.
4076+ //
4077+ // *Note*: a label of type string should be a substring of its containing signature label.
4078+ // Its intended use case is to highlight the parameter label part in the `SignatureInformation.label`.
4079+ Label Or_ParameterInformation_label `json:"label"`
4080+ // The human-readable doc-comment of this parameter. Will be shown
4081+ // in the UI but can be omitted.
4082+ Documentation *Or_ParameterInformation_documentation `json:"documentation,omitempty"`
4083+}
4084+
4085+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#partialResultParams
4086+type PartialResultParams struct {
4087+ // An optional token that a server can use to report partial results (e.g. streaming) to
4088+ // the client.
4089+ PartialResultToken *ProgressToken `json:"partialResultToken,omitempty"`
4090+}
4091+
4092+// The glob pattern to watch relative to the base path. Glob patterns can have the following syntax:
4093+//
4094+// - `*` to match one or more characters in a path segment
4095+// - `?` to match on one character in a path segment
4096+// - `**` to match any number of path segments, including none
4097+// - `{}` to group conditions (e.g. `**/*.{ts,js}` matches all TypeScript and JavaScript files)
4098+// - `[]` to declare a range of characters to match in a path segment (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …)
4099+// - `[!...]` 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`)
4100+//
4101+// @since 3.17.0
4102+//
4103+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#pattern
4104+type Pattern = string // (alias)
4105+// Position in a text document expressed as zero-based line and character
4106+// offset. Prior to 3.17 the offsets were always based on a UTF-16 string
4107+// representation. So a string of the form `a𐐀b` the character offset of the
4108+// character `a` is 0, the character offset of `𐐀` is 1 and the character
4109+// offset of b is 3 since `𐐀` is represented using two code units in UTF-16.
4110+// Since 3.17 clients and servers can agree on a different string encoding
4111+// representation (e.g. UTF-8). The client announces it's supported encoding
4112+// via the client capability [`general.positionEncodings`](https://microsoft.github.io/language-server-protocol/specifications/specification-current/#clientCapabilities).
4113+// The value is an array of position encodings the client supports, with
4114+// decreasing preference (e.g. the encoding at index `0` is the most preferred
4115+// one). To stay backwards compatible the only mandatory encoding is UTF-16
4116+// represented via the string `utf-16`. The server can pick one of the
4117+// encodings offered by the client and signals that encoding back to the
4118+// client via the initialize result's property
4119+// [`capabilities.positionEncoding`](https://microsoft.github.io/language-server-protocol/specifications/specification-current/#serverCapabilities). If the string value
4120+// `utf-16` is missing from the client's capability `general.positionEncodings`
4121+// servers can safely assume that the client supports UTF-16. If the server
4122+// omits the position encoding in its initialize result the encoding defaults
4123+// to the string value `utf-16`. Implementation considerations: since the
4124+// conversion from one encoding into another requires the content of the
4125+// file / line the conversion is best done where the file is read which is
4126+// usually on the server side.
4127+//
4128+// Positions are line end character agnostic. So you can not specify a position
4129+// that denotes `\r|\n` or `\n|` where `|` represents the character offset.
4130+//
4131+// @since 3.17.0 - support for negotiated position encoding.
4132+//
4133+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#position
4134+type Position struct {
4135+ // Line position in a document (zero-based).
4136+ //
4137+ // 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.
4138+ // If a line number is negative, it defaults to 0.
4139+ Line uint32 `json:"line"`
4140+ // Character offset on a line in a document (zero-based).
4141+ //
4142+ // The meaning of this offset is determined by the negotiated
4143+ // `PositionEncodingKind`.
4144+ //
4145+ // If the character value is greater than the line length it defaults back to the
4146+ // line length.
4147+ Character uint32 `json:"character"`
4148+}
4149+
4150+// A set of predefined position encoding kinds.
4151+//
4152+// @since 3.17.0
4153+type PositionEncodingKind string
4154+
4155+// @since 3.18.0
4156+//
4157+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#prepareRenameDefaultBehavior
4158+type PrepareRenameDefaultBehavior struct {
4159+ DefaultBehavior bool `json:"defaultBehavior"`
4160+}
4161+
4162+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#prepareRenameParams
4163+type PrepareRenameParams struct {
4164+ TextDocumentPositionParams
4165+ WorkDoneProgressParams
4166+}
4167+
4168+// @since 3.18.0
4169+//
4170+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#prepareRenamePlaceholder
4171+type PrepareRenamePlaceholder struct {
4172+ Range Range `json:"range"`
4173+ Placeholder string `json:"placeholder"`
4174+}
4175+
4176+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#prepareRenameResult
4177+type PrepareRenameResult = Or_PrepareRenameResult // (alias)
4178+type PrepareSupportDefaultBehavior uint32
4179+
4180+// A previous result id in a workspace pull request.
4181+//
4182+// @since 3.17.0
4183+//
4184+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#previousResultId
4185+type PreviousResultID struct {
4186+ // The URI for which the client knowns a
4187+ // result id.
4188+ URI DocumentUri `json:"uri"`
4189+ // The value of the previous result id.
4190+ Value string `json:"value"`
4191+}
4192+
4193+// A previous result id in a workspace pull request.
4194+//
4195+// @since 3.17.0
4196+//
4197+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#previousResultId
4198+type PreviousResultId struct {
4199+ // The URI for which the client knowns a
4200+ // result id.
4201+ URI DocumentUri `json:"uri"`
4202+ // The value of the previous result id.
4203+ Value string `json:"value"`
4204+}
4205+
4206+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#progressParams
4207+type ProgressParams struct {
4208+ // The progress token provided by the client or server.
4209+ Token ProgressToken `json:"token"`
4210+ // The progress data.
4211+ Value interface{} `json:"value"`
4212+}
4213+
4214+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#progressToken
4215+type ProgressToken = Or_ProgressToken // (alias)
4216+// The publish diagnostic client capabilities.
4217+//
4218+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#publishDiagnosticsClientCapabilities
4219+type PublishDiagnosticsClientCapabilities struct {
4220+ // Whether the client interprets the version property of the
4221+ // `textDocument/publishDiagnostics` notification's parameter.
4222+ //
4223+ // @since 3.15.0
4224+ VersionSupport bool `json:"versionSupport,omitempty"`
4225+ DiagnosticsCapabilities
4226+}
4227+
4228+// The publish diagnostic notification's parameters.
4229+//
4230+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#publishDiagnosticsParams
4231+type PublishDiagnosticsParams struct {
4232+ // The URI for which diagnostic information is reported.
4233+ URI DocumentUri `json:"uri"`
4234+ // Optional the version number of the document the diagnostics are published for.
4235+ //
4236+ // @since 3.15.0
4237+ Version int32 `json:"version,omitempty"`
4238+ // An array of diagnostic information items.
4239+ Diagnostics []Diagnostic `json:"diagnostics"`
4240+}
4241+
4242+// A range in a text document expressed as (zero-based) start and end positions.
4243+//
4244+// If you want to specify a range that contains a line including the line ending
4245+// character(s) then use an end position denoting the start of the next line.
4246+// For example:
4247+// ```ts
4248+//
4249+// {
4250+// start: { line: 5, character: 23 }
4251+// end : { line 6, character : 0 }
4252+// }
4253+//
4254+// ```
4255+//
4256+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#range
4257+type Range struct {
4258+ // The range's start position.
4259+ Start Position `json:"start"`
4260+ // The range's end position.
4261+ End Position `json:"end"`
4262+}
4263+
4264+// Client Capabilities for a {@link ReferencesRequest}.
4265+//
4266+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#referenceClientCapabilities
4267+type ReferenceClientCapabilities struct {
4268+ // Whether references supports dynamic registration.
4269+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
4270+}
4271+
4272+// Value-object that contains additional information when
4273+// requesting references.
4274+//
4275+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#referenceContext
4276+type ReferenceContext struct {
4277+ // Include the declaration of the current symbol.
4278+ IncludeDeclaration bool `json:"includeDeclaration"`
4279+}
4280+
4281+// Reference options.
4282+//
4283+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#referenceOptions
4284+type ReferenceOptions struct {
4285+ WorkDoneProgressOptions
4286+}
4287+
4288+// Parameters for a {@link ReferencesRequest}.
4289+//
4290+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#referenceParams
4291+type ReferenceParams struct {
4292+ Context ReferenceContext `json:"context"`
4293+ TextDocumentPositionParams
4294+ WorkDoneProgressParams
4295+ PartialResultParams
4296+}
4297+
4298+// Registration options for a {@link ReferencesRequest}.
4299+//
4300+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#referenceRegistrationOptions
4301+type ReferenceRegistrationOptions struct {
4302+ TextDocumentRegistrationOptions
4303+ ReferenceOptions
4304+}
4305+
4306+// General parameters to register for a notification or to register a provider.
4307+//
4308+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#registration
4309+type Registration struct {
4310+ // The id used to register the request. The id can be used to deregister
4311+ // the request again.
4312+ ID string `json:"id"`
4313+ // The method / capability to register for.
4314+ Method string `json:"method"`
4315+ // Options necessary for the registration.
4316+ RegisterOptions interface{} `json:"registerOptions,omitempty"`
4317+}
4318+
4319+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#registrationParams
4320+type RegistrationParams struct {
4321+ Registrations []Registration `json:"registrations"`
4322+}
4323+
4324+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#regularExpressionEngineKind
4325+type RegularExpressionEngineKind = string // (alias)
4326+// Client capabilities specific to regular expressions.
4327+//
4328+// @since 3.16.0
4329+//
4330+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#regularExpressionsClientCapabilities
4331+type RegularExpressionsClientCapabilities struct {
4332+ // The engine's name.
4333+ Engine RegularExpressionEngineKind `json:"engine"`
4334+ // The engine's version.
4335+ Version string `json:"version,omitempty"`
4336+}
4337+
4338+// A full diagnostic report with a set of related documents.
4339+//
4340+// @since 3.17.0
4341+//
4342+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#relatedFullDocumentDiagnosticReport
4343+type RelatedFullDocumentDiagnosticReport struct {
4344+ // Diagnostics of related documents. This information is useful
4345+ // in programming languages where code in a file A can generate
4346+ // diagnostics in a file B which A depends on. An example of
4347+ // such a language is C/C++ where marco definitions in a file
4348+ // a.cpp and result in errors in a header file b.hpp.
4349+ //
4350+ // @since 3.17.0
4351+ RelatedDocuments map[DocumentUri]interface{} `json:"relatedDocuments,omitempty"`
4352+ FullDocumentDiagnosticReport
4353+}
4354+
4355+// An unchanged diagnostic report with a set of related documents.
4356+//
4357+// @since 3.17.0
4358+//
4359+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#relatedUnchangedDocumentDiagnosticReport
4360+type RelatedUnchangedDocumentDiagnosticReport struct {
4361+ // Diagnostics of related documents. This information is useful
4362+ // in programming languages where code in a file A can generate
4363+ // diagnostics in a file B which A depends on. An example of
4364+ // such a language is C/C++ where marco definitions in a file
4365+ // a.cpp and result in errors in a header file b.hpp.
4366+ //
4367+ // @since 3.17.0
4368+ RelatedDocuments map[DocumentUri]interface{} `json:"relatedDocuments,omitempty"`
4369+ UnchangedDocumentDiagnosticReport
4370+}
4371+
4372+// A relative pattern is a helper to construct glob patterns that are matched
4373+// relatively to a base URI. The common value for a `baseUri` is a workspace
4374+// folder root, but it can be another absolute URI as well.
4375+//
4376+// @since 3.17.0
4377+//
4378+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#relativePattern
4379+type RelativePattern struct {
4380+ // A workspace folder or a base URI to which this pattern will be matched
4381+ // against relatively.
4382+ BaseURI Or_RelativePattern_baseUri `json:"baseUri"`
4383+ // The actual glob pattern;
4384+ Pattern Pattern `json:"pattern"`
4385+}
4386+
4387+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#renameClientCapabilities
4388+type RenameClientCapabilities struct {
4389+ // Whether rename supports dynamic registration.
4390+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
4391+ // Client supports testing for validity of rename operations
4392+ // before execution.
4393+ //
4394+ // @since 3.12.0
4395+ PrepareSupport bool `json:"prepareSupport,omitempty"`
4396+ // Client supports the default behavior result.
4397+ //
4398+ // The value indicates the default behavior used by the
4399+ // client.
4400+ //
4401+ // @since 3.16.0
4402+ PrepareSupportDefaultBehavior *PrepareSupportDefaultBehavior `json:"prepareSupportDefaultBehavior,omitempty"`
4403+ // Whether the client honors the change annotations in
4404+ // text edits and resource operations returned via the
4405+ // rename request's workspace edit by for example presenting
4406+ // the workspace edit in the user interface and asking
4407+ // for confirmation.
4408+ //
4409+ // @since 3.16.0
4410+ HonorsChangeAnnotations bool `json:"honorsChangeAnnotations,omitempty"`
4411+}
4412+
4413+// Rename file operation
4414+//
4415+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#renameFile
4416+type RenameFile struct {
4417+ // A rename
4418+ Kind string `json:"kind"`
4419+ // The old (existing) location.
4420+ OldURI DocumentUri `json:"oldUri"`
4421+ // The new location.
4422+ NewURI DocumentUri `json:"newUri"`
4423+ // Rename options.
4424+ Options *RenameFileOptions `json:"options,omitempty"`
4425+ ResourceOperation
4426+}
4427+
4428+// Rename file options
4429+//
4430+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#renameFileOptions
4431+type RenameFileOptions struct {
4432+ // Overwrite target if existing. Overwrite wins over `ignoreIfExists`
4433+ Overwrite bool `json:"overwrite,omitempty"`
4434+ // Ignores if target exists.
4435+ IgnoreIfExists bool `json:"ignoreIfExists,omitempty"`
4436+}
4437+
4438+// The parameters sent in notifications/requests for user-initiated renames of
4439+// files.
4440+//
4441+// @since 3.16.0
4442+//
4443+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#renameFilesParams
4444+type RenameFilesParams struct {
4445+ // An array of all files/folders renamed in this operation. When a folder is renamed, only
4446+ // the folder will be included, and not its children.
4447+ Files []FileRename `json:"files"`
4448+}
4449+
4450+// Provider options for a {@link RenameRequest}.
4451+//
4452+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#renameOptions
4453+type RenameOptions struct {
4454+ // Renames should be checked and tested before being executed.
4455+ //
4456+ // @since version 3.12.0
4457+ PrepareProvider bool `json:"prepareProvider,omitempty"`
4458+ WorkDoneProgressOptions
4459+}
4460+
4461+// The parameters of a {@link RenameRequest}.
4462+//
4463+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#renameParams
4464+type RenameParams struct {
4465+ // The document to rename.
4466+ TextDocument TextDocumentIdentifier `json:"textDocument"`
4467+ // The position at which this request was sent.
4468+ Position Position `json:"position"`
4469+ // The new name of the symbol. If the given name is not valid the
4470+ // request must return a {@link ResponseError} with an
4471+ // appropriate message set.
4472+ NewName string `json:"newName"`
4473+ WorkDoneProgressParams
4474+}
4475+
4476+// Registration options for a {@link RenameRequest}.
4477+//
4478+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#renameRegistrationOptions
4479+type RenameRegistrationOptions struct {
4480+ TextDocumentRegistrationOptions
4481+ RenameOptions
4482+}
4483+
4484+// A generic resource operation.
4485+//
4486+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#resourceOperation
4487+type ResourceOperation struct {
4488+ // The resource operation kind.
4489+ Kind string `json:"kind"`
4490+ // An optional annotation identifier describing the operation.
4491+ //
4492+ // @since 3.16.0
4493+ AnnotationID *ChangeAnnotationIdentifier `json:"annotationId,omitempty"`
4494+}
4495+type ResourceOperationKind string
4496+
4497+// Save options.
4498+//
4499+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#saveOptions
4500+type SaveOptions struct {
4501+ // The client is supposed to include the content on save.
4502+ IncludeText bool `json:"includeText,omitempty"`
4503+}
4504+
4505+// Describes the currently selected completion item.
4506+//
4507+// @since 3.18.0
4508+// @proposed
4509+//
4510+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#selectedCompletionInfo
4511+type SelectedCompletionInfo struct {
4512+ // The range that will be replaced if this completion item is accepted.
4513+ Range Range `json:"range"`
4514+ // The text the range will be replaced with if this completion is accepted.
4515+ Text string `json:"text"`
4516+}
4517+
4518+// A selection range represents a part of a selection hierarchy. A selection range
4519+// may have a parent selection range that contains it.
4520+//
4521+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#selectionRange
4522+type SelectionRange struct {
4523+ // The {@link Range range} of this selection range.
4524+ Range Range `json:"range"`
4525+ // The parent selection range containing this range. Therefore `parent.range` must contain `this.range`.
4526+ Parent *SelectionRange `json:"parent,omitempty"`
4527+}
4528+
4529+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#selectionRangeClientCapabilities
4530+type SelectionRangeClientCapabilities struct {
4531+ // Whether implementation supports dynamic registration for selection range providers. If this is set to `true`
4532+ // the client supports the new `SelectionRangeRegistrationOptions` return value for the corresponding server
4533+ // capability as well.
4534+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
4535+}
4536+
4537+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#selectionRangeOptions
4538+type SelectionRangeOptions struct {
4539+ WorkDoneProgressOptions
4540+}
4541+
4542+// A parameter literal used in selection range requests.
4543+//
4544+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#selectionRangeParams
4545+type SelectionRangeParams struct {
4546+ // The text document.
4547+ TextDocument TextDocumentIdentifier `json:"textDocument"`
4548+ // The positions inside the text document.
4549+ Positions []Position `json:"positions"`
4550+ WorkDoneProgressParams
4551+ PartialResultParams
4552+}
4553+
4554+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#selectionRangeRegistrationOptions
4555+type SelectionRangeRegistrationOptions struct {
4556+ SelectionRangeOptions
4557+ TextDocumentRegistrationOptions
4558+ StaticRegistrationOptions
4559+}
4560+
4561+// A set of predefined token modifiers. This set is not fixed
4562+// an clients can specify additional token types via the
4563+// corresponding client capabilities.
4564+//
4565+// @since 3.16.0
4566+type SemanticTokenModifiers string
4567+
4568+// A set of predefined token types. This set is not fixed
4569+// an clients can specify additional token types via the
4570+// corresponding client capabilities.
4571+//
4572+// @since 3.16.0
4573+type SemanticTokenTypes string
4574+
4575+// @since 3.16.0
4576+//
4577+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokens
4578+type SemanticTokens struct {
4579+ // An optional result id. If provided and clients support delta updating
4580+ // the client will include the result id in the next semantic token request.
4581+ // A server can then instead of computing all semantic tokens again simply
4582+ // send a delta.
4583+ ResultID string `json:"resultId,omitempty"`
4584+ // The actual tokens.
4585+ Data []uint32 `json:"data"`
4586+}
4587+
4588+// @since 3.16.0
4589+//
4590+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensClientCapabilities
4591+type SemanticTokensClientCapabilities struct {
4592+ // Whether implementation supports dynamic registration. If this is set to `true`
4593+ // the client supports the new `(TextDocumentRegistrationOptions & StaticRegistrationOptions)`
4594+ // return value for the corresponding server capability as well.
4595+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
4596+ // Which requests the client supports and might send to the server
4597+ // depending on the server's capability. Please note that clients might not
4598+ // show semantic tokens or degrade some of the user experience if a range
4599+ // or full request is advertised by the client but not provided by the
4600+ // server. If for example the client capability `requests.full` and
4601+ // `request.range` are both set to true but the server only provides a
4602+ // range provider the client might not render a minimap correctly or might
4603+ // even decide to not show any semantic tokens at all.
4604+ Requests ClientSemanticTokensRequestOptions `json:"requests"`
4605+ // The token types that the client supports.
4606+ TokenTypes []string `json:"tokenTypes"`
4607+ // The token modifiers that the client supports.
4608+ TokenModifiers []string `json:"tokenModifiers"`
4609+ // The token formats the clients supports.
4610+ Formats []TokenFormat `json:"formats"`
4611+ // Whether the client supports tokens that can overlap each other.
4612+ OverlappingTokenSupport bool `json:"overlappingTokenSupport,omitempty"`
4613+ // Whether the client supports tokens that can span multiple lines.
4614+ MultilineTokenSupport bool `json:"multilineTokenSupport,omitempty"`
4615+ // Whether the client allows the server to actively cancel a
4616+ // semantic token request, e.g. supports returning
4617+ // LSPErrorCodes.ServerCancelled. If a server does the client
4618+ // needs to retrigger the request.
4619+ //
4620+ // @since 3.17.0
4621+ ServerCancelSupport bool `json:"serverCancelSupport,omitempty"`
4622+ // Whether the client uses semantic tokens to augment existing
4623+ // syntax tokens. If set to `true` client side created syntax
4624+ // tokens and semantic tokens are both used for colorization. If
4625+ // set to `false` the client only uses the returned semantic tokens
4626+ // for colorization.
4627+ //
4628+ // If the value is `undefined` then the client behavior is not
4629+ // specified.
4630+ //
4631+ // @since 3.17.0
4632+ AugmentsSyntaxTokens bool `json:"augmentsSyntaxTokens,omitempty"`
4633+}
4634+
4635+// @since 3.16.0
4636+//
4637+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensDelta
4638+type SemanticTokensDelta struct {
4639+ ResultID string `json:"resultId,omitempty"`
4640+ // The semantic token edits to transform a previous result into a new result.
4641+ Edits []SemanticTokensEdit `json:"edits"`
4642+}
4643+
4644+// @since 3.16.0
4645+//
4646+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensDeltaParams
4647+type SemanticTokensDeltaParams struct {
4648+ // The text document.
4649+ TextDocument TextDocumentIdentifier `json:"textDocument"`
4650+ // The result id of a previous response. The result Id can either point to a full response
4651+ // or a delta response depending on what was received last.
4652+ PreviousResultID string `json:"previousResultId"`
4653+ WorkDoneProgressParams
4654+ PartialResultParams
4655+}
4656+
4657+// @since 3.16.0
4658+//
4659+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensDeltaPartialResult
4660+type SemanticTokensDeltaPartialResult struct {
4661+ Edits []SemanticTokensEdit `json:"edits"`
4662+}
4663+
4664+// @since 3.16.0
4665+//
4666+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensEdit
4667+type SemanticTokensEdit struct {
4668+ // The start offset of the edit.
4669+ Start uint32 `json:"start"`
4670+ // The count of elements to remove.
4671+ DeleteCount uint32 `json:"deleteCount"`
4672+ // The elements to insert.
4673+ Data []uint32 `json:"data,omitempty"`
4674+}
4675+
4676+// Semantic tokens options to support deltas for full documents
4677+//
4678+// @since 3.18.0
4679+//
4680+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensFullDelta
4681+type SemanticTokensFullDelta struct {
4682+ // The server supports deltas for full documents.
4683+ Delta bool `json:"delta,omitempty"`
4684+}
4685+
4686+// @since 3.16.0
4687+//
4688+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensLegend
4689+type SemanticTokensLegend struct {
4690+ // The token types a server uses.
4691+ TokenTypes []string `json:"tokenTypes"`
4692+ // The token modifiers a server uses.
4693+ TokenModifiers []string `json:"tokenModifiers"`
4694+}
4695+
4696+// @since 3.16.0
4697+//
4698+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensOptions
4699+type SemanticTokensOptions struct {
4700+ // The legend used by the server
4701+ Legend SemanticTokensLegend `json:"legend"`
4702+ // Server supports providing semantic tokens for a specific range
4703+ // of a document.
4704+ Range *Or_SemanticTokensOptions_range `json:"range,omitempty"`
4705+ // Server supports providing semantic tokens for a full document.
4706+ Full *Or_SemanticTokensOptions_full `json:"full,omitempty"`
4707+ WorkDoneProgressOptions
4708+}
4709+
4710+// @since 3.16.0
4711+//
4712+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensParams
4713+type SemanticTokensParams struct {
4714+ // The text document.
4715+ TextDocument TextDocumentIdentifier `json:"textDocument"`
4716+ WorkDoneProgressParams
4717+ PartialResultParams
4718+}
4719+
4720+// @since 3.16.0
4721+//
4722+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensPartialResult
4723+type SemanticTokensPartialResult struct {
4724+ Data []uint32 `json:"data"`
4725+}
4726+
4727+// @since 3.16.0
4728+//
4729+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensRangeParams
4730+type SemanticTokensRangeParams struct {
4731+ // The text document.
4732+ TextDocument TextDocumentIdentifier `json:"textDocument"`
4733+ // The range the semantic tokens are requested for.
4734+ Range Range `json:"range"`
4735+ WorkDoneProgressParams
4736+ PartialResultParams
4737+}
4738+
4739+// @since 3.16.0
4740+//
4741+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensRegistrationOptions
4742+type SemanticTokensRegistrationOptions struct {
4743+ TextDocumentRegistrationOptions
4744+ SemanticTokensOptions
4745+ StaticRegistrationOptions
4746+}
4747+
4748+// @since 3.16.0
4749+//
4750+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensWorkspaceClientCapabilities
4751+type SemanticTokensWorkspaceClientCapabilities struct {
4752+ // Whether the client implementation supports a refresh request sent from
4753+ // the server to the client.
4754+ //
4755+ // Note that this event is global and will force the client to refresh all
4756+ // semantic tokens currently shown. It should be used with absolute care
4757+ // and is useful for situation where a server for example detects a project
4758+ // wide change that requires such a calculation.
4759+ RefreshSupport bool `json:"refreshSupport,omitempty"`
4760+}
4761+
4762+// Defines the capabilities provided by a language
4763+// server.
4764+//
4765+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#serverCapabilities
4766+type ServerCapabilities struct {
4767+ // The position encoding the server picked from the encodings offered
4768+ // by the client via the client capability `general.positionEncodings`.
4769+ //
4770+ // If the client didn't provide any position encodings the only valid
4771+ // value that a server can return is 'utf-16'.
4772+ //
4773+ // If omitted it defaults to 'utf-16'.
4774+ //
4775+ // @since 3.17.0
4776+ PositionEncoding *PositionEncodingKind `json:"positionEncoding,omitempty"`
4777+ // Defines how text documents are synced. Is either a detailed structure
4778+ // defining each notification or for backwards compatibility the
4779+ // TextDocumentSyncKind number.
4780+ TextDocumentSync interface{} `json:"textDocumentSync,omitempty"`
4781+ // Defines how notebook documents are synced.
4782+ //
4783+ // @since 3.17.0
4784+ NotebookDocumentSync *Or_ServerCapabilities_notebookDocumentSync `json:"notebookDocumentSync,omitempty"`
4785+ // The server provides completion support.
4786+ CompletionProvider *CompletionOptions `json:"completionProvider,omitempty"`
4787+ // The server provides hover support.
4788+ HoverProvider *Or_ServerCapabilities_hoverProvider `json:"hoverProvider,omitempty"`
4789+ // The server provides signature help support.
4790+ SignatureHelpProvider *SignatureHelpOptions `json:"signatureHelpProvider,omitempty"`
4791+ // The server provides Goto Declaration support.
4792+ DeclarationProvider *Or_ServerCapabilities_declarationProvider `json:"declarationProvider,omitempty"`
4793+ // The server provides goto definition support.
4794+ DefinitionProvider *Or_ServerCapabilities_definitionProvider `json:"definitionProvider,omitempty"`
4795+ // The server provides Goto Type Definition support.
4796+ TypeDefinitionProvider *Or_ServerCapabilities_typeDefinitionProvider `json:"typeDefinitionProvider,omitempty"`
4797+ // The server provides Goto Implementation support.
4798+ ImplementationProvider *Or_ServerCapabilities_implementationProvider `json:"implementationProvider,omitempty"`
4799+ // The server provides find references support.
4800+ ReferencesProvider *Or_ServerCapabilities_referencesProvider `json:"referencesProvider,omitempty"`
4801+ // The server provides document highlight support.
4802+ DocumentHighlightProvider *Or_ServerCapabilities_documentHighlightProvider `json:"documentHighlightProvider,omitempty"`
4803+ // The server provides document symbol support.
4804+ DocumentSymbolProvider *Or_ServerCapabilities_documentSymbolProvider `json:"documentSymbolProvider,omitempty"`
4805+ // The server provides code actions. CodeActionOptions may only be
4806+ // specified if the client states that it supports
4807+ // `codeActionLiteralSupport` in its initial `initialize` request.
4808+ CodeActionProvider interface{} `json:"codeActionProvider,omitempty"`
4809+ // The server provides code lens.
4810+ CodeLensProvider *CodeLensOptions `json:"codeLensProvider,omitempty"`
4811+ // The server provides document link support.
4812+ DocumentLinkProvider *DocumentLinkOptions `json:"documentLinkProvider,omitempty"`
4813+ // The server provides color provider support.
4814+ ColorProvider *Or_ServerCapabilities_colorProvider `json:"colorProvider,omitempty"`
4815+ // The server provides workspace symbol support.
4816+ WorkspaceSymbolProvider *Or_ServerCapabilities_workspaceSymbolProvider `json:"workspaceSymbolProvider,omitempty"`
4817+ // The server provides document formatting.
4818+ DocumentFormattingProvider *Or_ServerCapabilities_documentFormattingProvider `json:"documentFormattingProvider,omitempty"`
4819+ // The server provides document range formatting.
4820+ DocumentRangeFormattingProvider *Or_ServerCapabilities_documentRangeFormattingProvider `json:"documentRangeFormattingProvider,omitempty"`
4821+ // The server provides document formatting on typing.
4822+ DocumentOnTypeFormattingProvider *DocumentOnTypeFormattingOptions `json:"documentOnTypeFormattingProvider,omitempty"`
4823+ // The server provides rename support. RenameOptions may only be
4824+ // specified if the client states that it supports
4825+ // `prepareSupport` in its initial `initialize` request.
4826+ RenameProvider interface{} `json:"renameProvider,omitempty"`
4827+ // The server provides folding provider support.
4828+ FoldingRangeProvider *Or_ServerCapabilities_foldingRangeProvider `json:"foldingRangeProvider,omitempty"`
4829+ // The server provides selection range support.
4830+ SelectionRangeProvider *Or_ServerCapabilities_selectionRangeProvider `json:"selectionRangeProvider,omitempty"`
4831+ // The server provides execute command support.
4832+ ExecuteCommandProvider *ExecuteCommandOptions `json:"executeCommandProvider,omitempty"`
4833+ // The server provides call hierarchy support.
4834+ //
4835+ // @since 3.16.0
4836+ CallHierarchyProvider *Or_ServerCapabilities_callHierarchyProvider `json:"callHierarchyProvider,omitempty"`
4837+ // The server provides linked editing range support.
4838+ //
4839+ // @since 3.16.0
4840+ LinkedEditingRangeProvider *Or_ServerCapabilities_linkedEditingRangeProvider `json:"linkedEditingRangeProvider,omitempty"`
4841+ // The server provides semantic tokens support.
4842+ //
4843+ // @since 3.16.0
4844+ SemanticTokensProvider interface{} `json:"semanticTokensProvider,omitempty"`
4845+ // The server provides moniker support.
4846+ //
4847+ // @since 3.16.0
4848+ MonikerProvider *Or_ServerCapabilities_monikerProvider `json:"monikerProvider,omitempty"`
4849+ // The server provides type hierarchy support.
4850+ //
4851+ // @since 3.17.0
4852+ TypeHierarchyProvider *Or_ServerCapabilities_typeHierarchyProvider `json:"typeHierarchyProvider,omitempty"`
4853+ // The server provides inline values.
4854+ //
4855+ // @since 3.17.0
4856+ InlineValueProvider *Or_ServerCapabilities_inlineValueProvider `json:"inlineValueProvider,omitempty"`
4857+ // The server provides inlay hints.
4858+ //
4859+ // @since 3.17.0
4860+ InlayHintProvider interface{} `json:"inlayHintProvider,omitempty"`
4861+ // The server has support for pull model diagnostics.
4862+ //
4863+ // @since 3.17.0
4864+ DiagnosticProvider *Or_ServerCapabilities_diagnosticProvider `json:"diagnosticProvider,omitempty"`
4865+ // Inline completion options used during static registration.
4866+ //
4867+ // @since 3.18.0
4868+ // @proposed
4869+ InlineCompletionProvider *Or_ServerCapabilities_inlineCompletionProvider `json:"inlineCompletionProvider,omitempty"`
4870+ // Workspace specific server capabilities.
4871+ Workspace *WorkspaceOptions `json:"workspace,omitempty"`
4872+ // Experimental server capabilities.
4873+ Experimental interface{} `json:"experimental,omitempty"`
4874+}
4875+
4876+// @since 3.18.0
4877+//
4878+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#serverCompletionItemOptions
4879+type ServerCompletionItemOptions struct {
4880+ // The server has support for completion item label
4881+ // details (see also `CompletionItemLabelDetails`) when
4882+ // receiving a completion item in a resolve call.
4883+ //
4884+ // @since 3.17.0
4885+ LabelDetailsSupport bool `json:"labelDetailsSupport,omitempty"`
4886+}
4887+
4888+// Information about the server
4889+//
4890+// @since 3.15.0
4891+// @since 3.18.0 ServerInfo type name added.
4892+//
4893+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#serverInfo
4894+type ServerInfo struct {
4895+ // The name of the server as defined by the server.
4896+ Name string `json:"name"`
4897+ // The server's version as defined by the server.
4898+ Version string `json:"version,omitempty"`
4899+}
4900+
4901+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#setTraceParams
4902+type SetTraceParams struct {
4903+ Value TraceValue `json:"value"`
4904+}
4905+
4906+// Client capabilities for the showDocument request.
4907+//
4908+// @since 3.16.0
4909+//
4910+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#showDocumentClientCapabilities
4911+type ShowDocumentClientCapabilities struct {
4912+ // The client has support for the showDocument
4913+ // request.
4914+ Support bool `json:"support"`
4915+}
4916+
4917+// Params to show a resource in the UI.
4918+//
4919+// @since 3.16.0
4920+//
4921+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#showDocumentParams
4922+type ShowDocumentParams struct {
4923+ // The uri to show.
4924+ URI URI `json:"uri"`
4925+ // Indicates to show the resource in an external program.
4926+ // To show, for example, `https://code.visualstudio.com/`
4927+ // in the default WEB browser set `external` to `true`.
4928+ External bool `json:"external,omitempty"`
4929+ // An optional property to indicate whether the editor
4930+ // showing the document should take focus or not.
4931+ // Clients might ignore this property if an external
4932+ // program is started.
4933+ TakeFocus bool `json:"takeFocus,omitempty"`
4934+ // An optional selection range if the document is a text
4935+ // document. Clients might ignore the property if an
4936+ // external program is started or the file is not a text
4937+ // file.
4938+ Selection *Range `json:"selection,omitempty"`
4939+}
4940+
4941+// The result of a showDocument request.
4942+//
4943+// @since 3.16.0
4944+//
4945+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#showDocumentResult
4946+type ShowDocumentResult struct {
4947+ // A boolean indicating if the show was successful.
4948+ Success bool `json:"success"`
4949+}
4950+
4951+// The parameters of a notification message.
4952+//
4953+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#showMessageParams
4954+type ShowMessageParams struct {
4955+ // The message type. See {@link MessageType}
4956+ Type MessageType `json:"type"`
4957+ // The actual message.
4958+ Message string `json:"message"`
4959+}
4960+
4961+// Show message request client capabilities
4962+//
4963+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#showMessageRequestClientCapabilities
4964+type ShowMessageRequestClientCapabilities struct {
4965+ // Capabilities specific to the `MessageActionItem` type.
4966+ MessageActionItem *ClientShowMessageActionItemOptions `json:"messageActionItem,omitempty"`
4967+}
4968+
4969+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#showMessageRequestParams
4970+type ShowMessageRequestParams struct {
4971+ // The message type. See {@link MessageType}
4972+ Type MessageType `json:"type"`
4973+ // The actual message.
4974+ Message string `json:"message"`
4975+ // The message action items to present.
4976+ Actions []MessageActionItem `json:"actions,omitempty"`
4977+}
4978+
4979+// Signature help represents the signature of something
4980+// callable. There can be multiple signature but only one
4981+// active and only one active parameter.
4982+//
4983+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#signatureHelp
4984+type SignatureHelp struct {
4985+ // One or more signatures.
4986+ Signatures []SignatureInformation `json:"signatures"`
4987+ // The active signature. If omitted or the value lies outside the
4988+ // range of `signatures` the value defaults to zero or is ignored if
4989+ // the `SignatureHelp` has no signatures.
4990+ //
4991+ // Whenever possible implementors should make an active decision about
4992+ // the active signature and shouldn't rely on a default value.
4993+ //
4994+ // In future version of the protocol this property might become
4995+ // mandatory to better express this.
4996+ ActiveSignature uint32 `json:"activeSignature,omitempty"`
4997+ // The active parameter of the active signature.
4998+ //
4999+ // If `null`, no parameter of the signature is active (for example a named
5000+ // argument that does not match any declared parameters). This is only valid
5001+ // if the client specifies the client capability
5002+ // `textDocument.signatureHelp.noActiveParameterSupport === true`
5003+ //
5004+ // If omitted or the value lies outside the range of
5005+ // `signatures[activeSignature].parameters` defaults to 0 if the active
5006+ // signature has parameters.
5007+ //
5008+ // If the active signature has no parameters it is ignored.
5009+ //
5010+ // In future version of the protocol this property might become
5011+ // mandatory (but still nullable) to better express the active parameter if
5012+ // the active signature does have any.
5013+ ActiveParameter uint32 `json:"activeParameter,omitempty"`
5014+}
5015+
5016+// Client Capabilities for a {@link SignatureHelpRequest}.
5017+//
5018+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#signatureHelpClientCapabilities
5019+type SignatureHelpClientCapabilities struct {
5020+ // Whether signature help supports dynamic registration.
5021+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
5022+ // The client supports the following `SignatureInformation`
5023+ // specific properties.
5024+ SignatureInformation *ClientSignatureInformationOptions `json:"signatureInformation,omitempty"`
5025+ // The client supports to send additional context information for a
5026+ // `textDocument/signatureHelp` request. A client that opts into
5027+ // contextSupport will also support the `retriggerCharacters` on
5028+ // `SignatureHelpOptions`.
5029+ //
5030+ // @since 3.15.0
5031+ ContextSupport bool `json:"contextSupport,omitempty"`
5032+}
5033+
5034+// Additional information about the context in which a signature help request was triggered.
5035+//
5036+// @since 3.15.0
5037+//
5038+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#signatureHelpContext
5039+type SignatureHelpContext struct {
5040+ // Action that caused signature help to be triggered.
5041+ TriggerKind SignatureHelpTriggerKind `json:"triggerKind"`
5042+ // Character that caused signature help to be triggered.
5043+ //
5044+ // This is undefined when `triggerKind !== SignatureHelpTriggerKind.TriggerCharacter`
5045+ TriggerCharacter string `json:"triggerCharacter,omitempty"`
5046+ // `true` if signature help was already showing when it was triggered.
5047+ //
5048+ // Retriggers occurs when the signature help is already active and can be caused by actions such as
5049+ // typing a trigger character, a cursor move, or document content changes.
5050+ IsRetrigger bool `json:"isRetrigger"`
5051+ // The currently active `SignatureHelp`.
5052+ //
5053+ // The `activeSignatureHelp` has its `SignatureHelp.activeSignature` field updated based on
5054+ // the user navigating through available signatures.
5055+ ActiveSignatureHelp *SignatureHelp `json:"activeSignatureHelp,omitempty"`
5056+}
5057+
5058+// Server Capabilities for a {@link SignatureHelpRequest}.
5059+//
5060+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#signatureHelpOptions
5061+type SignatureHelpOptions struct {
5062+ // List of characters that trigger signature help automatically.
5063+ TriggerCharacters []string `json:"triggerCharacters,omitempty"`
5064+ // List of characters that re-trigger signature help.
5065+ //
5066+ // These trigger characters are only active when signature help is already showing. All trigger characters
5067+ // are also counted as re-trigger characters.
5068+ //
5069+ // @since 3.15.0
5070+ RetriggerCharacters []string `json:"retriggerCharacters,omitempty"`
5071+ WorkDoneProgressOptions
5072+}
5073+
5074+// Parameters for a {@link SignatureHelpRequest}.
5075+//
5076+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#signatureHelpParams
5077+type SignatureHelpParams struct {
5078+ // The signature help context. This is only available if the client specifies
5079+ // to send this using the client capability `textDocument.signatureHelp.contextSupport === true`
5080+ //
5081+ // @since 3.15.0
5082+ Context *SignatureHelpContext `json:"context,omitempty"`
5083+ TextDocumentPositionParams
5084+ WorkDoneProgressParams
5085+}
5086+
5087+// Registration options for a {@link SignatureHelpRequest}.
5088+//
5089+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#signatureHelpRegistrationOptions
5090+type SignatureHelpRegistrationOptions struct {
5091+ TextDocumentRegistrationOptions
5092+ SignatureHelpOptions
5093+}
5094+
5095+// How a signature help was triggered.
5096+//
5097+// @since 3.15.0
5098+type SignatureHelpTriggerKind uint32
5099+
5100+// Represents the signature of something callable. A signature
5101+// can have a label, like a function-name, a doc-comment, and
5102+// a set of parameters.
5103+//
5104+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#signatureInformation
5105+type SignatureInformation struct {
5106+ // The label of this signature. Will be shown in
5107+ // the UI.
5108+ Label string `json:"label"`
5109+ // The human-readable doc-comment of this signature. Will be shown
5110+ // in the UI but can be omitted.
5111+ Documentation *Or_SignatureInformation_documentation `json:"documentation,omitempty"`
5112+ // The parameters of this signature.
5113+ Parameters []ParameterInformation `json:"parameters,omitempty"`
5114+ // The index of the active parameter.
5115+ //
5116+ // If `null`, no parameter of the signature is active (for example a named
5117+ // argument that does not match any declared parameters). This is only valid
5118+ // if the client specifies the client capability
5119+ // `textDocument.signatureHelp.noActiveParameterSupport === true`
5120+ //
5121+ // If provided (or `null`), this is used in place of
5122+ // `SignatureHelp.activeParameter`.
5123+ //
5124+ // @since 3.16.0
5125+ ActiveParameter uint32 `json:"activeParameter,omitempty"`
5126+}
5127+
5128+// An interactive text edit.
5129+//
5130+// @since 3.18.0
5131+// @proposed
5132+//
5133+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#snippetTextEdit
5134+type SnippetTextEdit struct {
5135+ // The range of the text document to be manipulated.
5136+ Range Range `json:"range"`
5137+ // The snippet to be inserted.
5138+ Snippet StringValue `json:"snippet"`
5139+ // The actual identifier of the snippet edit.
5140+ AnnotationID *ChangeAnnotationIdentifier `json:"annotationId,omitempty"`
5141+}
5142+
5143+// @since 3.18.0
5144+//
5145+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#staleRequestSupportOptions
5146+type StaleRequestSupportOptions struct {
5147+ // The client will actively cancel the request.
5148+ Cancel bool `json:"cancel"`
5149+ // The list of requests for which the client
5150+ // will retry the request if it receives a
5151+ // response with error code `ContentModified`
5152+ RetryOnContentModified []string `json:"retryOnContentModified"`
5153+}
5154+
5155+// Static registration options to be returned in the initialize
5156+// request.
5157+//
5158+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#staticRegistrationOptions
5159+type StaticRegistrationOptions struct {
5160+ // The id used to register the request. The id can be used to deregister
5161+ // the request again. See also Registration#id.
5162+ ID string `json:"id,omitempty"`
5163+}
5164+
5165+// A string value used as a snippet is a template which allows to insert text
5166+// and to control the editor cursor when insertion happens.
5167+//
5168+// A snippet can define tab stops and placeholders with `$1`, `$2`
5169+// and `${3:foo}`. `$0` defines the final tab stop, it defaults to
5170+// the end of the snippet. Variables are defined with `$name` and
5171+// `${name:default value}`.
5172+//
5173+// @since 3.18.0
5174+// @proposed
5175+//
5176+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#stringValue
5177+type StringValue struct {
5178+ // The kind of string value.
5179+ Kind string `json:"kind"`
5180+ // The snippet string.
5181+ Value string `json:"value"`
5182+}
5183+
5184+// Represents information about programming constructs like variables, classes,
5185+// interfaces etc.
5186+//
5187+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#symbolInformation
5188+type SymbolInformation struct {
5189+ // extends BaseSymbolInformation
5190+ // Indicates if this symbol is deprecated.
5191+ //
5192+ // @deprecated Use tags instead
5193+ Deprecated bool `json:"deprecated,omitempty"`
5194+ // The location of this symbol. The location's range is used by a tool
5195+ // to reveal the location in the editor. If the symbol is selected in the
5196+ // tool the range's start information is used to position the cursor. So
5197+ // the range usually spans more than the actual symbol's name and does
5198+ // normally include things like visibility modifiers.
5199+ //
5200+ // The range doesn't have to denote a node range in the sense of an abstract
5201+ // syntax tree. It can therefore not be used to re-construct a hierarchy of
5202+ // the symbols.
5203+ Location Location `json:"location"`
5204+ // The name of this symbol.
5205+ Name string `json:"name"`
5206+ // The kind of this symbol.
5207+ Kind SymbolKind `json:"kind"`
5208+ // Tags for this symbol.
5209+ //
5210+ // @since 3.16.0
5211+ Tags []SymbolTag `json:"tags,omitempty"`
5212+ // The name of the symbol containing this symbol. This information is for
5213+ // user interface purposes (e.g. to render a qualifier in the user interface
5214+ // if necessary). It can't be used to re-infer a hierarchy for the document
5215+ // symbols.
5216+ ContainerName string `json:"containerName,omitempty"`
5217+}
5218+
5219+// A symbol kind.
5220+type SymbolKind uint32
5221+
5222+// Symbol tags are extra annotations that tweak the rendering of a symbol.
5223+//
5224+// @since 3.16
5225+type SymbolTag uint32
5226+
5227+// Describe options to be used when registered for text document change events.
5228+//
5229+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentChangeRegistrationOptions
5230+type TextDocumentChangeRegistrationOptions struct {
5231+ // How documents are synced to the server.
5232+ SyncKind TextDocumentSyncKind `json:"syncKind"`
5233+ TextDocumentRegistrationOptions
5234+}
5235+
5236+// Text document specific client capabilities.
5237+//
5238+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentClientCapabilities
5239+type TextDocumentClientCapabilities struct {
5240+ // Defines which synchronization capabilities the client supports.
5241+ Synchronization *TextDocumentSyncClientCapabilities `json:"synchronization,omitempty"`
5242+ // Capabilities specific to the `textDocument/completion` request.
5243+ Completion CompletionClientCapabilities `json:"completion,omitempty"`
5244+ // Capabilities specific to the `textDocument/hover` request.
5245+ Hover *HoverClientCapabilities `json:"hover,omitempty"`
5246+ // Capabilities specific to the `textDocument/signatureHelp` request.
5247+ SignatureHelp *SignatureHelpClientCapabilities `json:"signatureHelp,omitempty"`
5248+ // Capabilities specific to the `textDocument/declaration` request.
5249+ //
5250+ // @since 3.14.0
5251+ Declaration *DeclarationClientCapabilities `json:"declaration,omitempty"`
5252+ // Capabilities specific to the `textDocument/definition` request.
5253+ Definition *DefinitionClientCapabilities `json:"definition,omitempty"`
5254+ // Capabilities specific to the `textDocument/typeDefinition` request.
5255+ //
5256+ // @since 3.6.0
5257+ TypeDefinition *TypeDefinitionClientCapabilities `json:"typeDefinition,omitempty"`
5258+ // Capabilities specific to the `textDocument/implementation` request.
5259+ //
5260+ // @since 3.6.0
5261+ Implementation *ImplementationClientCapabilities `json:"implementation,omitempty"`
5262+ // Capabilities specific to the `textDocument/references` request.
5263+ References *ReferenceClientCapabilities `json:"references,omitempty"`
5264+ // Capabilities specific to the `textDocument/documentHighlight` request.
5265+ DocumentHighlight *DocumentHighlightClientCapabilities `json:"documentHighlight,omitempty"`
5266+ // Capabilities specific to the `textDocument/documentSymbol` request.
5267+ DocumentSymbol DocumentSymbolClientCapabilities `json:"documentSymbol,omitempty"`
5268+ // Capabilities specific to the `textDocument/codeAction` request.
5269+ CodeAction CodeActionClientCapabilities `json:"codeAction,omitempty"`
5270+ // Capabilities specific to the `textDocument/codeLens` request.
5271+ CodeLens *CodeLensClientCapabilities `json:"codeLens,omitempty"`
5272+ // Capabilities specific to the `textDocument/documentLink` request.
5273+ DocumentLink *DocumentLinkClientCapabilities `json:"documentLink,omitempty"`
5274+ // Capabilities specific to the `textDocument/documentColor` and the
5275+ // `textDocument/colorPresentation` request.
5276+ //
5277+ // @since 3.6.0
5278+ ColorProvider *DocumentColorClientCapabilities `json:"colorProvider,omitempty"`
5279+ // Capabilities specific to the `textDocument/formatting` request.
5280+ Formatting *DocumentFormattingClientCapabilities `json:"formatting,omitempty"`
5281+ // Capabilities specific to the `textDocument/rangeFormatting` request.
5282+ RangeFormatting *DocumentRangeFormattingClientCapabilities `json:"rangeFormatting,omitempty"`
5283+ // Capabilities specific to the `textDocument/onTypeFormatting` request.
5284+ OnTypeFormatting *DocumentOnTypeFormattingClientCapabilities `json:"onTypeFormatting,omitempty"`
5285+ // Capabilities specific to the `textDocument/rename` request.
5286+ Rename *RenameClientCapabilities `json:"rename,omitempty"`
5287+ // Capabilities specific to the `textDocument/foldingRange` request.
5288+ //
5289+ // @since 3.10.0
5290+ FoldingRange *FoldingRangeClientCapabilities `json:"foldingRange,omitempty"`
5291+ // Capabilities specific to the `textDocument/selectionRange` request.
5292+ //
5293+ // @since 3.15.0
5294+ SelectionRange *SelectionRangeClientCapabilities `json:"selectionRange,omitempty"`
5295+ // Capabilities specific to the `textDocument/publishDiagnostics` notification.
5296+ PublishDiagnostics PublishDiagnosticsClientCapabilities `json:"publishDiagnostics,omitempty"`
5297+ // Capabilities specific to the various call hierarchy requests.
5298+ //
5299+ // @since 3.16.0
5300+ CallHierarchy *CallHierarchyClientCapabilities `json:"callHierarchy,omitempty"`
5301+ // Capabilities specific to the various semantic token request.
5302+ //
5303+ // @since 3.16.0
5304+ SemanticTokens SemanticTokensClientCapabilities `json:"semanticTokens,omitempty"`
5305+ // Capabilities specific to the `textDocument/linkedEditingRange` request.
5306+ //
5307+ // @since 3.16.0
5308+ LinkedEditingRange *LinkedEditingRangeClientCapabilities `json:"linkedEditingRange,omitempty"`
5309+ // Client capabilities specific to the `textDocument/moniker` request.
5310+ //
5311+ // @since 3.16.0
5312+ Moniker *MonikerClientCapabilities `json:"moniker,omitempty"`
5313+ // Capabilities specific to the various type hierarchy requests.
5314+ //
5315+ // @since 3.17.0
5316+ TypeHierarchy *TypeHierarchyClientCapabilities `json:"typeHierarchy,omitempty"`
5317+ // Capabilities specific to the `textDocument/inlineValue` request.
5318+ //
5319+ // @since 3.17.0
5320+ InlineValue *InlineValueClientCapabilities `json:"inlineValue,omitempty"`
5321+ // Capabilities specific to the `textDocument/inlayHint` request.
5322+ //
5323+ // @since 3.17.0
5324+ InlayHint *InlayHintClientCapabilities `json:"inlayHint,omitempty"`
5325+ // Capabilities specific to the diagnostic pull model.
5326+ //
5327+ // @since 3.17.0
5328+ Diagnostic *DiagnosticClientCapabilities `json:"diagnostic,omitempty"`
5329+ // Client capabilities specific to inline completions.
5330+ //
5331+ // @since 3.18.0
5332+ // @proposed
5333+ InlineCompletion *InlineCompletionClientCapabilities `json:"inlineCompletion,omitempty"`
5334+}
5335+
5336+// An event describing a change to a text document. If only a text is provided
5337+// it is considered to be the full content of the document.
5338+//
5339+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentContentChangeEvent
5340+type TextDocumentContentChangeEvent = Or_TextDocumentContentChangeEvent // (alias)
5341+// @since 3.18.0
5342+//
5343+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentContentChangePartial
5344+type TextDocumentContentChangePartial struct {
5345+ // The range of the document that changed.
5346+ Range *Range `json:"range,omitempty"`
5347+ // The optional length of the range that got replaced.
5348+ //
5349+ // @deprecated use range instead.
5350+ RangeLength uint32 `json:"rangeLength,omitempty"`
5351+ // The new text for the provided range.
5352+ Text string `json:"text"`
5353+}
5354+
5355+// @since 3.18.0
5356+//
5357+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentContentChangeWholeDocument
5358+type TextDocumentContentChangeWholeDocument struct {
5359+ // The new text of the whole document.
5360+ Text string `json:"text"`
5361+}
5362+
5363+// Client capabilities for a text document content provider.
5364+//
5365+// @since 3.18.0
5366+// @proposed
5367+//
5368+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentContentClientCapabilities
5369+type TextDocumentContentClientCapabilities struct {
5370+ // Text document content provider supports dynamic registration.
5371+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
5372+}
5373+
5374+// Text document content provider options.
5375+//
5376+// @since 3.18.0
5377+// @proposed
5378+//
5379+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentContentOptions
5380+type TextDocumentContentOptions struct {
5381+ // The scheme for which the server provides content.
5382+ Scheme string `json:"scheme"`
5383+}
5384+
5385+// Parameters for the `workspace/textDocumentContent` request.
5386+//
5387+// @since 3.18.0
5388+// @proposed
5389+//
5390+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentContentParams
5391+type TextDocumentContentParams struct {
5392+ // The uri of the text document.
5393+ URI DocumentUri `json:"uri"`
5394+}
5395+
5396+// Parameters for the `workspace/textDocumentContent/refresh` request.
5397+//
5398+// @since 3.18.0
5399+// @proposed
5400+//
5401+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentContentRefreshParams
5402+type TextDocumentContentRefreshParams struct {
5403+ // The uri of the text document to refresh.
5404+ URI DocumentUri `json:"uri"`
5405+}
5406+
5407+// Text document content provider registration options.
5408+//
5409+// @since 3.18.0
5410+// @proposed
5411+//
5412+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentContentRegistrationOptions
5413+type TextDocumentContentRegistrationOptions struct {
5414+ TextDocumentContentOptions
5415+ StaticRegistrationOptions
5416+}
5417+
5418+// Describes textual changes on a text document. A TextDocumentEdit describes all changes
5419+// on a document version Si and after they are applied move the document to version Si+1.
5420+// So the creator of a TextDocumentEdit doesn't need to sort the array of edits or do any
5421+// kind of ordering. However the edits must be non overlapping.
5422+//
5423+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentEdit
5424+type TextDocumentEdit struct {
5425+ // The text document to change.
5426+ TextDocument OptionalVersionedTextDocumentIdentifier `json:"textDocument"`
5427+ // The edits to be applied.
5428+ //
5429+ // @since 3.16.0 - support for AnnotatedTextEdit. This is guarded using a
5430+ // client capability.
5431+ //
5432+ // @since 3.18.0 - support for SnippetTextEdit. This is guarded using a
5433+ // client capability.
5434+ Edits []Or_TextDocumentEdit_edits_Elem `json:"edits"`
5435+}
5436+
5437+// A document filter denotes a document by different properties like
5438+// the {@link TextDocument.languageId language}, the {@link Uri.scheme scheme} of
5439+// its resource, or a glob-pattern that is applied to the {@link TextDocument.fileName path}.
5440+//
5441+// Glob patterns can have the following syntax:
5442+//
5443+// - `*` to match one or more characters in a path segment
5444+// - `?` to match on one character in a path segment
5445+// - `**` to match any number of path segments, including none
5446+// - `{}` to group sub patterns into an OR expression. (e.g. `**/*.{ts,js}` matches all TypeScript and JavaScript files)
5447+// - `[]` to declare a range of characters to match in a path segment (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …)
5448+// - `[!...]` 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`)
5449+//
5450+// @sample A language filter that applies to typescript files on disk: `{ language: 'typescript', scheme: 'file' }`
5451+// @sample A language filter that applies to all package.json paths: `{ language: 'json', pattern: '**package.json' }`
5452+//
5453+// @since 3.17.0
5454+//
5455+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentFilter
5456+type TextDocumentFilter = Or_TextDocumentFilter // (alias)
5457+// A document filter where `language` is required field.
5458+//
5459+// @since 3.18.0
5460+//
5461+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentFilterLanguage
5462+type TextDocumentFilterLanguage struct {
5463+ // A language id, like `typescript`.
5464+ Language string `json:"language"`
5465+ // A Uri {@link Uri.scheme scheme}, like `file` or `untitled`.
5466+ Scheme string `json:"scheme,omitempty"`
5467+ // A glob pattern, like **/*.{ts,js}. See TextDocumentFilter for examples.
5468+ //
5469+ // @since 3.18.0 - support for relative patterns.
5470+ Pattern *GlobPattern `json:"pattern,omitempty"`
5471+}
5472+
5473+// A document filter where `pattern` is required field.
5474+//
5475+// @since 3.18.0
5476+//
5477+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentFilterPattern
5478+type TextDocumentFilterPattern struct {
5479+ // A language id, like `typescript`.
5480+ Language string `json:"language,omitempty"`
5481+ // A Uri {@link Uri.scheme scheme}, like `file` or `untitled`.
5482+ Scheme string `json:"scheme,omitempty"`
5483+ // A glob pattern, like **/*.{ts,js}. See TextDocumentFilter for examples.
5484+ //
5485+ // @since 3.18.0 - support for relative patterns.
5486+ Pattern GlobPattern `json:"pattern"`
5487+}
5488+
5489+// A document filter where `scheme` is required field.
5490+//
5491+// @since 3.18.0
5492+//
5493+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentFilterScheme
5494+type TextDocumentFilterScheme struct {
5495+ // A language id, like `typescript`.
5496+ Language string `json:"language,omitempty"`
5497+ // A Uri {@link Uri.scheme scheme}, like `file` or `untitled`.
5498+ Scheme string `json:"scheme"`
5499+ // A glob pattern, like **/*.{ts,js}. See TextDocumentFilter for examples.
5500+ //
5501+ // @since 3.18.0 - support for relative patterns.
5502+ Pattern *GlobPattern `json:"pattern,omitempty"`
5503+}
5504+
5505+// A literal to identify a text document in the client.
5506+//
5507+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentIdentifier
5508+type TextDocumentIdentifier struct {
5509+ // The text document's uri.
5510+ URI DocumentUri `json:"uri"`
5511+}
5512+
5513+// An item to transfer a text document from the client to the
5514+// server.
5515+//
5516+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentItem
5517+type TextDocumentItem struct {
5518+ // The text document's uri.
5519+ URI DocumentUri `json:"uri"`
5520+ // The text document's language identifier.
5521+ LanguageID LanguageKind `json:"languageId"`
5522+ // The version number of this document (it will increase after each
5523+ // change, including undo/redo).
5524+ Version int32 `json:"version"`
5525+ // The content of the opened text document.
5526+ Text string `json:"text"`
5527+}
5528+
5529+// A parameter literal used in requests to pass a text document and a position inside that
5530+// document.
5531+//
5532+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentPositionParams
5533+type TextDocumentPositionParams struct {
5534+ // The text document.
5535+ TextDocument TextDocumentIdentifier `json:"textDocument"`
5536+ // The position inside the text document.
5537+ Position Position `json:"position"`
5538+}
5539+
5540+// General text document registration options.
5541+//
5542+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentRegistrationOptions
5543+type TextDocumentRegistrationOptions struct {
5544+ // A document selector to identify the scope of the registration. If set to null
5545+ // the document selector provided on the client side will be used.
5546+ DocumentSelector DocumentSelector `json:"documentSelector"`
5547+}
5548+
5549+// Represents reasons why a text document is saved.
5550+type TextDocumentSaveReason uint32
5551+
5552+// Save registration options.
5553+//
5554+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentSaveRegistrationOptions
5555+type TextDocumentSaveRegistrationOptions struct {
5556+ TextDocumentRegistrationOptions
5557+ SaveOptions
5558+}
5559+
5560+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentSyncClientCapabilities
5561+type TextDocumentSyncClientCapabilities struct {
5562+ // Whether text document synchronization supports dynamic registration.
5563+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
5564+ // The client supports sending will save notifications.
5565+ WillSave bool `json:"willSave,omitempty"`
5566+ // The client supports sending a will save request and
5567+ // waits for a response providing text edits which will
5568+ // be applied to the document before it is saved.
5569+ WillSaveWaitUntil bool `json:"willSaveWaitUntil,omitempty"`
5570+ // The client supports did save notifications.
5571+ DidSave bool `json:"didSave,omitempty"`
5572+}
5573+
5574+// Defines how the host (editor) should sync
5575+// document changes to the language server.
5576+type TextDocumentSyncKind uint32
5577+
5578+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentSyncOptions
5579+type TextDocumentSyncOptions struct {
5580+ // Open and close notifications are sent to the server. If omitted open close notification should not
5581+ // be sent.
5582+ OpenClose bool `json:"openClose,omitempty"`
5583+ // Change notifications are sent to the server. See TextDocumentSyncKind.None, TextDocumentSyncKind.Full
5584+ // and TextDocumentSyncKind.Incremental. If omitted it defaults to TextDocumentSyncKind.None.
5585+ Change TextDocumentSyncKind `json:"change,omitempty"`
5586+ // If present will save notifications are sent to the server. If omitted the notification should not be
5587+ // sent.
5588+ WillSave bool `json:"willSave,omitempty"`
5589+ // If present will save wait until requests are sent to the server. If omitted the request should not be
5590+ // sent.
5591+ WillSaveWaitUntil bool `json:"willSaveWaitUntil,omitempty"`
5592+ // If present save notifications are sent to the server. If omitted the notification should not be
5593+ // sent.
5594+ Save *SaveOptions `json:"save,omitempty"`
5595+}
5596+
5597+// A text edit applicable to a text document.
5598+//
5599+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textEdit
5600+type TextEdit struct {
5601+ // The range of the text document to be manipulated. To insert
5602+ // text into a document create a range where start === end.
5603+ Range Range `json:"range"`
5604+ // The string to be inserted. For delete operations use an
5605+ // empty string.
5606+ NewText string `json:"newText"`
5607+}
5608+type TokenFormat string
5609+type TraceValue string
5610+
5611+// created for Tuple
5612+type Tuple_ParameterInformation_label_Item1 struct {
5613+ Fld0 uint32 `json:"fld0"`
5614+ Fld1 uint32 `json:"fld1"`
5615+}
5616+
5617+// Since 3.6.0
5618+//
5619+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeDefinitionClientCapabilities
5620+type TypeDefinitionClientCapabilities struct {
5621+ // Whether implementation supports dynamic registration. If this is set to `true`
5622+ // the client supports the new `TypeDefinitionRegistrationOptions` return value
5623+ // for the corresponding server capability as well.
5624+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
5625+ // The client supports additional metadata in the form of definition links.
5626+ //
5627+ // Since 3.14.0
5628+ LinkSupport bool `json:"linkSupport,omitempty"`
5629+}
5630+
5631+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeDefinitionOptions
5632+type TypeDefinitionOptions struct {
5633+ WorkDoneProgressOptions
5634+}
5635+
5636+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeDefinitionParams
5637+type TypeDefinitionParams struct {
5638+ TextDocumentPositionParams
5639+ WorkDoneProgressParams
5640+ PartialResultParams
5641+}
5642+
5643+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeDefinitionRegistrationOptions
5644+type TypeDefinitionRegistrationOptions struct {
5645+ TextDocumentRegistrationOptions
5646+ TypeDefinitionOptions
5647+ StaticRegistrationOptions
5648+}
5649+
5650+// @since 3.17.0
5651+//
5652+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeHierarchyClientCapabilities
5653+type TypeHierarchyClientCapabilities struct {
5654+ // Whether implementation supports dynamic registration. If this is set to `true`
5655+ // the client supports the new `(TextDocumentRegistrationOptions & StaticRegistrationOptions)`
5656+ // return value for the corresponding server capability as well.
5657+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
5658+}
5659+
5660+// @since 3.17.0
5661+//
5662+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeHierarchyItem
5663+type TypeHierarchyItem struct {
5664+ // The name of this item.
5665+ Name string `json:"name"`
5666+ // The kind of this item.
5667+ Kind SymbolKind `json:"kind"`
5668+ // Tags for this item.
5669+ Tags []SymbolTag `json:"tags,omitempty"`
5670+ // More detail for this item, e.g. the signature of a function.
5671+ Detail string `json:"detail,omitempty"`
5672+ // The resource identifier of this item.
5673+ URI DocumentUri `json:"uri"`
5674+ // The range enclosing this symbol not including leading/trailing whitespace
5675+ // but everything else, e.g. comments and code.
5676+ Range Range `json:"range"`
5677+ // The range that should be selected and revealed when this symbol is being
5678+ // picked, e.g. the name of a function. Must be contained by the
5679+ // {@link TypeHierarchyItem.range `range`}.
5680+ SelectionRange Range `json:"selectionRange"`
5681+ // A data entry field that is preserved between a type hierarchy prepare and
5682+ // supertypes or subtypes requests. It could also be used to identify the
5683+ // type hierarchy in the server, helping improve the performance on
5684+ // resolving supertypes and subtypes.
5685+ Data interface{} `json:"data,omitempty"`
5686+}
5687+
5688+// Type hierarchy options used during static registration.
5689+//
5690+// @since 3.17.0
5691+//
5692+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeHierarchyOptions
5693+type TypeHierarchyOptions struct {
5694+ WorkDoneProgressOptions
5695+}
5696+
5697+// The parameter of a `textDocument/prepareTypeHierarchy` request.
5698+//
5699+// @since 3.17.0
5700+//
5701+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeHierarchyPrepareParams
5702+type TypeHierarchyPrepareParams struct {
5703+ TextDocumentPositionParams
5704+ WorkDoneProgressParams
5705+}
5706+
5707+// Type hierarchy options used during static or dynamic registration.
5708+//
5709+// @since 3.17.0
5710+//
5711+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeHierarchyRegistrationOptions
5712+type TypeHierarchyRegistrationOptions struct {
5713+ TextDocumentRegistrationOptions
5714+ TypeHierarchyOptions
5715+ StaticRegistrationOptions
5716+}
5717+
5718+// The parameter of a `typeHierarchy/subtypes` request.
5719+//
5720+// @since 3.17.0
5721+//
5722+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeHierarchySubtypesParams
5723+type TypeHierarchySubtypesParams struct {
5724+ Item TypeHierarchyItem `json:"item"`
5725+ WorkDoneProgressParams
5726+ PartialResultParams
5727+}
5728+
5729+// The parameter of a `typeHierarchy/supertypes` request.
5730+//
5731+// @since 3.17.0
5732+//
5733+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeHierarchySupertypesParams
5734+type TypeHierarchySupertypesParams struct {
5735+ Item TypeHierarchyItem `json:"item"`
5736+ WorkDoneProgressParams
5737+ PartialResultParams
5738+}
5739+
5740+// A diagnostic report indicating that the last returned
5741+// report is still accurate.
5742+//
5743+// @since 3.17.0
5744+//
5745+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#unchangedDocumentDiagnosticReport
5746+type UnchangedDocumentDiagnosticReport struct {
5747+ // A document diagnostic report indicating
5748+ // no changes to the last result. A server can
5749+ // only return `unchanged` if result ids are
5750+ // provided.
5751+ Kind string `json:"kind"`
5752+ // A result id which will be sent on the next
5753+ // diagnostic request for the same document.
5754+ ResultID string `json:"resultId"`
5755+}
5756+
5757+// Moniker uniqueness level to define scope of the moniker.
5758+//
5759+// @since 3.16.0
5760+type UniquenessLevel string
5761+
5762+// General parameters to unregister a request or notification.
5763+//
5764+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#unregistration
5765+type Unregistration struct {
5766+ // The id used to unregister the request or notification. Usually an id
5767+ // provided during the register request.
5768+ ID string `json:"id"`
5769+ // The method to unregister for.
5770+ Method string `json:"method"`
5771+}
5772+
5773+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#unregistrationParams
5774+type UnregistrationParams struct {
5775+ Unregisterations []Unregistration `json:"unregisterations"`
5776+}
5777+
5778+// A versioned notebook document identifier.
5779+//
5780+// @since 3.17.0
5781+//
5782+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#versionedNotebookDocumentIdentifier
5783+type VersionedNotebookDocumentIdentifier struct {
5784+ // The version number of this notebook document.
5785+ Version int32 `json:"version"`
5786+ // The notebook document's uri.
5787+ URI URI `json:"uri"`
5788+}
5789+
5790+// A text document identifier to denote a specific version of a text document.
5791+//
5792+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#versionedTextDocumentIdentifier
5793+type VersionedTextDocumentIdentifier struct {
5794+ // The version number of this document.
5795+ Version int32 `json:"version"`
5796+ TextDocumentIdentifier
5797+}
5798+type WatchKind = uint32 // The parameters sent in a will save text document notification.
5799+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#willSaveTextDocumentParams
5800+type WillSaveTextDocumentParams struct {
5801+ // The document that will be saved.
5802+ TextDocument TextDocumentIdentifier `json:"textDocument"`
5803+ // The 'TextDocumentSaveReason'.
5804+ Reason TextDocumentSaveReason `json:"reason"`
5805+}
5806+
5807+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#windowClientCapabilities
5808+type WindowClientCapabilities struct {
5809+ // It indicates whether the client supports server initiated
5810+ // progress using the `window/workDoneProgress/create` request.
5811+ //
5812+ // The capability also controls Whether client supports handling
5813+ // of progress notifications. If set servers are allowed to report a
5814+ // `workDoneProgress` property in the request specific server
5815+ // capabilities.
5816+ //
5817+ // @since 3.15.0
5818+ WorkDoneProgress bool `json:"workDoneProgress,omitempty"`
5819+ // Capabilities specific to the showMessage request.
5820+ //
5821+ // @since 3.16.0
5822+ ShowMessage *ShowMessageRequestClientCapabilities `json:"showMessage,omitempty"`
5823+ // Capabilities specific to the showDocument request.
5824+ //
5825+ // @since 3.16.0
5826+ ShowDocument *ShowDocumentClientCapabilities `json:"showDocument,omitempty"`
5827+}
5828+
5829+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workDoneProgressBegin
5830+type WorkDoneProgressBegin struct {
5831+ Kind string `json:"kind"`
5832+ // Mandatory title of the progress operation. Used to briefly inform about
5833+ // the kind of operation being performed.
5834+ //
5835+ // Examples: "Indexing" or "Linking dependencies".
5836+ Title string `json:"title"`
5837+ // Controls if a cancel button should show to allow the user to cancel the
5838+ // long running operation. Clients that don't support cancellation are allowed
5839+ // to ignore the setting.
5840+ Cancellable bool `json:"cancellable,omitempty"`
5841+ // Optional, more detailed associated progress message. Contains
5842+ // complementary information to the `title`.
5843+ //
5844+ // Examples: "3/25 files", "project/src/module2", "node_modules/some_dep".
5845+ // If unset, the previous progress message (if any) is still valid.
5846+ Message string `json:"message,omitempty"`
5847+ // Optional progress percentage to display (value 100 is considered 100%).
5848+ // If not provided infinite progress is assumed and clients are allowed
5849+ // to ignore the `percentage` value in subsequent in report notifications.
5850+ //
5851+ // The value should be steadily rising. Clients are free to ignore values
5852+ // that are not following this rule. The value range is [0, 100].
5853+ Percentage uint32 `json:"percentage,omitempty"`
5854+}
5855+
5856+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workDoneProgressCancelParams
5857+type WorkDoneProgressCancelParams struct {
5858+ // The token to be used to report progress.
5859+ Token ProgressToken `json:"token"`
5860+}
5861+
5862+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workDoneProgressCreateParams
5863+type WorkDoneProgressCreateParams struct {
5864+ // The token to be used to report progress.
5865+ Token ProgressToken `json:"token"`
5866+}
5867+
5868+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workDoneProgressEnd
5869+type WorkDoneProgressEnd struct {
5870+ Kind string `json:"kind"`
5871+ // Optional, a final message indicating to for example indicate the outcome
5872+ // of the operation.
5873+ Message string `json:"message,omitempty"`
5874+}
5875+
5876+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workDoneProgressOptions
5877+type WorkDoneProgressOptions struct {
5878+ WorkDoneProgress bool `json:"workDoneProgress,omitempty"`
5879+}
5880+
5881+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workDoneProgressParams
5882+type WorkDoneProgressParams struct {
5883+ // An optional token that a server can use to report work done progress.
5884+ WorkDoneToken ProgressToken `json:"workDoneToken,omitempty"`
5885+}
5886+
5887+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workDoneProgressReport
5888+type WorkDoneProgressReport struct {
5889+ Kind string `json:"kind"`
5890+ // Controls enablement state of a cancel button.
5891+ //
5892+ // Clients that don't support cancellation or don't support controlling the button's
5893+ // enablement state are allowed to ignore the property.
5894+ Cancellable bool `json:"cancellable,omitempty"`
5895+ // Optional, more detailed associated progress message. Contains
5896+ // complementary information to the `title`.
5897+ //
5898+ // Examples: "3/25 files", "project/src/module2", "node_modules/some_dep".
5899+ // If unset, the previous progress message (if any) is still valid.
5900+ Message string `json:"message,omitempty"`
5901+ // Optional progress percentage to display (value 100 is considered 100%).
5902+ // If not provided infinite progress is assumed and clients are allowed
5903+ // to ignore the `percentage` value in subsequent in report notifications.
5904+ //
5905+ // The value should be steadily rising. Clients are free to ignore values
5906+ // that are not following this rule. The value range is [0, 100]
5907+ Percentage uint32 `json:"percentage,omitempty"`
5908+}
5909+
5910+// Workspace specific client capabilities.
5911+//
5912+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceClientCapabilities
5913+type WorkspaceClientCapabilities struct {
5914+ // The client supports applying batch edits
5915+ // to the workspace by supporting the request
5916+ // 'workspace/applyEdit'
5917+ ApplyEdit bool `json:"applyEdit,omitempty"`
5918+ // Capabilities specific to `WorkspaceEdit`s.
5919+ WorkspaceEdit *WorkspaceEditClientCapabilities `json:"workspaceEdit,omitempty"`
5920+ // Capabilities specific to the `workspace/didChangeConfiguration` notification.
5921+ DidChangeConfiguration DidChangeConfigurationClientCapabilities `json:"didChangeConfiguration,omitempty"`
5922+ // Capabilities specific to the `workspace/didChangeWatchedFiles` notification.
5923+ DidChangeWatchedFiles DidChangeWatchedFilesClientCapabilities `json:"didChangeWatchedFiles,omitempty"`
5924+ // Capabilities specific to the `workspace/symbol` request.
5925+ Symbol *WorkspaceSymbolClientCapabilities `json:"symbol,omitempty"`
5926+ // Capabilities specific to the `workspace/executeCommand` request.
5927+ ExecuteCommand *ExecuteCommandClientCapabilities `json:"executeCommand,omitempty"`
5928+ // The client has support for workspace folders.
5929+ //
5930+ // @since 3.6.0
5931+ WorkspaceFolders bool `json:"workspaceFolders,omitempty"`
5932+ // The client supports `workspace/configuration` requests.
5933+ //
5934+ // @since 3.6.0
5935+ Configuration bool `json:"configuration,omitempty"`
5936+ // Capabilities specific to the semantic token requests scoped to the
5937+ // workspace.
5938+ //
5939+ // @since 3.16.0.
5940+ SemanticTokens *SemanticTokensWorkspaceClientCapabilities `json:"semanticTokens,omitempty"`
5941+ // Capabilities specific to the code lens requests scoped to the
5942+ // workspace.
5943+ //
5944+ // @since 3.16.0.
5945+ CodeLens *CodeLensWorkspaceClientCapabilities `json:"codeLens,omitempty"`
5946+ // The client has support for file notifications/requests for user operations on files.
5947+ //
5948+ // Since 3.16.0
5949+ FileOperations *FileOperationClientCapabilities `json:"fileOperations,omitempty"`
5950+ // Capabilities specific to the inline values requests scoped to the
5951+ // workspace.
5952+ //
5953+ // @since 3.17.0.
5954+ InlineValue *InlineValueWorkspaceClientCapabilities `json:"inlineValue,omitempty"`
5955+ // Capabilities specific to the inlay hint requests scoped to the
5956+ // workspace.
5957+ //
5958+ // @since 3.17.0.
5959+ InlayHint *InlayHintWorkspaceClientCapabilities `json:"inlayHint,omitempty"`
5960+ // Capabilities specific to the diagnostic requests scoped to the
5961+ // workspace.
5962+ //
5963+ // @since 3.17.0.
5964+ Diagnostics *DiagnosticWorkspaceClientCapabilities `json:"diagnostics,omitempty"`
5965+ // Capabilities specific to the folding range requests scoped to the workspace.
5966+ //
5967+ // @since 3.18.0
5968+ // @proposed
5969+ FoldingRange *FoldingRangeWorkspaceClientCapabilities `json:"foldingRange,omitempty"`
5970+ // Capabilities specific to the `workspace/textDocumentContent` request.
5971+ //
5972+ // @since 3.18.0
5973+ // @proposed
5974+ TextDocumentContent *TextDocumentContentClientCapabilities `json:"textDocumentContent,omitempty"`
5975+}
5976+
5977+// Parameters of the workspace diagnostic request.
5978+//
5979+// @since 3.17.0
5980+//
5981+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceDiagnosticParams
5982+type WorkspaceDiagnosticParams struct {
5983+ // The additional identifier provided during registration.
5984+ Identifier string `json:"identifier,omitempty"`
5985+ // The currently known diagnostic reports with their
5986+ // previous result ids.
5987+ PreviousResultIds []PreviousResultId `json:"previousResultIds"`
5988+ WorkDoneProgressParams
5989+ PartialResultParams
5990+}
5991+
5992+// A workspace diagnostic report.
5993+//
5994+// @since 3.17.0
5995+//
5996+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceDiagnosticReport
5997+type WorkspaceDiagnosticReport struct {
5998+ Items []WorkspaceDocumentDiagnosticReport `json:"items"`
5999+}
6000+
6001+// A partial result for a workspace diagnostic report.
6002+//
6003+// @since 3.17.0
6004+//
6005+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceDiagnosticReportPartialResult
6006+type WorkspaceDiagnosticReportPartialResult struct {
6007+ Items []WorkspaceDocumentDiagnosticReport `json:"items"`
6008+}
6009+
6010+// A workspace diagnostic document report.
6011+//
6012+// @since 3.17.0
6013+//
6014+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceDocumentDiagnosticReport
6015+type WorkspaceDocumentDiagnosticReport = Or_WorkspaceDocumentDiagnosticReport // (alias)
6016+// A workspace edit represents changes to many resources managed in the workspace. The edit
6017+// should either provide `changes` or `documentChanges`. If documentChanges are present
6018+// they are preferred over `changes` if the client can handle versioned document edits.
6019+//
6020+// Since version 3.13.0 a workspace edit can contain resource operations as well. If resource
6021+// operations are present clients need to execute the operations in the order in which they
6022+// are provided. So a workspace edit for example can consist of the following two changes:
6023+// (1) a create file a.txt and (2) a text document edit which insert text into file a.txt.
6024+//
6025+// An invalid sequence (e.g. (1) delete file a.txt and (2) insert text into file a.txt) will
6026+// cause failure of the operation. How the client recovers from the failure is described by
6027+// the client capability: `workspace.workspaceEdit.failureHandling`
6028+//
6029+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceEdit
6030+type WorkspaceEdit struct {
6031+ // Holds changes to existing resources.
6032+ Changes map[DocumentUri][]TextEdit `json:"changes,omitempty"`
6033+ // Depending on the client capability `workspace.workspaceEdit.resourceOperations` document changes
6034+ // are either an array of `TextDocumentEdit`s to express changes to n different text documents
6035+ // where each text document edit addresses a specific version of a text document. Or it can contain
6036+ // above `TextDocumentEdit`s mixed with create, rename and delete file / folder operations.
6037+ //
6038+ // Whether a client supports versioned document edits is expressed via
6039+ // `workspace.workspaceEdit.documentChanges` client capability.
6040+ //
6041+ // If a client neither supports `documentChanges` nor `workspace.workspaceEdit.resourceOperations` then
6042+ // only plain `TextEdit`s using the `changes` property are supported.
6043+ DocumentChanges []DocumentChange `json:"documentChanges,omitempty"`
6044+ // A map of change annotations that can be referenced in `AnnotatedTextEdit`s or create, rename and
6045+ // delete file / folder operations.
6046+ //
6047+ // Whether clients honor this property depends on the client capability `workspace.changeAnnotationSupport`.
6048+ //
6049+ // @since 3.16.0
6050+ ChangeAnnotations map[ChangeAnnotationIdentifier]ChangeAnnotation `json:"changeAnnotations,omitempty"`
6051+}
6052+
6053+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceEditClientCapabilities
6054+type WorkspaceEditClientCapabilities struct {
6055+ // The client supports versioned document changes in `WorkspaceEdit`s
6056+ DocumentChanges bool `json:"documentChanges,omitempty"`
6057+ // The resource operations the client supports. Clients should at least
6058+ // support 'create', 'rename' and 'delete' files and folders.
6059+ //
6060+ // @since 3.13.0
6061+ ResourceOperations []ResourceOperationKind `json:"resourceOperations,omitempty"`
6062+ // The failure handling strategy of a client if applying the workspace edit
6063+ // fails.
6064+ //
6065+ // @since 3.13.0
6066+ FailureHandling *FailureHandlingKind `json:"failureHandling,omitempty"`
6067+ // Whether the client normalizes line endings to the client specific
6068+ // setting.
6069+ // If set to `true` the client will normalize line ending characters
6070+ // in a workspace edit to the client-specified new line
6071+ // character.
6072+ //
6073+ // @since 3.16.0
6074+ NormalizesLineEndings bool `json:"normalizesLineEndings,omitempty"`
6075+ // Whether the client in general supports change annotations on text edits,
6076+ // create file, rename file and delete file changes.
6077+ //
6078+ // @since 3.16.0
6079+ ChangeAnnotationSupport *ChangeAnnotationsSupportOptions `json:"changeAnnotationSupport,omitempty"`
6080+ // Whether the client supports `WorkspaceEditMetadata` in `WorkspaceEdit`s.
6081+ //
6082+ // @since 3.18.0
6083+ // @proposed
6084+ MetadataSupport bool `json:"metadataSupport,omitempty"`
6085+ // Whether the client supports snippets as text edits.
6086+ //
6087+ // @since 3.18.0
6088+ // @proposed
6089+ SnippetEditSupport bool `json:"snippetEditSupport,omitempty"`
6090+}
6091+
6092+// Additional data about a workspace edit.
6093+//
6094+// @since 3.18.0
6095+// @proposed
6096+//
6097+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceEditMetadata
6098+type WorkspaceEditMetadata struct {
6099+ // Signal to the editor that this edit is a refactoring.
6100+ IsRefactoring bool `json:"isRefactoring,omitempty"`
6101+}
6102+
6103+// A workspace folder inside a client.
6104+//
6105+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceFolder
6106+type WorkspaceFolder struct {
6107+ // The associated URI for this workspace folder.
6108+ URI URI `json:"uri"`
6109+ // The name of the workspace folder. Used to refer to this
6110+ // workspace folder in the user interface.
6111+ Name string `json:"name"`
6112+}
6113+
6114+// The workspace folder change event.
6115+//
6116+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceFoldersChangeEvent
6117+type WorkspaceFoldersChangeEvent struct {
6118+ // The array of added workspace folders
6119+ Added []WorkspaceFolder `json:"added"`
6120+ // The array of the removed workspace folders
6121+ Removed []WorkspaceFolder `json:"removed"`
6122+}
6123+
6124+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceFoldersInitializeParams
6125+type WorkspaceFoldersInitializeParams struct {
6126+ // The workspace folders configured in the client when the server starts.
6127+ //
6128+ // This property is only available if the client supports workspace folders.
6129+ // It can be `null` if the client supports workspace folders but none are
6130+ // configured.
6131+ //
6132+ // @since 3.6.0
6133+ WorkspaceFolders []WorkspaceFolder `json:"workspaceFolders,omitempty"`
6134+}
6135+
6136+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceFoldersServerCapabilities
6137+type WorkspaceFoldersServerCapabilities struct {
6138+ // The server has support for workspace folders
6139+ Supported bool `json:"supported,omitempty"`
6140+ // Whether the server wants to receive workspace folder
6141+ // change notifications.
6142+ //
6143+ // If a string is provided the string is treated as an ID
6144+ // under which the notification is registered on the client
6145+ // side. The ID can be used to unregister for these events
6146+ // using the `client/unregisterCapability` request.
6147+ ChangeNotifications *Or_WorkspaceFoldersServerCapabilities_changeNotifications `json:"changeNotifications,omitempty"`
6148+}
6149+
6150+// A full document diagnostic report for a workspace diagnostic result.
6151+//
6152+// @since 3.17.0
6153+//
6154+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceFullDocumentDiagnosticReport
6155+type WorkspaceFullDocumentDiagnosticReport struct {
6156+ // The URI for which diagnostic information is reported.
6157+ URI DocumentUri `json:"uri"`
6158+ // The version number for which the diagnostics are reported.
6159+ // If the document is not marked as open `null` can be provided.
6160+ Version int32 `json:"version"`
6161+ FullDocumentDiagnosticReport
6162+}
6163+
6164+// Defines workspace specific capabilities of the server.
6165+//
6166+// @since 3.18.0
6167+//
6168+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceOptions
6169+type WorkspaceOptions struct {
6170+ // The server supports workspace folder.
6171+ //
6172+ // @since 3.6.0
6173+ WorkspaceFolders *WorkspaceFoldersServerCapabilities `json:"workspaceFolders,omitempty"`
6174+ // The server is interested in notifications/requests for operations on files.
6175+ //
6176+ // @since 3.16.0
6177+ FileOperations *FileOperationOptions `json:"fileOperations,omitempty"`
6178+ // The server supports the `workspace/textDocumentContent` request.
6179+ //
6180+ // @since 3.18.0
6181+ // @proposed
6182+ TextDocumentContent *Or_WorkspaceOptions_textDocumentContent `json:"textDocumentContent,omitempty"`
6183+}
6184+
6185+// A special workspace symbol that supports locations without a range.
6186+//
6187+// See also SymbolInformation.
6188+//
6189+// @since 3.17.0
6190+//
6191+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceSymbol
6192+type WorkspaceSymbol struct {
6193+ // The location of the symbol. Whether a server is allowed to
6194+ // return a location without a range depends on the client
6195+ // capability `workspace.symbol.resolveSupport`.
6196+ //
6197+ // See SymbolInformation#location for more details.
6198+ Location Or_WorkspaceSymbol_location `json:"location"`
6199+ // A data entry field that is preserved on a workspace symbol between a
6200+ // workspace symbol request and a workspace symbol resolve request.
6201+ Data interface{} `json:"data,omitempty"`
6202+ BaseSymbolInformation
6203+}
6204+
6205+// Client capabilities for a {@link WorkspaceSymbolRequest}.
6206+//
6207+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceSymbolClientCapabilities
6208+type WorkspaceSymbolClientCapabilities struct {
6209+ // Symbol request supports dynamic registration.
6210+ DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
6211+ // Specific capabilities for the `SymbolKind` in the `workspace/symbol` request.
6212+ SymbolKind *ClientSymbolKindOptions `json:"symbolKind,omitempty"`
6213+ // The client supports tags on `SymbolInformation`.
6214+ // Clients supporting tags have to handle unknown tags gracefully.
6215+ //
6216+ // @since 3.16.0
6217+ TagSupport *ClientSymbolTagOptions `json:"tagSupport,omitempty"`
6218+ // The client support partial workspace symbols. The client will send the
6219+ // request `workspaceSymbol/resolve` to the server to resolve additional
6220+ // properties.
6221+ //
6222+ // @since 3.17.0
6223+ ResolveSupport *ClientSymbolResolveOptions `json:"resolveSupport,omitempty"`
6224+}
6225+
6226+// Server capabilities for a {@link WorkspaceSymbolRequest}.
6227+//
6228+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceSymbolOptions
6229+type WorkspaceSymbolOptions struct {
6230+ // The server provides support to resolve additional
6231+ // information for a workspace symbol.
6232+ //
6233+ // @since 3.17.0
6234+ ResolveProvider bool `json:"resolveProvider,omitempty"`
6235+ WorkDoneProgressOptions
6236+}
6237+
6238+// The parameters of a {@link WorkspaceSymbolRequest}.
6239+//
6240+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceSymbolParams
6241+type WorkspaceSymbolParams struct {
6242+ // A query string to filter symbols by. Clients may send an empty
6243+ // string here to request all symbols.
6244+ //
6245+ // The `query`-parameter should be interpreted in a *relaxed way* as editors
6246+ // will apply their own highlighting and scoring on the results. A good rule
6247+ // of thumb is to match case-insensitive and to simply check that the
6248+ // characters of *query* appear in their order in a candidate symbol.
6249+ // Servers shouldn't use prefix, substring, or similar strict matching.
6250+ Query string `json:"query"`
6251+ WorkDoneProgressParams
6252+ PartialResultParams
6253+}
6254+
6255+// Registration options for a {@link WorkspaceSymbolRequest}.
6256+//
6257+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceSymbolRegistrationOptions
6258+type WorkspaceSymbolRegistrationOptions struct {
6259+ WorkspaceSymbolOptions
6260+}
6261+
6262+// An unchanged document diagnostic report for a workspace diagnostic result.
6263+//
6264+// @since 3.17.0
6265+//
6266+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceUnchangedDocumentDiagnosticReport
6267+type WorkspaceUnchangedDocumentDiagnosticReport struct {
6268+ // The URI for which diagnostic information is reported.
6269+ URI DocumentUri `json:"uri"`
6270+ // The version number for which the diagnostics are reported.
6271+ // If the document is not marked as open `null` can be provided.
6272+ Version int32 `json:"version"`
6273+ UnchangedDocumentDiagnosticReport
6274+}
6275+
6276+// The initialize parameters
6277+//
6278+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#_InitializeParams
6279+type XInitializeParams struct {
6280+ // The process Id of the parent process that started
6281+ // the server.
6282+ //
6283+ // Is `null` if the process has not been started by another process.
6284+ // If the parent process is not alive then the server should exit.
6285+ ProcessID int32 `json:"processId"`
6286+ // Information about the client
6287+ //
6288+ // @since 3.15.0
6289+ ClientInfo *ClientInfo `json:"clientInfo,omitempty"`
6290+ // The locale the client is currently showing the user interface
6291+ // in. This must not necessarily be the locale of the operating
6292+ // system.
6293+ //
6294+ // Uses IETF language tags as the value's syntax
6295+ // (See https://en.wikipedia.org/wiki/IETF_language_tag)
6296+ //
6297+ // @since 3.16.0
6298+ Locale string `json:"locale,omitempty"`
6299+ // The rootPath of the workspace. Is null
6300+ // if no folder is open.
6301+ //
6302+ // @deprecated in favour of rootUri.
6303+ RootPath string `json:"rootPath,omitempty"`
6304+ // The rootUri of the workspace. Is null if no
6305+ // folder is open. If both `rootPath` and `rootUri` are set
6306+ // `rootUri` wins.
6307+ //
6308+ // @deprecated in favour of workspaceFolders.
6309+ RootURI DocumentUri `json:"rootUri"`
6310+ // The capabilities provided by the client (editor or tool)
6311+ Capabilities ClientCapabilities `json:"capabilities"`
6312+ // User provided initialization options.
6313+ InitializationOptions interface{} `json:"initializationOptions,omitempty"`
6314+ // The initial trace setting. If omitted trace is disabled ('off').
6315+ Trace *TraceValue `json:"trace,omitempty"`
6316+ WorkDoneProgressParams
6317+}
6318+
6319+// The initialize parameters
6320+//
6321+// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#_InitializeParams
6322+type _InitializeParams struct {
6323+ // The process Id of the parent process that started
6324+ // the server.
6325+ //
6326+ // Is `null` if the process has not been started by another process.
6327+ // If the parent process is not alive then the server should exit.
6328+ ProcessID int32 `json:"processId"`
6329+ // Information about the client
6330+ //
6331+ // @since 3.15.0
6332+ ClientInfo *ClientInfo `json:"clientInfo,omitempty"`
6333+ // The locale the client is currently showing the user interface
6334+ // in. This must not necessarily be the locale of the operating
6335+ // system.
6336+ //
6337+ // Uses IETF language tags as the value's syntax
6338+ // (See https://en.wikipedia.org/wiki/IETF_language_tag)
6339+ //
6340+ // @since 3.16.0
6341+ Locale string `json:"locale,omitempty"`
6342+ // The rootPath of the workspace. Is null
6343+ // if no folder is open.
6344+ //
6345+ // @deprecated in favour of rootUri.
6346+ RootPath string `json:"rootPath,omitempty"`
6347+ // The rootUri of the workspace. Is null if no
6348+ // folder is open. If both `rootPath` and `rootUri` are set
6349+ // `rootUri` wins.
6350+ //
6351+ // @deprecated in favour of workspaceFolders.
6352+ RootURI DocumentUri `json:"rootUri"`
6353+ // The capabilities provided by the client (editor or tool)
6354+ Capabilities ClientCapabilities `json:"capabilities"`
6355+ // User provided initialization options.
6356+ InitializationOptions interface{} `json:"initializationOptions,omitempty"`
6357+ // The initial trace setting. If omitted trace is disabled ('off').
6358+ Trace *TraceValue `json:"trace,omitempty"`
6359+ WorkDoneProgressParams
6360+}
6361+
6362+const (
6363+ // A set of predefined code action kinds
6364+ // Empty kind.
6365+ Empty CodeActionKind = ""
6366+ // Base kind for quickfix actions: 'quickfix'
6367+ QuickFix CodeActionKind = "quickfix"
6368+ // Base kind for refactoring actions: 'refactor'
6369+ Refactor CodeActionKind = "refactor"
6370+ // Base kind for refactoring extraction actions: 'refactor.extract'
6371+ //
6372+ // Example extract actions:
6373+ //
6374+ //
6375+ // - Extract method
6376+ // - Extract function
6377+ // - Extract variable
6378+ // - Extract interface from class
6379+ // - ...
6380+ RefactorExtract CodeActionKind = "refactor.extract"
6381+ // Base kind for refactoring inline actions: 'refactor.inline'
6382+ //
6383+ // Example inline actions:
6384+ //
6385+ //
6386+ // - Inline function
6387+ // - Inline variable
6388+ // - Inline constant
6389+ // - ...
6390+ RefactorInline CodeActionKind = "refactor.inline"
6391+ // Base kind for refactoring move actions: `refactor.move`
6392+ //
6393+ // Example move actions:
6394+ //
6395+ //
6396+ // - Move a function to a new file
6397+ // - Move a property between classes
6398+ // - Move method to base class
6399+ // - ...
6400+ //
6401+ // @since 3.18.0
6402+ // @proposed
6403+ RefactorMove CodeActionKind = "refactor.move"
6404+ // Base kind for refactoring rewrite actions: 'refactor.rewrite'
6405+ //
6406+ // Example rewrite actions:
6407+ //
6408+ //
6409+ // - Convert JavaScript function to class
6410+ // - Add or remove parameter
6411+ // - Encapsulate field
6412+ // - Make method static
6413+ // - Move method to base class
6414+ // - ...
6415+ RefactorRewrite CodeActionKind = "refactor.rewrite"
6416+ // Base kind for source actions: `source`
6417+ //
6418+ // Source code actions apply to the entire file.
6419+ Source CodeActionKind = "source"
6420+ // Base kind for an organize imports source action: `source.organizeImports`
6421+ SourceOrganizeImports CodeActionKind = "source.organizeImports"
6422+ // Base kind for auto-fix source actions: `source.fixAll`.
6423+ //
6424+ // Fix all actions automatically fix errors that have a clear fix that do not require user input.
6425+ // They should not suppress errors or perform unsafe fixes such as generating new types or classes.
6426+ //
6427+ // @since 3.15.0
6428+ SourceFixAll CodeActionKind = "source.fixAll"
6429+ // Base kind for all code actions applying to the entire notebook's scope. CodeActionKinds using
6430+ // this should always begin with `notebook.`
6431+ //
6432+ // @since 3.18.0
6433+ Notebook CodeActionKind = "notebook"
6434+ // The reason why code actions were requested.
6435+ //
6436+ // @since 3.17.0
6437+ // Code actions were explicitly requested by the user or by an extension.
6438+ CodeActionInvoked CodeActionTriggerKind = 1
6439+ // Code actions were requested automatically.
6440+ //
6441+ // This typically happens when current selection in a file changes, but can
6442+ // also be triggered when file content changes.
6443+ CodeActionAutomatic CodeActionTriggerKind = 2
6444+ // The kind of a completion entry.
6445+ TextCompletion CompletionItemKind = 1
6446+ MethodCompletion CompletionItemKind = 2
6447+ FunctionCompletion CompletionItemKind = 3
6448+ ConstructorCompletion CompletionItemKind = 4
6449+ FieldCompletion CompletionItemKind = 5
6450+ VariableCompletion CompletionItemKind = 6
6451+ ClassCompletion CompletionItemKind = 7
6452+ InterfaceCompletion CompletionItemKind = 8
6453+ ModuleCompletion CompletionItemKind = 9
6454+ PropertyCompletion CompletionItemKind = 10
6455+ UnitCompletion CompletionItemKind = 11
6456+ ValueCompletion CompletionItemKind = 12
6457+ EnumCompletion CompletionItemKind = 13
6458+ KeywordCompletion CompletionItemKind = 14
6459+ SnippetCompletion CompletionItemKind = 15
6460+ ColorCompletion CompletionItemKind = 16
6461+ FileCompletion CompletionItemKind = 17
6462+ ReferenceCompletion CompletionItemKind = 18
6463+ FolderCompletion CompletionItemKind = 19
6464+ EnumMemberCompletion CompletionItemKind = 20
6465+ ConstantCompletion CompletionItemKind = 21
6466+ StructCompletion CompletionItemKind = 22
6467+ EventCompletion CompletionItemKind = 23
6468+ OperatorCompletion CompletionItemKind = 24
6469+ TypeParameterCompletion CompletionItemKind = 25
6470+ // Completion item tags are extra annotations that tweak the rendering of a completion
6471+ // item.
6472+ //
6473+ // @since 3.15.0
6474+ // Render a completion as obsolete, usually using a strike-out.
6475+ ComplDeprecated CompletionItemTag = 1
6476+ // How a completion was triggered
6477+ // Completion was triggered by typing an identifier (24x7 code
6478+ // complete), manual invocation (e.g Ctrl+Space) or via API.
6479+ Invoked CompletionTriggerKind = 1
6480+ // Completion was triggered by a trigger character specified by
6481+ // the `triggerCharacters` properties of the `CompletionRegistrationOptions`.
6482+ TriggerCharacter CompletionTriggerKind = 2
6483+ // Completion was re-triggered as current completion list is incomplete
6484+ TriggerForIncompleteCompletions CompletionTriggerKind = 3
6485+ // The diagnostic's severity.
6486+ // Reports an error.
6487+ SeverityError DiagnosticSeverity = 1
6488+ // Reports a warning.
6489+ SeverityWarning DiagnosticSeverity = 2
6490+ // Reports an information.
6491+ SeverityInformation DiagnosticSeverity = 3
6492+ // Reports a hint.
6493+ SeverityHint DiagnosticSeverity = 4
6494+ // The diagnostic tags.
6495+ //
6496+ // @since 3.15.0
6497+ // Unused or unnecessary code.
6498+ //
6499+ // Clients are allowed to render diagnostics with this tag faded out instead of having
6500+ // an error squiggle.
6501+ Unnecessary DiagnosticTag = 1
6502+ // Deprecated or obsolete code.
6503+ //
6504+ // Clients are allowed to rendered diagnostics with this tag strike through.
6505+ Deprecated DiagnosticTag = 2
6506+ // The document diagnostic report kinds.
6507+ //
6508+ // @since 3.17.0
6509+ // A diagnostic report with a full
6510+ // set of problems.
6511+ DiagnosticFull DocumentDiagnosticReportKind = "full"
6512+ // A report indicating that the last
6513+ // returned report is still accurate.
6514+ DiagnosticUnchanged DocumentDiagnosticReportKind = "unchanged"
6515+ // A document highlight kind.
6516+ // A textual occurrence.
6517+ Text DocumentHighlightKind = 1
6518+ // Read-access of a symbol, like reading a variable.
6519+ Read DocumentHighlightKind = 2
6520+ // Write-access of a symbol, like writing to a variable.
6521+ Write DocumentHighlightKind = 3
6522+ // Predefined error codes.
6523+ ParseError ErrorCodes = -32700
6524+ InvalidRequest ErrorCodes = -32600
6525+ MethodNotFound ErrorCodes = -32601
6526+ InvalidParams ErrorCodes = -32602
6527+ InternalError ErrorCodes = -32603
6528+ // Error code indicating that a server received a notification or
6529+ // request before the server has received the `initialize` request.
6530+ ServerNotInitialized ErrorCodes = -32002
6531+ UnknownErrorCode ErrorCodes = -32001
6532+ // Applying the workspace change is simply aborted if one of the changes provided
6533+ // fails. All operations executed before the failing operation stay executed.
6534+ Abort FailureHandlingKind = "abort"
6535+ // All operations are executed transactional. That means they either all
6536+ // succeed or no changes at all are applied to the workspace.
6537+ Transactional FailureHandlingKind = "transactional"
6538+ // If the workspace edit contains only textual file changes they are executed transactional.
6539+ // If resource changes (create, rename or delete file) are part of the change the failure
6540+ // handling strategy is abort.
6541+ TextOnlyTransactional FailureHandlingKind = "textOnlyTransactional"
6542+ // The client tries to undo the operations already executed. But there is no
6543+ // guarantee that this is succeeding.
6544+ Undo FailureHandlingKind = "undo"
6545+ // The file event type
6546+ // The file got created.
6547+ Created FileChangeType = 1
6548+ // The file got changed.
6549+ Changed FileChangeType = 2
6550+ // The file got deleted.
6551+ Deleted FileChangeType = 3
6552+ // A pattern kind describing if a glob pattern matches a file a folder or
6553+ // both.
6554+ //
6555+ // @since 3.16.0
6556+ // The pattern matches a file only.
6557+ FilePattern FileOperationPatternKind = "file"
6558+ // The pattern matches a folder only.
6559+ FolderPattern FileOperationPatternKind = "folder"
6560+ // A set of predefined range kinds.
6561+ // Folding range for a comment
6562+ Comment FoldingRangeKind = "comment"
6563+ // Folding range for an import or include
6564+ Imports FoldingRangeKind = "imports"
6565+ // Folding range for a region (e.g. `#region`)
6566+ Region FoldingRangeKind = "region"
6567+ // Inlay hint kinds.
6568+ //
6569+ // @since 3.17.0
6570+ // An inlay hint that for a type annotation.
6571+ Type InlayHintKind = 1
6572+ // An inlay hint that is for a parameter.
6573+ Parameter InlayHintKind = 2
6574+ // Describes how an {@link InlineCompletionItemProvider inline completion provider} was triggered.
6575+ //
6576+ // @since 3.18.0
6577+ // @proposed
6578+ // Completion was triggered explicitly by a user gesture.
6579+ InlineInvoked InlineCompletionTriggerKind = 1
6580+ // Completion was triggered automatically while editing.
6581+ InlineAutomatic InlineCompletionTriggerKind = 2
6582+ // Defines whether the insert text in a completion item should be interpreted as
6583+ // plain text or a snippet.
6584+ // The primary text to be inserted is treated as a plain string.
6585+ PlainTextTextFormat InsertTextFormat = 1
6586+ // The primary text to be inserted is treated as a snippet.
6587+ //
6588+ // A snippet can define tab stops and placeholders with `$1`, `$2`
6589+ // and `${3:foo}`. `$0` defines the final tab stop, it defaults to
6590+ // the end of the snippet. Placeholders with equal identifiers are linked,
6591+ // that is typing in one will update others too.
6592+ //
6593+ // See also: https://microsoft.github.io/language-server-protocol/specifications/specification-current/#snippet_syntax
6594+ SnippetTextFormat InsertTextFormat = 2
6595+ // How whitespace and indentation is handled during completion
6596+ // item insertion.
6597+ //
6598+ // @since 3.16.0
6599+ // The insertion or replace strings is taken as it is. If the
6600+ // value is multi line the lines below the cursor will be
6601+ // inserted using the indentation defined in the string value.
6602+ // The client will not apply any kind of adjustments to the
6603+ // string.
6604+ AsIs InsertTextMode = 1
6605+ // The editor adjusts leading whitespace of new lines so that
6606+ // they match the indentation up to the cursor of the line for
6607+ // which the item is accepted.
6608+ //
6609+ // Consider a line like this: <2tabs><cursor><3tabs>foo. Accepting a
6610+ // multi line completion item is indented using 2 tabs and all
6611+ // following lines inserted will be indented using 2 tabs as well.
6612+ AdjustIndentation InsertTextMode = 2
6613+ // A request failed but it was syntactically correct, e.g the
6614+ // method name was known and the parameters were valid. The error
6615+ // message should contain human readable information about why
6616+ // the request failed.
6617+ //
6618+ // @since 3.17.0
6619+ RequestFailed LSPErrorCodes = -32803
6620+ // The server cancelled the request. This error code should
6621+ // only be used for requests that explicitly support being
6622+ // server cancellable.
6623+ //
6624+ // @since 3.17.0
6625+ ServerCancelled LSPErrorCodes = -32802
6626+ // The server detected that the content of a document got
6627+ // modified outside normal conditions. A server should
6628+ // NOT send this error code if it detects a content change
6629+ // in it unprocessed messages. The result even computed
6630+ // on an older state might still be useful for the client.
6631+ //
6632+ // If a client decides that a result is not of any use anymore
6633+ // the client should cancel the request.
6634+ ContentModified LSPErrorCodes = -32801
6635+ // The client has canceled a request and a server has detected
6636+ // the cancel.
6637+ RequestCancelled LSPErrorCodes = -32800
6638+ // Predefined Language kinds
6639+ // @since 3.18.0
6640+ // @proposed
6641+ LangABAP LanguageKind = "abap"
6642+ LangWindowsBat LanguageKind = "bat"
6643+ LangBibTeX LanguageKind = "bibtex"
6644+ LangClojure LanguageKind = "clojure"
6645+ LangCoffeescript LanguageKind = "coffeescript"
6646+ LangC LanguageKind = "c"
6647+ LangCPP LanguageKind = "cpp"
6648+ LangCSharp LanguageKind = "csharp"
6649+ LangCSS LanguageKind = "css"
6650+ // @since 3.18.0
6651+ // @proposed
6652+ LangD LanguageKind = "d"
6653+ // @since 3.18.0
6654+ // @proposed
6655+ LangDelphi LanguageKind = "pascal"
6656+ LangDiff LanguageKind = "diff"
6657+ LangDart LanguageKind = "dart"
6658+ LangDockerfile LanguageKind = "dockerfile"
6659+ LangElixir LanguageKind = "elixir"
6660+ LangErlang LanguageKind = "erlang"
6661+ LangFSharp LanguageKind = "fsharp"
6662+ LangGitCommit LanguageKind = "git-commit"
6663+ LangGitRebase LanguageKind = "rebase"
6664+ LangGo LanguageKind = "go"
6665+ LangGroovy LanguageKind = "groovy"
6666+ LangHandlebars LanguageKind = "handlebars"
6667+ LangHaskell LanguageKind = "haskell"
6668+ LangHTML LanguageKind = "html"
6669+ LangIni LanguageKind = "ini"
6670+ LangJava LanguageKind = "java"
6671+ LangJavaScript LanguageKind = "javascript"
6672+ LangJavaScriptReact LanguageKind = "javascriptreact"
6673+ LangJSON LanguageKind = "json"
6674+ LangLaTeX LanguageKind = "latex"
6675+ LangLess LanguageKind = "less"
6676+ LangLua LanguageKind = "lua"
6677+ LangMakefile LanguageKind = "makefile"
6678+ LangMarkdown LanguageKind = "markdown"
6679+ LangObjectiveC LanguageKind = "objective-c"
6680+ LangObjectiveCPP LanguageKind = "objective-cpp"
6681+ // @since 3.18.0
6682+ // @proposed
6683+ LangPascal LanguageKind = "pascal"
6684+ LangPerl LanguageKind = "perl"
6685+ LangPerl6 LanguageKind = "perl6"
6686+ LangPHP LanguageKind = "php"
6687+ LangPowershell LanguageKind = "powershell"
6688+ LangPug LanguageKind = "jade"
6689+ LangPython LanguageKind = "python"
6690+ LangR LanguageKind = "r"
6691+ LangRazor LanguageKind = "razor"
6692+ LangRuby LanguageKind = "ruby"
6693+ LangRust LanguageKind = "rust"
6694+ LangSCSS LanguageKind = "scss"
6695+ LangSASS LanguageKind = "sass"
6696+ LangScala LanguageKind = "scala"
6697+ LangShaderLab LanguageKind = "shaderlab"
6698+ LangShellScript LanguageKind = "shellscript"
6699+ LangSQL LanguageKind = "sql"
6700+ LangSwift LanguageKind = "swift"
6701+ LangTypeScript LanguageKind = "typescript"
6702+ LangTypeScriptReact LanguageKind = "typescriptreact"
6703+ LangTeX LanguageKind = "tex"
6704+ LangVisualBasic LanguageKind = "vb"
6705+ LangXML LanguageKind = "xml"
6706+ LangXSL LanguageKind = "xsl"
6707+ LangYAML LanguageKind = "yaml"
6708+ // Describes the content type that a client supports in various
6709+ // result literals like `Hover`, `ParameterInfo` or `CompletionItem`.
6710+ //
6711+ // Please note that `MarkupKinds` must not start with a `$`. This kinds
6712+ // are reserved for internal usage.
6713+ // Plain text is supported as a content format
6714+ PlainText MarkupKind = "plaintext"
6715+ // Markdown is supported as a content format
6716+ Markdown MarkupKind = "markdown"
6717+ // The message type
6718+ // An error message.
6719+ Error MessageType = 1
6720+ // A warning message.
6721+ Warning MessageType = 2
6722+ // An information message.
6723+ Info MessageType = 3
6724+ // A log message.
6725+ Log MessageType = 4
6726+ // A debug message.
6727+ //
6728+ // @since 3.18.0
6729+ // @proposed
6730+ Debug MessageType = 5
6731+ // The moniker kind.
6732+ //
6733+ // @since 3.16.0
6734+ // The moniker represent a symbol that is imported into a project
6735+ Import MonikerKind = "import"
6736+ // The moniker represents a symbol that is exported from a project
6737+ Export MonikerKind = "export"
6738+ // The moniker represents a symbol that is local to a project (e.g. a local
6739+ // variable of a function, a class not visible outside the project, ...)
6740+ Local MonikerKind = "local"
6741+ // A notebook cell kind.
6742+ //
6743+ // @since 3.17.0
6744+ // A markup-cell is formatted source that is used for display.
6745+ Markup NotebookCellKind = 1
6746+ // A code-cell is source code.
6747+ Code NotebookCellKind = 2
6748+ // A set of predefined position encoding kinds.
6749+ //
6750+ // @since 3.17.0
6751+ // Character offsets count UTF-8 code units (e.g. bytes).
6752+ UTF8 PositionEncodingKind = "utf-8"
6753+ // Character offsets count UTF-16 code units.
6754+ //
6755+ // This is the default and must always be supported
6756+ // by servers
6757+ UTF16 PositionEncodingKind = "utf-16"
6758+ // Character offsets count UTF-32 code units.
6759+ //
6760+ // Implementation note: these are the same as Unicode codepoints,
6761+ // so this `PositionEncodingKind` may also be used for an
6762+ // encoding-agnostic representation of character offsets.
6763+ UTF32 PositionEncodingKind = "utf-32"
6764+ // The client's default behavior is to select the identifier
6765+ // according the to language's syntax rule.
6766+ Identifier PrepareSupportDefaultBehavior = 1
6767+ // Supports creating new files and folders.
6768+ Create ResourceOperationKind = "create"
6769+ // Supports renaming existing files and folders.
6770+ Rename ResourceOperationKind = "rename"
6771+ // Supports deleting existing files and folders.
6772+ Delete ResourceOperationKind = "delete"
6773+ // A set of predefined token modifiers. This set is not fixed
6774+ // an clients can specify additional token types via the
6775+ // corresponding client capabilities.
6776+ //
6777+ // @since 3.16.0
6778+ ModDeclaration SemanticTokenModifiers = "declaration"
6779+ ModDefinition SemanticTokenModifiers = "definition"
6780+ ModReadonly SemanticTokenModifiers = "readonly"
6781+ ModStatic SemanticTokenModifiers = "static"
6782+ ModDeprecated SemanticTokenModifiers = "deprecated"
6783+ ModAbstract SemanticTokenModifiers = "abstract"
6784+ ModAsync SemanticTokenModifiers = "async"
6785+ ModModification SemanticTokenModifiers = "modification"
6786+ ModDocumentation SemanticTokenModifiers = "documentation"
6787+ ModDefaultLibrary SemanticTokenModifiers = "defaultLibrary"
6788+ // A set of predefined token types. This set is not fixed
6789+ // an clients can specify additional token types via the
6790+ // corresponding client capabilities.
6791+ //
6792+ // @since 3.16.0
6793+ NamespaceType SemanticTokenTypes = "namespace"
6794+ // Represents a generic type. Acts as a fallback for types which can't be mapped to
6795+ // a specific type like class or enum.
6796+ TypeType SemanticTokenTypes = "type"
6797+ ClassType SemanticTokenTypes = "class"
6798+ EnumType SemanticTokenTypes = "enum"
6799+ InterfaceType SemanticTokenTypes = "interface"
6800+ StructType SemanticTokenTypes = "struct"
6801+ TypeParameterType SemanticTokenTypes = "typeParameter"
6802+ ParameterType SemanticTokenTypes = "parameter"
6803+ VariableType SemanticTokenTypes = "variable"
6804+ PropertyType SemanticTokenTypes = "property"
6805+ EnumMemberType SemanticTokenTypes = "enumMember"
6806+ EventType SemanticTokenTypes = "event"
6807+ FunctionType SemanticTokenTypes = "function"
6808+ MethodType SemanticTokenTypes = "method"
6809+ MacroType SemanticTokenTypes = "macro"
6810+ KeywordType SemanticTokenTypes = "keyword"
6811+ ModifierType SemanticTokenTypes = "modifier"
6812+ CommentType SemanticTokenTypes = "comment"
6813+ StringType SemanticTokenTypes = "string"
6814+ NumberType SemanticTokenTypes = "number"
6815+ RegexpType SemanticTokenTypes = "regexp"
6816+ OperatorType SemanticTokenTypes = "operator"
6817+ // @since 3.17.0
6818+ DecoratorType SemanticTokenTypes = "decorator"
6819+ // @since 3.18.0
6820+ LabelType SemanticTokenTypes = "label"
6821+ // How a signature help was triggered.
6822+ //
6823+ // @since 3.15.0
6824+ // Signature help was invoked manually by the user or by a command.
6825+ SigInvoked SignatureHelpTriggerKind = 1
6826+ // Signature help was triggered by a trigger character.
6827+ SigTriggerCharacter SignatureHelpTriggerKind = 2
6828+ // Signature help was triggered by the cursor moving or by the document content changing.
6829+ SigContentChange SignatureHelpTriggerKind = 3
6830+ // A symbol kind.
6831+ File SymbolKind = 1
6832+ Module SymbolKind = 2
6833+ Namespace SymbolKind = 3
6834+ Package SymbolKind = 4
6835+ Class SymbolKind = 5
6836+ Method SymbolKind = 6
6837+ Property SymbolKind = 7
6838+ Field SymbolKind = 8
6839+ Constructor SymbolKind = 9
6840+ Enum SymbolKind = 10
6841+ Interface SymbolKind = 11
6842+ Function SymbolKind = 12
6843+ Variable SymbolKind = 13
6844+ Constant SymbolKind = 14
6845+ String SymbolKind = 15
6846+ Number SymbolKind = 16
6847+ Boolean SymbolKind = 17
6848+ Array SymbolKind = 18
6849+ Object SymbolKind = 19
6850+ Key SymbolKind = 20
6851+ Null SymbolKind = 21
6852+ EnumMember SymbolKind = 22
6853+ Struct SymbolKind = 23
6854+ Event SymbolKind = 24
6855+ Operator SymbolKind = 25
6856+ TypeParameter SymbolKind = 26
6857+ // Symbol tags are extra annotations that tweak the rendering of a symbol.
6858+ //
6859+ // @since 3.16
6860+ // Render a symbol as obsolete, usually using a strike-out.
6861+ DeprecatedSymbol SymbolTag = 1
6862+ // Represents reasons why a text document is saved.
6863+ // Manually triggered, e.g. by the user pressing save, by starting debugging,
6864+ // or by an API call.
6865+ Manual TextDocumentSaveReason = 1
6866+ // Automatic after a delay.
6867+ AfterDelay TextDocumentSaveReason = 2
6868+ // When the editor lost focus.
6869+ FocusOut TextDocumentSaveReason = 3
6870+ // Defines how the host (editor) should sync
6871+ // document changes to the language server.
6872+ // Documents should not be synced at all.
6873+ None TextDocumentSyncKind = 0
6874+ // Documents are synced by always sending the full content
6875+ // of the document.
6876+ Full TextDocumentSyncKind = 1
6877+ // Documents are synced by sending the full content on open.
6878+ // After that only incremental updates to the document are
6879+ // send.
6880+ Incremental TextDocumentSyncKind = 2
6881+ Relative TokenFormat = "relative"
6882+ // Turn tracing off.
6883+ Off TraceValue = "off"
6884+ // Trace messages only.
6885+ Messages TraceValue = "messages"
6886+ // Verbose message tracing.
6887+ Verbose TraceValue = "verbose"
6888+ // Moniker uniqueness level to define scope of the moniker.
6889+ //
6890+ // @since 3.16.0
6891+ // The moniker is only unique inside a document
6892+ Document UniquenessLevel = "document"
6893+ // The moniker is unique inside a project for which a dump got created
6894+ Project UniquenessLevel = "project"
6895+ // The moniker is unique inside the group to which a project belongs
6896+ Group UniquenessLevel = "group"
6897+ // The moniker is unique inside the moniker scheme.
6898+ Scheme UniquenessLevel = "scheme"
6899+ // The moniker is globally unique
6900+ Global UniquenessLevel = "global"
6901+ // Interested in create events.
6902+ WatchCreate WatchKind = 1
6903+ // Interested in change events
6904+ WatchChange WatchKind = 2
6905+ // Interested in delete events
6906+ WatchDelete WatchKind = 4
6907+)