Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/editor/standalone/browser/standaloneEditor.ts
5240 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { mainWindow } from '../../../base/browser/window.js';
7
import { Disposable, DisposableStore, IDisposable } from '../../../base/common/lifecycle.js';
8
import { splitLines } from '../../../base/common/strings.js';
9
import { URI } from '../../../base/common/uri.js';
10
import './standalone-tokens.css';
11
import { FontMeasurements } from '../../browser/config/fontMeasurements.js';
12
import { ICodeEditor } from '../../browser/editorBrowser.js';
13
import { EditorCommand, ServicesAccessor } from '../../browser/editorExtensions.js';
14
import { ICodeEditorService } from '../../browser/services/codeEditorService.js';
15
import { IInternalWebWorkerOptions, MonacoWebWorker, createWebWorker as actualCreateWebWorker } from './standaloneWebWorker.js';
16
import { ApplyUpdateResult, ConfigurationChangedEvent, EditorOptions } from '../../common/config/editorOptions.js';
17
import { EditorZoom } from '../../common/config/editorZoom.js';
18
import { BareFontInfo, FontInfo } from '../../common/config/fontInfo.js';
19
import { IPosition } from '../../common/core/position.js';
20
import { IRange } from '../../common/core/range.js';
21
import { EditorType, IDiffEditor } from '../../common/editorCommon.js';
22
import * as languages from '../../common/languages.js';
23
import { ILanguageService } from '../../common/languages/language.js';
24
import { PLAINTEXT_LANGUAGE_ID } from '../../common/languages/modesRegistry.js';
25
import { NullState, nullTokenize } from '../../common/languages/nullTokenize.js';
26
import { FindMatch, ITextModel, TextModelResolvedOptions } from '../../common/model.js';
27
import { IModelService } from '../../common/services/model.js';
28
import * as standaloneEnums from '../../common/standalone/standaloneEnums.js';
29
import { Colorizer, IColorizerElementOptions, IColorizerOptions } from './colorizer.js';
30
import { IActionDescriptor, IStandaloneCodeEditor, IStandaloneDiffEditor, IStandaloneDiffEditorConstructionOptions, IStandaloneEditorConstructionOptions, StandaloneDiffEditor2, StandaloneEditor, createTextModel } from './standaloneCodeEditor.js';
31
import { IEditorOverrideServices, StandaloneKeybindingService, StandaloneServices } from './standaloneServices.js';
32
import { StandaloneThemeService } from './standaloneThemeService.js';
33
import { IStandaloneThemeData, IStandaloneThemeService } from '../common/standaloneTheme.js';
34
import { IMenuItem, MenuId, MenuRegistry } from '../../../platform/actions/common/actions.js';
35
import { CommandsRegistry, ICommandHandler } from '../../../platform/commands/common/commands.js';
36
import { ContextKeyExpr } from '../../../platform/contextkey/common/contextkey.js';
37
import { ITextResourceEditorInput } from '../../../platform/editor/common/editor.js';
38
import { IKeybindingService } from '../../../platform/keybinding/common/keybinding.js';
39
import { IMarker, IMarkerData, IMarkerService } from '../../../platform/markers/common/markers.js';
40
import { IOpenerService } from '../../../platform/opener/common/opener.js';
41
import { MultiDiffEditorWidget } from '../../browser/widget/multiDiffEditor/multiDiffEditorWidget.js';
42
import { IWebWorkerService } from '../../../platform/webWorker/browser/webWorkerService.js';
43
44
/**
45
* Create a new editor under `domElement`.
46
* `domElement` should be empty (not contain other dom nodes).
47
* The editor will read the size of `domElement`.
48
*/
49
export function create(domElement: HTMLElement, options?: IStandaloneEditorConstructionOptions, override?: IEditorOverrideServices): IStandaloneCodeEditor {
50
const instantiationService = StandaloneServices.initialize(override || {});
51
return instantiationService.createInstance(StandaloneEditor, domElement, options);
52
}
53
54
/**
55
* Emitted when an editor is created.
56
* Creating a diff editor might cause this listener to be invoked with the two editors.
57
* @event
58
*/
59
export function onDidCreateEditor(listener: (codeEditor: ICodeEditor) => void): IDisposable {
60
const codeEditorService = StandaloneServices.get(ICodeEditorService);
61
return codeEditorService.onCodeEditorAdd((editor) => {
62
listener(editor);
63
});
64
}
65
66
/**
67
* Emitted when an diff editor is created.
68
* @event
69
*/
70
export function onDidCreateDiffEditor(listener: (diffEditor: IDiffEditor) => void): IDisposable {
71
const codeEditorService = StandaloneServices.get(ICodeEditorService);
72
return codeEditorService.onDiffEditorAdd((editor) => {
73
listener(<IDiffEditor>editor);
74
});
75
}
76
77
/**
78
* Get all the created editors.
79
*/
80
export function getEditors(): readonly ICodeEditor[] {
81
const codeEditorService = StandaloneServices.get(ICodeEditorService);
82
return codeEditorService.listCodeEditors();
83
}
84
85
/**
86
* Get all the created diff editors.
87
*/
88
export function getDiffEditors(): readonly IDiffEditor[] {
89
const codeEditorService = StandaloneServices.get(ICodeEditorService);
90
return codeEditorService.listDiffEditors();
91
}
92
93
/**
94
* Create a new diff editor under `domElement`.
95
* `domElement` should be empty (not contain other dom nodes).
96
* The editor will read the size of `domElement`.
97
*/
98
export function createDiffEditor(domElement: HTMLElement, options?: IStandaloneDiffEditorConstructionOptions, override?: IEditorOverrideServices): IStandaloneDiffEditor {
99
const instantiationService = StandaloneServices.initialize(override || {});
100
return instantiationService.createInstance(StandaloneDiffEditor2, domElement, options);
101
}
102
103
export function createMultiFileDiffEditor(domElement: HTMLElement, override?: IEditorOverrideServices) {
104
const instantiationService = StandaloneServices.initialize(override || {});
105
return new MultiDiffEditorWidget(domElement, {}, instantiationService);
106
}
107
108
/**
109
* Description of a command contribution
110
*/
111
export interface ICommandDescriptor {
112
/**
113
* An unique identifier of the contributed command.
114
*/
115
id: string;
116
/**
117
* Callback that will be executed when the command is triggered.
118
*/
119
run: ICommandHandler;
120
}
121
122
/**
123
* Add a command.
124
*/
125
export function addCommand(descriptor: ICommandDescriptor): IDisposable {
126
if ((typeof descriptor.id !== 'string') || (typeof descriptor.run !== 'function')) {
127
throw new Error('Invalid command descriptor, `id` and `run` are required properties!');
128
}
129
return CommandsRegistry.registerCommand(descriptor.id, descriptor.run);
130
}
131
132
/**
133
* Add an action to all editors.
134
*/
135
export function addEditorAction(descriptor: IActionDescriptor): IDisposable {
136
if ((typeof descriptor.id !== 'string') || (typeof descriptor.label !== 'string') || (typeof descriptor.run !== 'function')) {
137
throw new Error('Invalid action descriptor, `id`, `label` and `run` are required properties!');
138
}
139
140
const precondition = ContextKeyExpr.deserialize(descriptor.precondition);
141
const run = (accessor: ServicesAccessor, ...args: unknown[]): void | Promise<void> => {
142
return EditorCommand.runEditorCommand(accessor, args, precondition, (accessor, editor, args) => Promise.resolve(descriptor.run(editor, ...args)));
143
};
144
145
const toDispose = new DisposableStore();
146
147
// Register the command
148
toDispose.add(CommandsRegistry.registerCommand(descriptor.id, run));
149
150
// Register the context menu item
151
if (descriptor.contextMenuGroupId) {
152
const menuItem: IMenuItem = {
153
command: {
154
id: descriptor.id,
155
title: descriptor.label
156
},
157
when: precondition,
158
group: descriptor.contextMenuGroupId,
159
order: descriptor.contextMenuOrder || 0
160
};
161
toDispose.add(MenuRegistry.appendMenuItem(MenuId.EditorContext, menuItem));
162
}
163
164
// Register the keybindings
165
if (Array.isArray(descriptor.keybindings)) {
166
const keybindingService = StandaloneServices.get(IKeybindingService);
167
if (!(keybindingService instanceof StandaloneKeybindingService)) {
168
console.warn('Cannot add keybinding because the editor is configured with an unrecognized KeybindingService');
169
} else {
170
const keybindingsWhen = ContextKeyExpr.and(precondition, ContextKeyExpr.deserialize(descriptor.keybindingContext));
171
toDispose.add(keybindingService.addDynamicKeybindings(descriptor.keybindings.map((keybinding) => {
172
return {
173
keybinding,
174
command: descriptor.id,
175
when: keybindingsWhen
176
};
177
})));
178
}
179
}
180
181
return toDispose;
182
}
183
184
/**
185
* A keybinding rule.
186
*/
187
export interface IKeybindingRule {
188
keybinding: number;
189
command?: string | null;
190
commandArgs?: any;
191
when?: string | null;
192
}
193
194
/**
195
* Add a keybinding rule.
196
*/
197
export function addKeybindingRule(rule: IKeybindingRule): IDisposable {
198
return addKeybindingRules([rule]);
199
}
200
201
/**
202
* Add keybinding rules.
203
*/
204
export function addKeybindingRules(rules: IKeybindingRule[]): IDisposable {
205
const keybindingService = StandaloneServices.get(IKeybindingService);
206
if (!(keybindingService instanceof StandaloneKeybindingService)) {
207
console.warn('Cannot add keybinding because the editor is configured with an unrecognized KeybindingService');
208
return Disposable.None;
209
}
210
211
return keybindingService.addDynamicKeybindings(rules.map((rule) => {
212
return {
213
keybinding: rule.keybinding,
214
command: rule.command,
215
commandArgs: rule.commandArgs,
216
when: ContextKeyExpr.deserialize(rule.when),
217
};
218
}));
219
}
220
221
/**
222
* Create a new editor model.
223
* You can specify the language that should be set for this model or let the language be inferred from the `uri`.
224
*/
225
export function createModel(value: string, language?: string, uri?: URI): ITextModel {
226
const languageService = StandaloneServices.get(ILanguageService);
227
const languageId = languageService.getLanguageIdByMimeType(language) || language;
228
return createTextModel(
229
StandaloneServices.get(IModelService),
230
languageService,
231
value,
232
languageId,
233
uri
234
);
235
}
236
237
/**
238
* Change the language for a model.
239
*/
240
export function setModelLanguage(model: ITextModel, mimeTypeOrLanguageId: string): void {
241
const languageService = StandaloneServices.get(ILanguageService);
242
const languageId = languageService.getLanguageIdByMimeType(mimeTypeOrLanguageId) || mimeTypeOrLanguageId || PLAINTEXT_LANGUAGE_ID;
243
model.setLanguage(languageService.createById(languageId));
244
}
245
246
/**
247
* Set the markers for a model.
248
*/
249
export function setModelMarkers(model: ITextModel, owner: string, markers: IMarkerData[]): void {
250
if (model) {
251
const markerService = StandaloneServices.get(IMarkerService);
252
markerService.changeOne(owner, model.uri, markers);
253
}
254
}
255
256
/**
257
* Remove all markers of an owner.
258
*/
259
export function removeAllMarkers(owner: string) {
260
const markerService = StandaloneServices.get(IMarkerService);
261
markerService.changeAll(owner, []);
262
}
263
264
/**
265
* Get markers for owner and/or resource
266
*
267
* @returns list of markers
268
*/
269
export function getModelMarkers(filter: { owner?: string; resource?: URI; take?: number }): IMarker[] {
270
const markerService = StandaloneServices.get(IMarkerService);
271
return markerService.read(filter);
272
}
273
274
/**
275
* Emitted when markers change for a model.
276
* @event
277
*/
278
export function onDidChangeMarkers(listener: (e: readonly URI[]) => void): IDisposable {
279
const markerService = StandaloneServices.get(IMarkerService);
280
return markerService.onMarkerChanged(listener);
281
}
282
283
/**
284
* Get the model that has `uri` if it exists.
285
*/
286
export function getModel(uri: URI): ITextModel | null {
287
const modelService = StandaloneServices.get(IModelService);
288
return modelService.getModel(uri);
289
}
290
291
/**
292
* Get all the created models.
293
*/
294
export function getModels(): ITextModel[] {
295
const modelService = StandaloneServices.get(IModelService);
296
return modelService.getModels();
297
}
298
299
/**
300
* Emitted when a model is created.
301
* @event
302
*/
303
export function onDidCreateModel(listener: (model: ITextModel) => void): IDisposable {
304
const modelService = StandaloneServices.get(IModelService);
305
return modelService.onModelAdded(listener);
306
}
307
308
/**
309
* Emitted right before a model is disposed.
310
* @event
311
*/
312
export function onWillDisposeModel(listener: (model: ITextModel) => void): IDisposable {
313
const modelService = StandaloneServices.get(IModelService);
314
return modelService.onModelRemoved(listener);
315
}
316
317
/**
318
* Emitted when a different language is set to a model.
319
* @event
320
*/
321
export function onDidChangeModelLanguage(listener: (e: { readonly model: ITextModel; readonly oldLanguage: string }) => void): IDisposable {
322
const modelService = StandaloneServices.get(IModelService);
323
return modelService.onModelLanguageChanged((e) => {
324
listener({
325
model: e.model,
326
oldLanguage: e.oldLanguageId
327
});
328
});
329
}
330
331
/**
332
* Create a new web worker that has model syncing capabilities built in.
333
* Specify an AMD module to load that will `create` an object that will be proxied.
334
*/
335
export function createWebWorker<T extends object>(opts: IInternalWebWorkerOptions): MonacoWebWorker<T> {
336
return actualCreateWebWorker<T>(StandaloneServices.get(IModelService), StandaloneServices.get(IWebWorkerService), opts);
337
}
338
339
/**
340
* Colorize the contents of `domNode` using attribute `data-lang`.
341
*/
342
export function colorizeElement(domNode: HTMLElement, options: IColorizerElementOptions): Promise<void> {
343
const languageService = StandaloneServices.get(ILanguageService);
344
const themeService = <StandaloneThemeService>StandaloneServices.get(IStandaloneThemeService);
345
return Colorizer.colorizeElement(themeService, languageService, domNode, options).then(() => {
346
themeService.registerEditorContainer(domNode);
347
});
348
}
349
350
/**
351
* Colorize `text` using language `languageId`.
352
*/
353
export function colorize(text: string, languageId: string, options: IColorizerOptions): Promise<string> {
354
const languageService = StandaloneServices.get(ILanguageService);
355
const themeService = <StandaloneThemeService>StandaloneServices.get(IStandaloneThemeService);
356
themeService.registerEditorContainer(mainWindow.document.body);
357
return Colorizer.colorize(languageService, text, languageId, options);
358
}
359
360
/**
361
* Colorize a line in a model.
362
*/
363
export function colorizeModelLine(model: ITextModel, lineNumber: number, tabSize: number = 4): string {
364
const themeService = <StandaloneThemeService>StandaloneServices.get(IStandaloneThemeService);
365
themeService.registerEditorContainer(mainWindow.document.body);
366
return Colorizer.colorizeModelLine(model, lineNumber, tabSize);
367
}
368
369
/**
370
* @internal
371
*/
372
function getSafeTokenizationSupport(language: string): Omit<languages.ITokenizationSupport, 'tokenizeEncoded'> {
373
const tokenizationSupport = languages.TokenizationRegistry.get(language);
374
if (tokenizationSupport) {
375
return tokenizationSupport;
376
}
377
return {
378
getInitialState: () => NullState,
379
tokenize: (line: string, hasEOL: boolean, state: languages.IState) => nullTokenize(language, state)
380
};
381
}
382
383
/**
384
* Tokenize `text` using language `languageId`
385
*/
386
export function tokenize(text: string, languageId: string): languages.Token[][] {
387
// Needed in order to get the mode registered for subsequent look-ups
388
languages.TokenizationRegistry.getOrCreate(languageId);
389
390
const tokenizationSupport = getSafeTokenizationSupport(languageId);
391
const lines = splitLines(text);
392
const result: languages.Token[][] = [];
393
let state = tokenizationSupport.getInitialState();
394
for (let i = 0, len = lines.length; i < len; i++) {
395
const line = lines[i];
396
const tokenizationResult = tokenizationSupport.tokenize(line, true, state);
397
398
result[i] = tokenizationResult.tokens;
399
state = tokenizationResult.endState;
400
}
401
return result;
402
}
403
404
/**
405
* Define a new theme or update an existing theme.
406
*/
407
export function defineTheme(themeName: string, themeData: IStandaloneThemeData): void {
408
const standaloneThemeService = StandaloneServices.get(IStandaloneThemeService);
409
standaloneThemeService.defineTheme(themeName, themeData);
410
}
411
412
/**
413
* Switches to a theme.
414
*/
415
export function setTheme(themeName: string): void {
416
const standaloneThemeService = StandaloneServices.get(IStandaloneThemeService);
417
standaloneThemeService.setTheme(themeName);
418
}
419
420
/**
421
* Clears all cached font measurements and triggers re-measurement.
422
*/
423
export function remeasureFonts(): void {
424
FontMeasurements.clearAllFontInfos();
425
}
426
427
/**
428
* Register a command.
429
*/
430
export function registerCommand(id: string, handler: (accessor: any, ...args: any[]) => void): IDisposable {
431
return CommandsRegistry.registerCommand({ id, handler });
432
}
433
434
export interface ILinkOpener {
435
open(resource: URI): boolean | Promise<boolean>;
436
}
437
438
/**
439
* Registers a handler that is called when a link is opened in any editor. The handler callback should return `true` if the link was handled and `false` otherwise.
440
* The handler that was registered last will be called first when a link is opened.
441
*
442
* Returns a disposable that can unregister the opener again.
443
*/
444
export function registerLinkOpener(opener: ILinkOpener): IDisposable {
445
const openerService = StandaloneServices.get(IOpenerService);
446
return openerService.registerOpener({
447
async open(resource: string | URI) {
448
if (typeof resource === 'string') {
449
resource = URI.parse(resource);
450
}
451
return opener.open(resource);
452
}
453
});
454
}
455
456
/**
457
* Represents an object that can handle editor open operations (e.g. when "go to definition" is called
458
* with a resource other than the current model).
459
*/
460
export interface ICodeEditorOpener {
461
/**
462
* Callback that is invoked when a resource other than the current model should be opened (e.g. when "go to definition" is called).
463
* The callback should return `true` if the request was handled and `false` otherwise.
464
* @param source The code editor instance that initiated the request.
465
* @param resource The URI of the resource that should be opened.
466
* @param selectionOrPosition An optional position or selection inside the model corresponding to `resource` that can be used to set the cursor.
467
*/
468
openCodeEditor(source: ICodeEditor, resource: URI, selectionOrPosition?: IRange | IPosition): boolean | Promise<boolean>;
469
}
470
471
/**
472
* Registers a handler that is called when a resource other than the current model should be opened in the editor (e.g. "go to definition").
473
* The handler callback should return `true` if the request was handled and `false` otherwise.
474
*
475
* Returns a disposable that can unregister the opener again.
476
*
477
* If no handler is registered the default behavior is to do nothing for models other than the currently attached one.
478
*/
479
export function registerEditorOpener(opener: ICodeEditorOpener): IDisposable {
480
const codeEditorService = StandaloneServices.get(ICodeEditorService);
481
return codeEditorService.registerCodeEditorOpenHandler(async (input: ITextResourceEditorInput, source: ICodeEditor | null, sideBySide?: boolean) => {
482
if (!source) {
483
return null;
484
}
485
const selection = input.options?.selection;
486
let selectionOrPosition: IRange | IPosition | undefined;
487
if (selection && typeof selection.endLineNumber === 'number' && typeof selection.endColumn === 'number') {
488
selectionOrPosition = <IRange>selection;
489
} else if (selection) {
490
selectionOrPosition = { lineNumber: selection.startLineNumber, column: selection.startColumn };
491
}
492
if (await opener.openCodeEditor(source, input.resource, selectionOrPosition)) {
493
return source; // return source editor to indicate that this handler has successfully handled the opening
494
}
495
return null; // fallback to other registered handlers
496
});
497
}
498
499
/**
500
* @internal
501
*/
502
export function createMonacoEditorAPI(): typeof monaco.editor {
503
return {
504
// methods
505
// eslint-disable-next-line local/code-no-any-casts
506
create: <any>create,
507
// eslint-disable-next-line local/code-no-any-casts
508
getEditors: <any>getEditors,
509
// eslint-disable-next-line local/code-no-any-casts
510
getDiffEditors: <any>getDiffEditors,
511
// eslint-disable-next-line local/code-no-any-casts
512
onDidCreateEditor: <any>onDidCreateEditor,
513
// eslint-disable-next-line local/code-no-any-casts
514
onDidCreateDiffEditor: <any>onDidCreateDiffEditor,
515
// eslint-disable-next-line local/code-no-any-casts
516
createDiffEditor: <any>createDiffEditor,
517
518
// eslint-disable-next-line local/code-no-any-casts
519
addCommand: <any>addCommand,
520
// eslint-disable-next-line local/code-no-any-casts
521
addEditorAction: <any>addEditorAction,
522
// eslint-disable-next-line local/code-no-any-casts
523
addKeybindingRule: <any>addKeybindingRule,
524
// eslint-disable-next-line local/code-no-any-casts
525
addKeybindingRules: <any>addKeybindingRules,
526
527
// eslint-disable-next-line local/code-no-any-casts
528
createModel: <any>createModel,
529
// eslint-disable-next-line local/code-no-any-casts
530
setModelLanguage: <any>setModelLanguage,
531
// eslint-disable-next-line local/code-no-any-casts
532
setModelMarkers: <any>setModelMarkers,
533
// eslint-disable-next-line local/code-no-any-casts
534
getModelMarkers: <any>getModelMarkers,
535
removeAllMarkers: removeAllMarkers,
536
// eslint-disable-next-line local/code-no-any-casts
537
onDidChangeMarkers: <any>onDidChangeMarkers,
538
// eslint-disable-next-line local/code-no-any-casts
539
getModels: <any>getModels,
540
// eslint-disable-next-line local/code-no-any-casts
541
getModel: <any>getModel,
542
// eslint-disable-next-line local/code-no-any-casts
543
onDidCreateModel: <any>onDidCreateModel,
544
// eslint-disable-next-line local/code-no-any-casts
545
onWillDisposeModel: <any>onWillDisposeModel,
546
// eslint-disable-next-line local/code-no-any-casts
547
onDidChangeModelLanguage: <any>onDidChangeModelLanguage,
548
549
550
// eslint-disable-next-line local/code-no-any-casts
551
createWebWorker: <any>createWebWorker,
552
// eslint-disable-next-line local/code-no-any-casts
553
colorizeElement: <any>colorizeElement,
554
// eslint-disable-next-line local/code-no-any-casts
555
colorize: <any>colorize,
556
// eslint-disable-next-line local/code-no-any-casts
557
colorizeModelLine: <any>colorizeModelLine,
558
// eslint-disable-next-line local/code-no-any-casts
559
tokenize: <any>tokenize,
560
// eslint-disable-next-line local/code-no-any-casts
561
defineTheme: <any>defineTheme,
562
// eslint-disable-next-line local/code-no-any-casts
563
setTheme: <any>setTheme,
564
remeasureFonts: remeasureFonts,
565
registerCommand: registerCommand,
566
567
registerLinkOpener: registerLinkOpener,
568
// eslint-disable-next-line local/code-no-any-casts
569
registerEditorOpener: <any>registerEditorOpener,
570
571
// enums
572
AccessibilitySupport: standaloneEnums.AccessibilitySupport,
573
ContentWidgetPositionPreference: standaloneEnums.ContentWidgetPositionPreference,
574
CursorChangeReason: standaloneEnums.CursorChangeReason,
575
DefaultEndOfLine: standaloneEnums.DefaultEndOfLine,
576
EditorAutoIndentStrategy: standaloneEnums.EditorAutoIndentStrategy,
577
EditorOption: standaloneEnums.EditorOption,
578
EndOfLinePreference: standaloneEnums.EndOfLinePreference,
579
EndOfLineSequence: standaloneEnums.EndOfLineSequence,
580
MinimapPosition: standaloneEnums.MinimapPosition,
581
MinimapSectionHeaderStyle: standaloneEnums.MinimapSectionHeaderStyle,
582
MouseTargetType: standaloneEnums.MouseTargetType,
583
OverlayWidgetPositionPreference: standaloneEnums.OverlayWidgetPositionPreference,
584
OverviewRulerLane: standaloneEnums.OverviewRulerLane,
585
GlyphMarginLane: standaloneEnums.GlyphMarginLane,
586
RenderLineNumbersType: standaloneEnums.RenderLineNumbersType,
587
RenderMinimap: standaloneEnums.RenderMinimap,
588
ScrollbarVisibility: standaloneEnums.ScrollbarVisibility,
589
ScrollType: standaloneEnums.ScrollType,
590
TextEditorCursorBlinkingStyle: standaloneEnums.TextEditorCursorBlinkingStyle,
591
TextEditorCursorStyle: standaloneEnums.TextEditorCursorStyle,
592
TrackedRangeStickiness: standaloneEnums.TrackedRangeStickiness,
593
WrappingIndent: standaloneEnums.WrappingIndent,
594
InjectedTextCursorStops: standaloneEnums.InjectedTextCursorStops,
595
PositionAffinity: standaloneEnums.PositionAffinity,
596
ShowLightbulbIconMode: standaloneEnums.ShowLightbulbIconMode,
597
TextDirection: standaloneEnums.TextDirection,
598
599
// classes
600
// eslint-disable-next-line local/code-no-any-casts
601
ConfigurationChangedEvent: <any>ConfigurationChangedEvent,
602
// eslint-disable-next-line local/code-no-any-casts
603
BareFontInfo: <any>BareFontInfo,
604
// eslint-disable-next-line local/code-no-any-casts
605
FontInfo: <any>FontInfo,
606
// eslint-disable-next-line local/code-no-any-casts
607
TextModelResolvedOptions: <any>TextModelResolvedOptions,
608
// eslint-disable-next-line local/code-no-any-casts
609
FindMatch: <any>FindMatch,
610
// eslint-disable-next-line local/code-no-any-casts
611
ApplyUpdateResult: <any>ApplyUpdateResult,
612
// eslint-disable-next-line local/code-no-any-casts
613
EditorZoom: <any>EditorZoom,
614
615
// eslint-disable-next-line local/code-no-any-casts
616
createMultiFileDiffEditor: <any>createMultiFileDiffEditor,
617
618
// vars
619
EditorType: EditorType,
620
// eslint-disable-next-line local/code-no-any-casts
621
EditorOptions: <any>EditorOptions
622
623
};
624
}
625
626