-
Notifications
You must be signed in to change notification settings - Fork 29k
/
vscode.proposed.inlayHints.d.ts
155 lines (135 loc) · 4.94 KB
/
vscode.proposed.inlayHints.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
declare module 'vscode' {
// https://github.com/microsoft/vscode/issues/16221
// todo@API Split between Inlay- and OverlayHints (InlayHint are for a position, OverlayHints for a non-empty range)
// (done) add "mini-markdown" for links and styles
// (done) remove description
// (done) rename to InlayHint
// (done) add InlayHintKind with type, argument, etc
export namespace languages {
/**
* Register a inlay hints provider.
*
* Multiple providers can be registered for a language. In that case providers are asked in
* parallel and the results are merged. A failing provider (rejected promise or exception) will
* not cause a failure of the whole operation.
*
* @param selector A selector that defines the documents this provider is applicable to.
* @param provider An inlay hints provider.
* @return A {@link Disposable} that unregisters this provider when being disposed.
*/
export function registerInlayHintsProvider(selector: DocumentSelector, provider: InlayHintsProvider): Disposable;
}
/**
* Inlay hint kinds.
*/
export enum InlayHintKind {
Other = 0,
Type = 1,
Parameter = 2,
}
export class InlayHintLabelPart {
/**
* The value of this label part.
*/
label: string;
/**
* The tooltip text when you hover over this label part.
*/
tooltip?: string | MarkdownString | undefined;
/**
* An optional {@link Location source code location} that represents this label
* part.
*
* The editor will use this location for the hover and for code navigation features: This
* part will become a clickable link that resolves to the definition of the symbol at the
* given location (not neccessarily the location itself), it shows the hover that shows at
* the given location, and it shows a context menu with further code navigation commands.
*
* *Note* that this property can be set late during
* {@link InlayHintsProvider.resolveInlayHint resolving} of inlay hints.
*/
location?: Location | undefined;
/**
* An optional command for this label part.
*
* The editor renders parts with commands as clickable links. The command is added to the context menu
* when a label part defines {@link InlayHintLabelPart.location location} and {@link InlayHintLabelPart.command command} .
*
* *Note* that this property can be set late during
* {@link InlayHintsProvider.resolveInlayHint resolving} of inlay hints.
*/
command?: Command | undefined;
// todo@api
// context menu, contextMenuCommands
// secondaryCommands?: Command[];
constructor(label: string);
}
/**
* Inlay hint information.
*/
export class InlayHint {
/**
* The position of this hint.
*/
position: Position;
/**
*
*/
label: string | InlayHintLabelPart[];
/**
* The tooltip text when you hover over this item.
*/
tooltip?: string | MarkdownString | undefined;
/**
* The kind of this hint.
*/
kind?: InlayHintKind;
/**
* Render padding before the hint.
*/
paddingLeft?: boolean;
/**
* Render padding after the hint.
*/
paddingRight?: boolean;
// emphemeral overlay mode
// overlayRange?: Range;
// todo@API make range first argument
constructor(label: string | InlayHintLabelPart[], position: Position, kind?: InlayHintKind);
}
/**
* The inlay hints provider interface defines the contract between extensions and
* the inlay hints feature.
*/
export interface InlayHintsProvider<T extends InlayHint = InlayHint> {
/**
* An optional event to signal that inlay hints from this provider have changed.
*/
onDidChangeInlayHints?: Event<void>;
/**
* Provide inlay hints for the given range and document.
*
* *Note* that inlay hints that are not {@link Range.contains contained} by the range are ignored.
*
* @param document The document in which the command was invoked.
* @param range The range for which inlay hints should be computed.
* @param token A cancellation token.
* @return An array of inlay hints or a thenable that resolves to such.
*/
provideInlayHints(document: TextDocument, range: Range, token: CancellationToken): ProviderResult<T[]>;
/**
* Given an inlay hint fill in {@link InlayHint.tooltip tooltip} or complete label {@link InlayHintLabelPart parts}.
*
* The editor will at most resolve an inlay hint once.
*
* @param hint An inlay hint.
* @param token A cancellation token.
* @return The resolved inlay hint or a thenable that resolves to such. It is OK to return the given `item`. When no result is returned, the given `item` will be used.
*/
resolveInlayHint?(hint: T, token: CancellationToken): ProviderResult<T>;
}
}