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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
|
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { Event } from 'vs/base/common/event';
import { URI } from 'vs/base/common/uri';
export interface IEditorModel {
/**
* Emitted when the model is about to be disposed.
*/
readonly onWillDispose: Event<void>;
/**
* Resolves the model.
*/
resolve(): Promise<void>;
/**
* Find out if the editor model was resolved or not.
*/
isResolved(): boolean;
/**
* Find out if this model has been disposed.
*/
isDisposed(): boolean;
/**
* Dispose associated resources
*/
dispose(): void;
}
export interface IBaseUntypedEditorInput {
/**
* Optional options to use when opening the input.
*/
options?: IEditorOptions;
/**
* Label to show for the input.
*/
readonly label?: string;
/**
* Description to show for the input.
*/
readonly description?: string;
}
export interface IBaseResourceEditorInput extends IBaseUntypedEditorInput {
/**
* Hint to indicate that this input should be treated as a
* untitled file.
*
* Without this hint, the editor service will make a guess by
* looking at the scheme of the resource(s).
*
* Use `forceUntitled: true` when you pass in a `resource` that
* does not use the `untitled` scheme. The `resource` will then
* be used as associated path when saving the untitled file.
*/
readonly forceUntitled?: boolean;
}
export interface IBaseTextResourceEditorInput extends IBaseResourceEditorInput {
/**
* Optional options to use when opening the text input.
*/
options?: ITextEditorOptions;
/**
* The contents of the text input if known. If provided,
* the input will not attempt to load the contents from
* disk and may appear dirty.
*/
contents?: string;
/**
* The encoding of the text input if known.
*/
encoding?: string;
/**
* The identifier of the language id of the text input
* if known to use when displaying the contents.
*/
languageId?: string;
}
export interface IResourceEditorInput extends IBaseResourceEditorInput {
/**
* The resource URI of the resource to open.
*/
readonly resource: URI;
}
export interface ITextResourceEditorInput extends IResourceEditorInput, IBaseTextResourceEditorInput {
/**
* Optional options to use when opening the text input.
*/
options?: ITextEditorOptions;
}
/**
* This identifier allows to uniquely identify an editor with a
* resource, type and editor identifier.
*/
export interface IResourceEditorInputIdentifier {
/**
* The type of the editor.
*/
readonly typeId: string;
/**
* The identifier of the editor if provided.
*/
readonly editorId: string | undefined;
/**
* The resource URI of the editor.
*/
readonly resource: URI;
}
export enum EditorActivation {
/**
* Activate the editor after it opened. This will automatically restore
* the editor if it is minimized.
*/
ACTIVATE = 1,
/**
* Only restore the editor if it is minimized but do not activate it.
*
* Note: will only work in combination with the `preserveFocus: true` option.
* Otherwise, if focus moves into the editor, it will activate and restore
* automatically.
*/
RESTORE,
/**
* Preserve the current active editor.
*
* Note: will only work in combination with the `preserveFocus: true` option.
* Otherwise, if focus moves into the editor, it will activate and restore
* automatically.
*/
PRESERVE
}
export enum EditorResolution {
/**
* Displays a picker and allows the user to decide which editor to use.
*/
PICK,
/**
* Disables editor resolving.
*/
DISABLED,
/**
* Only exclusive editors are considered.
*/
EXCLUSIVE_ONLY
}
export enum EditorOpenSource {
/**
* Default: the editor is opening via a programmatic call
* to the editor service API.
*/
API,
/**
* Indicates that a user action triggered the opening, e.g.
* via mouse or keyboard use.
*/
USER
}
export interface IEditorOptions {
/**
* Tells the editor to not receive keyboard focus when the editor is being opened.
*
* Will also not activate the group the editor opens in unless the group is already
* the active one. This behaviour can be overridden via the `activation` option.
*/
preserveFocus?: boolean;
/**
* This option is only relevant if an editor is opened into a group that is not active
* already and allows to control if the inactive group should become active, restored
* or preserved.
*
* By default, the editor group will become active unless `preserveFocus` or `inactive`
* is specified.
*/
activation?: EditorActivation;
/**
* Tells the editor to reload the editor input in the editor even if it is identical to the one
* already showing. By default, the editor will not reload the input if it is identical to the
* one showing.
*/
forceReload?: boolean;
/**
* Will reveal the editor if it is already opened and visible in any of the opened editor groups.
*
* Note that this option is just a hint that might be ignored if the user wants to open an editor explicitly
* to the side of another one or into a specific editor group.
*/
revealIfVisible?: boolean;
/**
* Will reveal the editor if it is already opened (even when not visible) in any of the opened editor groups.
*
* Note that this option is just a hint that might be ignored if the user wants to open an editor explicitly
* to the side of another one or into a specific editor group.
*/
revealIfOpened?: boolean;
/**
* An editor that is pinned remains in the editor stack even when another editor is being opened.
* An editor that is not pinned will always get replaced by another editor that is not pinned.
*/
pinned?: boolean;
/**
* An editor that is sticky moves to the beginning of the editors list within the group and will remain
* there unless explicitly closed. Operations such as "Close All" will not close sticky editors.
*/
sticky?: boolean;
/**
* The index in the document stack where to insert the editor into when opening.
*/
index?: number;
/**
* An active editor that is opened will show its contents directly. Set to true to open an editor
* in the background without loading its contents.
*
* Will also not activate the group the editor opens in unless the group is already
* the active one. This behaviour can be overridden via the `activation` option.
*/
inactive?: boolean;
/**
* Will not show an error in case opening the editor fails and thus allows to show a custom error
* message as needed. By default, an error will be presented as notification if opening was not possible.
*/
ignoreError?: boolean;
/**
* Allows to override the editor that should be used to display the input:
* - `undefined`: let the editor decide for itself
* - `string`: specific override by id
* - `EditorResolution`: specific override handling
*/
override?: string | EditorResolution;
/**
* A optional hint to signal in which context the editor opens.
*
* If configured to be `EditorOpenSource.USER`, this hint can be
* used in various places to control the experience. For example,
* if the editor to open fails with an error, a notification could
* inform about this in a modal dialog. If the editor opened through
* some background task, the notification would show in the background,
* not as a modal dialog.
*/
source?: EditorOpenSource;
/**
* An optional property to signal that certain view state should be
* applied when opening the editor.
*/
viewState?: object;
}
export interface ITextEditorSelection {
readonly startLineNumber: number;
readonly startColumn: number;
readonly endLineNumber?: number;
readonly endColumn?: number;
}
export const enum TextEditorSelectionRevealType {
/**
* Option to scroll vertically or horizontally as necessary and reveal a range centered vertically.
*/
Center = 0,
/**
* Option to scroll vertically or horizontally as necessary and reveal a range centered vertically only if it lies outside the viewport.
*/
CenterIfOutsideViewport = 1,
/**
* Option to scroll vertically or horizontally as necessary and reveal a range close to the top of the viewport, but not quite at the top.
*/
NearTop = 2,
/**
* Option to scroll vertically or horizontally as necessary and reveal a range close to the top of the viewport, but not quite at the top.
* Only if it lies outside the viewport
*/
NearTopIfOutsideViewport = 3,
}
export const enum TextEditorSelectionSource {
/**
* Programmatic source indicates a selection change that
* was not triggered by the user via keyboard or mouse
* but through text editor APIs.
*/
PROGRAMMATIC = 'api',
/**
* Navigation source indicates a selection change that
* was caused via some command or UI component such as
* an outline tree.
*/
NAVIGATION = 'code.navigation',
/**
* Jump source indicates a selection change that
* was caused from within the text editor to another
* location in the same or different text editor such
* as "Go to definition".
*/
JUMP = 'code.jump'
}
export interface ITextEditorOptions extends IEditorOptions {
/**
* Text editor selection.
*/
selection?: ITextEditorSelection;
/**
* Option to control the text editor selection reveal type.
* Defaults to TextEditorSelectionRevealType.Center
*/
selectionRevealType?: TextEditorSelectionRevealType;
/**
* Source of the call that caused the selection.
*/
selectionSource?: TextEditorSelectionSource | string;
}
|