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
7package 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
13import "encoding/json"
14
15// created for And
16type 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
26type 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
35type 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
54type 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
70type 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
89type 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
101type 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
114type 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
126type 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
152type 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
161type 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
175type 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
186type 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
196type 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
203type 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
213type 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
228type ChangeAnnotationIdentifier = string // (alias)
229// @since 3.18.0
230//
231// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#changeAnnotationsSupportOptions
232type 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
242type 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
264type 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
275type 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
284type 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
292type 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
300type 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
307type 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
358type 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
373type 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
381type 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
389type 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
400type 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
414type 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
424type 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
432type 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
441type 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
453type 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
463type 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
486type 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
497type 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
512type 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
521type 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
532type 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
581type 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
629type 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
652type 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
660type 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
668type 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
684type 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
719type 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
733type CodeActionRegistrationOptions struct {
734 TextDocumentRegistrationOptions
735 CodeActionOptions
736}
737
738// The reason why code actions were requested.
739//
740// @since 3.17.0
741type 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
748type 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
760type 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
773type 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
786type 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
795type 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
805type 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
813type 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
827type 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
841type 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
849type 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
866type 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
883type 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
901type 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
927type 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
939type 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
1074type 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.
1098type 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
1105type 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
1118type CompletionItemTag uint32
1119
1120// @since 3.18.0
1121//
1122// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionItemTagOptions
1123type 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
1132type 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
1162type 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
1177type 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
1210type 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
1222type CompletionRegistrationOptions struct {
1223 TextDocumentRegistrationOptions
1224 CompletionOptions
1225}
1226
1227// How a completion was triggered
1228type CompletionTriggerKind uint32
1229
1230// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#configurationItem
1231type 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
1241type 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
1248type 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
1261type 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
1274type 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
1282type 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
1286type 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
1304type DeclarationLink = LocationLink // (alias)
1305// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#declarationOptions
1306type DeclarationOptions struct {
1307 WorkDoneProgressOptions
1308}
1309
1310// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#declarationParams
1311type 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
1318type 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
1332type 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
1336type 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
1351type 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
1355type 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
1362type 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
1371type 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
1379type 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
1392type 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
1405type 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
1414type 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
1453type 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
1468type 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
1487type 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
1498type 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
1510type DiagnosticServerCancellationData struct {
1511 RetriggerRequest bool `json:"retriggerRequest"`
1512}
1513
1514// The diagnostic's severity.
1515type DiagnosticSeverity uint32
1516
1517// The diagnostic tags.
1518//
1519// @since 3.15.0
1520type 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
1527type 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
1541type 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
1562type 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
1570type 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
1576type 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
1585type 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
1611type 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
1632type 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
1647type 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
1655type 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
1663type 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
1673type 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
1684type 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
1694type 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
1705type 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
1715type 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
1723type 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
1732type 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
1740type 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
1747type 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
1755type 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
1766type 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
1786type DocumentDiagnosticReport = Or_DocumentDiagnosticReport // (alias)
1787// The document diagnostic report kinds.
1788//
1789// @since 3.17.0
1790type 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
1797type 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
1807type 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
1811type 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
1819type 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
1826type 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
1837type 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
1847type 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
1857type DocumentHighlightClientCapabilities struct {
1858 // Whether document highlight supports dynamic registration.
1859 DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
1860}
1861
1862// A document highlight kind.
1863type 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
1868type 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
1875type 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
1884type 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
1893type 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
1914type 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
1926type 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
1935type 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
1945type 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
1953type 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
1961type 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
1971type 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
1990type 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
1998type 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
2011type 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
2023type 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
2036type 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
2047type 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
2064type 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
2071type 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
2101type 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
2125type 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
2137type 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
2147type 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
2157type EditRangeWithInsertReplace struct {
2158 Insert Range `json:"insert"`
2159 Replace Range `json:"replace"`
2160}
2161
2162// Predefined error codes.
2163type 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
2168type 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
2176type 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
2185type 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
2196type ExecuteCommandRegistrationOptions struct {
2197 ExecuteCommandOptions
2198}
2199
2200// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#executionSummary
2201type 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}
2210type FailureHandlingKind string
2211
2212// The file event type
2213type 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
2220type 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
2230type 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
2238type 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
2253type 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
2276type 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
2288type 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
2309type 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
2331type 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
2338type 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
2348type 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
2358type 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
2366type 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
2381type 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
2405type 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.
2430type FoldingRangeKind string
2431
2432// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#foldingRangeOptions
2433type 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
2440type 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
2448type 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
2460type 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
2477type 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
2501type 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
2517type 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
2559type 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
2563type 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
2572type 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
2583type 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
2590type 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
2598type 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
2606type 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
2618type ImplementationOptions struct {
2619 WorkDoneProgressOptions
2620}
2621
2622// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#implementationParams
2623type 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
2630type 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
2640type 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
2649type 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
2657type 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
2667type 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
2675type 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
2719type 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
2730type 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
2738type 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
2769type 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
2781type 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
2794type 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
2805type 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
2822type 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
2833type 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
2846type 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
2863type 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
2874type 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
2884type 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
2898type 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
2908type 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
2921type 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
2927type 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
2935type 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
2950type 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
2963type 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
2972type 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
2988type 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
2999type 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
3013type 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
3028type 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
3044type 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.
3055type InsertTextFormat uint32
3056
3057// How whitespace and indentation is handled during completion
3058// item insertion.
3059//
3060// @since 3.16.0
3061type InsertTextMode uint32
3062type 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
3068type LSPArray = []interface{} // (alias)
3069type 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
3075type LSPObject = map[string]LSPAny // (alias)
3076// Predefined Language kinds
3077// @since 3.18.0
3078// @proposed
3079type 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
3086type 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
3094type LinkedEditingRangeOptions struct {
3095 WorkDoneProgressOptions
3096}
3097
3098// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#linkedEditingRangeParams
3099type LinkedEditingRangeParams struct {
3100 TextDocumentPositionParams
3101 WorkDoneProgressParams
3102}
3103
3104// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#linkedEditingRangeRegistrationOptions
3105type 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
3116type 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)
3127type Lit_ClientSemanticTokensRequestOptions_range_Item1 struct {
3128}
3129
3130// created for Literal (Lit_SemanticTokensOptions_range_Item1)
3131type 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
3138type 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
3147type 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
3169type 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
3176type 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
3184type 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
3194type 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
3220type 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
3225type 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
3256type 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.
3268type MarkupKind string
3269
3270// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#messageActionItem
3271type MessageActionItem struct {
3272 // A short title like 'Retry', 'Open Log' etc.
3273 Title string `json:"title"`
3274}
3275
3276// The message type
3277type 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
3284type 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
3301type 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
3311type MonikerKind string
3312
3313// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#monikerOptions
3314type MonikerOptions struct {
3315 WorkDoneProgressOptions
3316}
3317
3318// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#monikerParams
3319type 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
3326type 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
3340type 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
3361type 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
3373type NotebookCellKind uint32
3374
3375// @since 3.18.0
3376//
3377// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookCellLanguage
3378type 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
3388type 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
3406type 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
3428type 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
3442type 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
3458type 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
3468type 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
3482type 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
3496type 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
3502type 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
3516type 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
3530type 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
3542type 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
3554type 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
3568type 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
3578type 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
3603type 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
3616type 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
3624type 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]
3635type Or_CancelParams_id struct {
3636 Value interface{} `json:"value"`
3637}
3638
3639// created for Or [ClientSemanticTokensRequestFullDelta bool]
3640type Or_ClientSemanticTokensRequestOptions_full struct {
3641 Value interface{} `json:"value"`
3642}
3643
3644// created for Or [Lit_ClientSemanticTokensRequestOptions_range_Item1 bool]
3645type Or_ClientSemanticTokensRequestOptions_range struct {
3646 Value interface{} `json:"value"`
3647}
3648
3649// created for Or [EditRangeWithInsertReplace Range]
3650type Or_CompletionItemDefaults_editRange struct {
3651 Value interface{} `json:"value"`
3652}
3653
3654// created for Or [MarkupContent string]
3655type Or_CompletionItem_documentation struct {
3656 Value interface{} `json:"value"`
3657}
3658
3659// created for Or [InsertReplaceEdit TextEdit]
3660type Or_CompletionItem_textEdit struct {
3661 Value interface{} `json:"value"`
3662}
3663
3664// created for Or [Location []Location]
3665type Or_Declaration struct {
3666 Value interface{} `json:"value"`
3667}
3668
3669// created for Or [Location []Location]
3670type Or_Definition struct {
3671 Value interface{} `json:"value"`
3672}
3673
3674// created for Or [int32 string]
3675type Or_Diagnostic_code struct {
3676 Value interface{} `json:"value"`
3677}
3678
3679// created for Or [[]string string]
3680type Or_DidChangeConfigurationRegistrationOptions_section struct {
3681 Value interface{} `json:"value"`
3682}
3683
3684// created for Or [RelatedFullDocumentDiagnosticReport RelatedUnchangedDocumentDiagnosticReport]
3685type Or_DocumentDiagnosticReport struct {
3686 Value interface{} `json:"value"`
3687}
3688
3689// created for Or [FullDocumentDiagnosticReport UnchangedDocumentDiagnosticReport]
3690type Or_DocumentDiagnosticReportPartialResult_relatedDocuments_Value struct {
3691 Value interface{} `json:"value"`
3692}
3693
3694// created for Or [NotebookCellTextDocumentFilter TextDocumentFilter]
3695type Or_DocumentFilter struct {
3696 Value interface{} `json:"value"`
3697}
3698
3699// created for Or [Pattern RelativePattern]
3700type Or_GlobPattern struct {
3701 Value interface{} `json:"value"`
3702}
3703
3704// created for Or [MarkedString MarkupContent []MarkedString]
3705type Or_Hover_contents struct {
3706 Value interface{} `json:"value"`
3707}
3708
3709// created for Or [MarkupContent string]
3710type Or_InlayHintLabelPart_tooltip struct {
3711 Value interface{} `json:"value"`
3712}
3713
3714// created for Or [[]InlayHintLabelPart string]
3715type Or_InlayHint_label struct {
3716 Value interface{} `json:"value"`
3717}
3718
3719// created for Or [MarkupContent string]
3720type Or_InlayHint_tooltip struct {
3721 Value interface{} `json:"value"`
3722}
3723
3724// created for Or [StringValue string]
3725type Or_InlineCompletionItem_insertText struct {
3726 Value interface{} `json:"value"`
3727}
3728
3729// created for Or [InlineValueEvaluatableExpression InlineValueText InlineValueVariableLookup]
3730type Or_InlineValue struct {
3731 Value interface{} `json:"value"`
3732}
3733
3734// created for Or [LSPArray LSPObject bool float64 int32 string uint32]
3735type Or_LSPAny struct {
3736 Value interface{} `json:"value"`
3737}
3738
3739// created for Or [MarkedStringWithLanguage string]
3740type Or_MarkedString struct {
3741 Value interface{} `json:"value"`
3742}
3743
3744// created for Or [NotebookDocumentFilter string]
3745type Or_NotebookCellTextDocumentFilter_notebook struct {
3746 Value interface{} `json:"value"`
3747}
3748
3749// created for Or [NotebookDocumentFilterNotebookType NotebookDocumentFilterPattern NotebookDocumentFilterScheme]
3750type Or_NotebookDocumentFilter struct {
3751 Value interface{} `json:"value"`
3752}
3753
3754// created for Or [NotebookDocumentFilter string]
3755type Or_NotebookDocumentFilterWithCells_notebook struct {
3756 Value interface{} `json:"value"`
3757}
3758
3759// created for Or [NotebookDocumentFilter string]
3760type Or_NotebookDocumentFilterWithNotebook_notebook struct {
3761 Value interface{} `json:"value"`
3762}
3763
3764// created for Or [NotebookDocumentFilterWithCells NotebookDocumentFilterWithNotebook]
3765type Or_NotebookDocumentSyncOptions_notebookSelector_Elem struct {
3766 Value interface{} `json:"value"`
3767}
3768
3769// created for Or [MarkupContent string]
3770type Or_ParameterInformation_documentation struct {
3771 Value interface{} `json:"value"`
3772}
3773
3774// created for Or [Tuple_ParameterInformation_label_Item1 string]
3775type Or_ParameterInformation_label struct {
3776 Value interface{} `json:"value"`
3777}
3778
3779// created for Or [PrepareRenameDefaultBehavior PrepareRenamePlaceholder Range]
3780type Or_PrepareRenameResult struct {
3781 Value interface{} `json:"value"`
3782}
3783
3784// created for Or [int32 string]
3785type Or_ProgressToken struct {
3786 Value interface{} `json:"value"`
3787}
3788
3789// created for Or [FullDocumentDiagnosticReport UnchangedDocumentDiagnosticReport]
3790type Or_RelatedFullDocumentDiagnosticReport_relatedDocuments_Value struct {
3791 Value interface{} `json:"value"`
3792}
3793
3794// created for Or [FullDocumentDiagnosticReport UnchangedDocumentDiagnosticReport]
3795type Or_RelatedUnchangedDocumentDiagnosticReport_relatedDocuments_Value struct {
3796 Value interface{} `json:"value"`
3797}
3798
3799// created for Or [URI WorkspaceFolder]
3800type Or_RelativePattern_baseUri struct {
3801 Value interface{} `json:"value"`
3802}
3803
3804// created for Or [CodeAction Command]
3805type Or_Result_textDocument_codeAction_Item0_Elem struct {
3806 Value interface{} `json:"value"`
3807}
3808
3809// created for Or [CompletionList []CompletionItem]
3810type Or_Result_textDocument_completion struct {
3811 Value interface{} `json:"value"`
3812}
3813
3814// created for Or [Declaration []DeclarationLink]
3815type Or_Result_textDocument_declaration struct {
3816 Value interface{} `json:"value"`
3817}
3818
3819// created for Or [Definition []DefinitionLink]
3820type Or_Result_textDocument_definition struct {
3821 Value interface{} `json:"value"`
3822}
3823
3824// created for Or [[]DocumentSymbol []SymbolInformation]
3825type Or_Result_textDocument_documentSymbol struct {
3826 Value interface{} `json:"value"`
3827}
3828
3829// created for Or [Definition []DefinitionLink]
3830type Or_Result_textDocument_implementation struct {
3831 Value interface{} `json:"value"`
3832}
3833
3834// created for Or [InlineCompletionList []InlineCompletionItem]
3835type Or_Result_textDocument_inlineCompletion struct {
3836 Value interface{} `json:"value"`
3837}
3838
3839// created for Or [SemanticTokens SemanticTokensDelta]
3840type Or_Result_textDocument_semanticTokens_full_delta struct {
3841 Value interface{} `json:"value"`
3842}
3843
3844// created for Or [Definition []DefinitionLink]
3845type Or_Result_textDocument_typeDefinition struct {
3846 Value interface{} `json:"value"`
3847}
3848
3849// created for Or [[]SymbolInformation []WorkspaceSymbol]
3850type Or_Result_workspace_symbol struct {
3851 Value interface{} `json:"value"`
3852}
3853
3854// created for Or [SemanticTokensFullDelta bool]
3855type Or_SemanticTokensOptions_full struct {
3856 Value interface{} `json:"value"`
3857}
3858
3859// created for Or [Lit_SemanticTokensOptions_range_Item1 bool]
3860type Or_SemanticTokensOptions_range struct {
3861 Value interface{} `json:"value"`
3862}
3863
3864// created for Or [CallHierarchyOptions CallHierarchyRegistrationOptions bool]
3865type Or_ServerCapabilities_callHierarchyProvider struct {
3866 Value interface{} `json:"value"`
3867}
3868
3869// created for Or [CodeActionOptions bool]
3870type Or_ServerCapabilities_codeActionProvider struct {
3871 Value interface{} `json:"value"`
3872}
3873
3874// created for Or [DocumentColorOptions DocumentColorRegistrationOptions bool]
3875type Or_ServerCapabilities_colorProvider struct {
3876 Value interface{} `json:"value"`
3877}
3878
3879// created for Or [DeclarationOptions DeclarationRegistrationOptions bool]
3880type Or_ServerCapabilities_declarationProvider struct {
3881 Value interface{} `json:"value"`
3882}
3883
3884// created for Or [DefinitionOptions bool]
3885type Or_ServerCapabilities_definitionProvider struct {
3886 Value interface{} `json:"value"`
3887}
3888
3889// created for Or [DiagnosticOptions DiagnosticRegistrationOptions]
3890type Or_ServerCapabilities_diagnosticProvider struct {
3891 Value interface{} `json:"value"`
3892}
3893
3894// created for Or [DocumentFormattingOptions bool]
3895type Or_ServerCapabilities_documentFormattingProvider struct {
3896 Value interface{} `json:"value"`
3897}
3898
3899// created for Or [DocumentHighlightOptions bool]
3900type Or_ServerCapabilities_documentHighlightProvider struct {
3901 Value interface{} `json:"value"`
3902}
3903
3904// created for Or [DocumentRangeFormattingOptions bool]
3905type Or_ServerCapabilities_documentRangeFormattingProvider struct {
3906 Value interface{} `json:"value"`
3907}
3908
3909// created for Or [DocumentSymbolOptions bool]
3910type Or_ServerCapabilities_documentSymbolProvider struct {
3911 Value interface{} `json:"value"`
3912}
3913
3914// created for Or [FoldingRangeOptions FoldingRangeRegistrationOptions bool]
3915type Or_ServerCapabilities_foldingRangeProvider struct {
3916 Value interface{} `json:"value"`
3917}
3918
3919// created for Or [HoverOptions bool]
3920type Or_ServerCapabilities_hoverProvider struct {
3921 Value interface{} `json:"value"`
3922}
3923
3924// created for Or [ImplementationOptions ImplementationRegistrationOptions bool]
3925type Or_ServerCapabilities_implementationProvider struct {
3926 Value interface{} `json:"value"`
3927}
3928
3929// created for Or [InlayHintOptions InlayHintRegistrationOptions bool]
3930type Or_ServerCapabilities_inlayHintProvider struct {
3931 Value interface{} `json:"value"`
3932}
3933
3934// created for Or [InlineCompletionOptions bool]
3935type Or_ServerCapabilities_inlineCompletionProvider struct {
3936 Value interface{} `json:"value"`
3937}
3938
3939// created for Or [InlineValueOptions InlineValueRegistrationOptions bool]
3940type Or_ServerCapabilities_inlineValueProvider struct {
3941 Value interface{} `json:"value"`
3942}
3943
3944// created for Or [LinkedEditingRangeOptions LinkedEditingRangeRegistrationOptions bool]
3945type Or_ServerCapabilities_linkedEditingRangeProvider struct {
3946 Value interface{} `json:"value"`
3947}
3948
3949// created for Or [MonikerOptions MonikerRegistrationOptions bool]
3950type Or_ServerCapabilities_monikerProvider struct {
3951 Value interface{} `json:"value"`
3952}
3953
3954// created for Or [NotebookDocumentSyncOptions NotebookDocumentSyncRegistrationOptions]
3955type Or_ServerCapabilities_notebookDocumentSync struct {
3956 Value interface{} `json:"value"`
3957}
3958
3959// created for Or [ReferenceOptions bool]
3960type Or_ServerCapabilities_referencesProvider struct {
3961 Value interface{} `json:"value"`
3962}
3963
3964// created for Or [RenameOptions bool]
3965type Or_ServerCapabilities_renameProvider struct {
3966 Value interface{} `json:"value"`
3967}
3968
3969// created for Or [SelectionRangeOptions SelectionRangeRegistrationOptions bool]
3970type Or_ServerCapabilities_selectionRangeProvider struct {
3971 Value interface{} `json:"value"`
3972}
3973
3974// created for Or [SemanticTokensOptions SemanticTokensRegistrationOptions]
3975type Or_ServerCapabilities_semanticTokensProvider struct {
3976 Value interface{} `json:"value"`
3977}
3978
3979// created for Or [TextDocumentSyncKind TextDocumentSyncOptions]
3980type Or_ServerCapabilities_textDocumentSync struct {
3981 Value interface{} `json:"value"`
3982}
3983
3984// created for Or [TypeDefinitionOptions TypeDefinitionRegistrationOptions bool]
3985type Or_ServerCapabilities_typeDefinitionProvider struct {
3986 Value interface{} `json:"value"`
3987}
3988
3989// created for Or [TypeHierarchyOptions TypeHierarchyRegistrationOptions bool]
3990type Or_ServerCapabilities_typeHierarchyProvider struct {
3991 Value interface{} `json:"value"`
3992}
3993
3994// created for Or [WorkspaceSymbolOptions bool]
3995type Or_ServerCapabilities_workspaceSymbolProvider struct {
3996 Value interface{} `json:"value"`
3997}
3998
3999// created for Or [MarkupContent string]
4000type Or_SignatureInformation_documentation struct {
4001 Value interface{} `json:"value"`
4002}
4003
4004// created for Or [TextDocumentContentChangePartial TextDocumentContentChangeWholeDocument]
4005type Or_TextDocumentContentChangeEvent struct {
4006 Value interface{} `json:"value"`
4007}
4008
4009// created for Or [AnnotatedTextEdit SnippetTextEdit TextEdit]
4010type Or_TextDocumentEdit_edits_Elem struct {
4011 Value interface{} `json:"value"`
4012}
4013
4014// created for Or [TextDocumentFilterLanguage TextDocumentFilterPattern TextDocumentFilterScheme]
4015type Or_TextDocumentFilter struct {
4016 Value interface{} `json:"value"`
4017}
4018
4019// created for Or [SaveOptions bool]
4020type Or_TextDocumentSyncOptions_save struct {
4021 Value interface{} `json:"value"`
4022}
4023
4024// created for Or [WorkspaceFullDocumentDiagnosticReport WorkspaceUnchangedDocumentDiagnosticReport]
4025type Or_WorkspaceDocumentDiagnosticReport struct {
4026 Value interface{} `json:"value"`
4027}
4028
4029// created for Or [CreateFile DeleteFile RenameFile TextDocumentEdit]
4030type Or_WorkspaceEdit_documentChanges_Elem struct {
4031 Value interface{} `json:"value"`
4032}
4033
4034// created for Or [bool string]
4035type Or_WorkspaceFoldersServerCapabilities_changeNotifications struct {
4036 Value interface{} `json:"value"`
4037}
4038
4039// created for Or [TextDocumentContentOptions TextDocumentContentRegistrationOptions]
4040type Or_WorkspaceOptions_textDocumentContent struct {
4041 Value interface{} `json:"value"`
4042}
4043
4044// created for Or [Location LocationUriOnly]
4045type 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
4052type ParamConfiguration struct {
4053 Items []ConfigurationItem `json:"items"`
4054}
4055
4056// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#initializeParams
4057type 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
4066type 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
4086type 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
4104type 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
4134type 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
4153type PositionEncodingKind string
4154
4155// @since 3.18.0
4156//
4157// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#prepareRenameDefaultBehavior
4158type PrepareRenameDefaultBehavior struct {
4159 DefaultBehavior bool `json:"defaultBehavior"`
4160}
4161
4162// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#prepareRenameParams
4163type 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
4171type 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
4177type PrepareRenameResult = Or_PrepareRenameResult // (alias)
4178type 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
4185type 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
4198type 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
4207type 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
4215type 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
4219type 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
4231type 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
4257type 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
4267type 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
4276type 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
4284type 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
4291type 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
4301type 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
4309type 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
4320type RegistrationParams struct {
4321 Registrations []Registration `json:"registrations"`
4322}
4323
4324// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#regularExpressionEngineKind
4325type 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
4331type 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
4343type 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
4360type 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
4379type 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
4388type 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
4416type 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
4431type 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
4444type 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
4453type 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
4464type 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
4479type 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
4487type 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}
4495type ResourceOperationKind string
4496
4497// Save options.
4498//
4499// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#saveOptions
4500type 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
4511type 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
4522type 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
4530type 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
4538type 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
4545type 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
4555type 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
4566type 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
4573type SemanticTokenTypes string
4574
4575// @since 3.16.0
4576//
4577// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokens
4578type 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
4591type 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
4638type 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
4647type 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
4660type 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
4667type 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
4681type 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
4689type 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
4699type 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
4713type 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
4723type 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
4730type 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
4742type 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
4751type 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
4766type 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
4879type 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
4894type 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
4902type 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
4911type 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
4922type 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
4946type 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
4954type 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
4964type 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
4970type 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
4984type 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
5019type 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
5039type 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
5061type 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
5077type 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
5090type SignatureHelpRegistrationOptions struct {
5091 TextDocumentRegistrationOptions
5092 SignatureHelpOptions
5093}
5094
5095// How a signature help was triggered.
5096//
5097// @since 3.15.0
5098type 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
5105type 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
5134type 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
5146type 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
5159type 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
5177type 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
5188type 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.
5220type SymbolKind uint32
5221
5222// Symbol tags are extra annotations that tweak the rendering of a symbol.
5223//
5224// @since 3.16
5225type 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
5230type 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
5239type 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
5340type 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
5344type 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
5358type 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
5369type 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
5380type 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
5391type 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
5402type 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
5413type 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
5424type 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
5456type 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
5462type 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
5478type 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
5494type 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
5508type 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
5517type 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
5533type 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
5543type 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.
5550type TextDocumentSaveReason uint32
5551
5552// Save registration options.
5553//
5554// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentSaveRegistrationOptions
5555type TextDocumentSaveRegistrationOptions struct {
5556 TextDocumentRegistrationOptions
5557 SaveOptions
5558}
5559
5560// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentSyncClientCapabilities
5561type 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.
5576type TextDocumentSyncKind uint32
5577
5578// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentSyncOptions
5579type 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
5600type 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}
5608type TokenFormat string
5609type TraceValue string
5610
5611// created for Tuple
5612type 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
5620type 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
5632type TypeDefinitionOptions struct {
5633 WorkDoneProgressOptions
5634}
5635
5636// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeDefinitionParams
5637type 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
5644type 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
5653type 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
5663type 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
5693type 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
5702type 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
5712type 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
5723type 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
5734type 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
5746type 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
5760type 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
5765type 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
5774type 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
5783type 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
5793type VersionedTextDocumentIdentifier struct {
5794 // The version number of this document.
5795 Version int32 `json:"version"`
5796 TextDocumentIdentifier
5797}
5798type 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
5800type 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
5808type 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
5830type 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
5857type 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
5863type 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
5869type 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
5877type 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
5882type 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
5888type 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
5913type 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
5982type 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
5997type 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
6006type 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
6015type 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
6030type 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
6054type 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
6098type 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
6106type 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
6117type 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
6125type 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
6137type 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
6155type 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
6169type 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
6192type 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
6208type 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
6229type 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
6241type 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
6258type 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
6267type 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
6279type 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
6322type _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
6362const (
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)