@xterm/xterm 6.1.0-beta.3 → 6.1.0-beta.300

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/README.md +69 -38
  2. package/css/xterm.css +29 -22
  3. package/lib/xterm.js +1 -1
  4. package/lib/xterm.js.map +1 -1
  5. package/lib/xterm.mjs +8 -34
  6. package/lib/xterm.mjs.map +4 -4
  7. package/package.json +57 -45
  8. package/src/browser/AccessibilityManager.ts +18 -13
  9. package/src/browser/Clipboard.ts +8 -5
  10. package/src/browser/ColorContrastCache.ts +3 -3
  11. package/src/browser/CoreBrowserTerminal.ts +180 -352
  12. package/src/browser/Dom.ts +178 -0
  13. package/src/browser/Linkifier.ts +14 -14
  14. package/src/browser/OscLinkProvider.ts +87 -19
  15. package/src/browser/RenderDebouncer.ts +7 -9
  16. package/src/browser/TimeBasedDebouncer.ts +12 -5
  17. package/src/browser/Types.ts +16 -14
  18. package/src/browser/Viewport.ts +58 -23
  19. package/src/browser/decorations/BufferDecorationRenderer.ts +3 -3
  20. package/src/browser/decorations/ColorZoneStore.ts +1 -1
  21. package/src/browser/decorations/OverviewRulerRenderer.ts +36 -20
  22. package/src/browser/input/CompositionHelper.ts +47 -11
  23. package/src/browser/input/Mouse.ts +5 -9
  24. package/src/browser/input/MoveToCell.ts +3 -3
  25. package/src/browser/public/Terminal.ts +33 -36
  26. package/src/browser/renderer/dom/DomRenderer.ts +265 -89
  27. package/src/browser/renderer/dom/DomRendererRowFactory.ts +34 -27
  28. package/src/browser/renderer/dom/WidthCache.ts +57 -55
  29. package/src/browser/renderer/shared/Constants.ts +7 -0
  30. package/src/browser/renderer/shared/RendererUtils.ts +1 -1
  31. package/src/browser/renderer/shared/SelectionRenderModel.ts +2 -2
  32. package/src/browser/renderer/shared/TextBlinkStateManager.ts +97 -0
  33. package/src/browser/renderer/shared/Types.ts +10 -4
  34. package/src/browser/scrollable/abstractScrollbar.ts +300 -0
  35. package/src/browser/scrollable/fastDomNode.ts +126 -0
  36. package/src/browser/scrollable/globalPointerMoveMonitor.ts +90 -0
  37. package/src/browser/scrollable/horizontalScrollbar.ts +85 -0
  38. package/src/browser/scrollable/mouseEvent.ts +292 -0
  39. package/src/browser/scrollable/scrollable.ts +486 -0
  40. package/src/browser/scrollable/scrollableElement.ts +581 -0
  41. package/src/browser/scrollable/scrollableElementOptions.ts +161 -0
  42. package/src/browser/scrollable/scrollbarArrow.ts +110 -0
  43. package/src/browser/scrollable/scrollbarState.ts +246 -0
  44. package/src/browser/scrollable/scrollbarVisibilityController.ts +113 -0
  45. package/src/browser/scrollable/touch.ts +485 -0
  46. package/src/browser/scrollable/verticalScrollbar.ts +143 -0
  47. package/src/browser/scrollable/widget.ts +23 -0
  48. package/src/browser/selection/SelectionModel.ts +4 -3
  49. package/src/browser/services/CharSizeService.ts +4 -4
  50. package/src/browser/services/CharacterJoinerService.ts +13 -11
  51. package/src/browser/services/CoreBrowserService.ts +7 -5
  52. package/src/browser/services/KeyboardService.ts +67 -0
  53. package/src/browser/services/LinkProviderService.ts +3 -3
  54. package/src/browser/services/MouseCoordsService.ts +47 -0
  55. package/src/browser/services/MouseService.ts +610 -23
  56. package/src/browser/services/RenderService.ts +33 -22
  57. package/src/browser/services/SelectionService.ts +73 -55
  58. package/src/browser/services/Services.ts +44 -21
  59. package/src/browser/services/ThemeService.ts +9 -9
  60. package/src/common/Async.ts +141 -0
  61. package/src/common/CircularList.ts +24 -3
  62. package/src/common/Color.ts +13 -5
  63. package/src/common/CoreTerminal.ts +62 -38
  64. package/src/common/Event.ts +118 -0
  65. package/src/common/InputHandler.ts +303 -104
  66. package/src/common/Lifecycle.ts +113 -0
  67. package/src/common/Platform.ts +15 -5
  68. package/src/common/SortedList.ts +8 -4
  69. package/src/common/StringBuilder.ts +67 -0
  70. package/src/common/TaskQueue.ts +17 -8
  71. package/src/common/Types.ts +68 -206
  72. package/src/common/Version.ts +9 -0
  73. package/src/common/WindowsMode.ts +2 -2
  74. package/src/common/buffer/AttributeData.ts +3 -2
  75. package/src/common/buffer/Buffer.ts +49 -34
  76. package/src/common/buffer/BufferLine.ts +175 -100
  77. package/src/common/buffer/BufferLineStringCache.ts +69 -0
  78. package/src/common/buffer/BufferReflow.ts +7 -4
  79. package/src/common/buffer/BufferSet.ts +13 -9
  80. package/src/common/buffer/CellData.ts +61 -4
  81. package/src/common/buffer/Constants.ts +13 -13
  82. package/src/common/buffer/Marker.ts +4 -4
  83. package/src/common/buffer/Types.ts +153 -3
  84. package/src/common/data/Charsets.ts +5 -8
  85. package/src/common/data/EscapeSequences.ts +71 -70
  86. package/src/common/input/Keyboard.ts +17 -10
  87. package/src/common/input/KittyKeyboard.ts +526 -0
  88. package/src/common/input/TextDecoder.ts +3 -3
  89. package/src/common/input/UnicodeV6.ts +3 -2
  90. package/src/common/input/Win32InputMode.ts +297 -0
  91. package/src/common/input/WriteBuffer.ts +108 -39
  92. package/src/common/input/XParseColor.ts +2 -2
  93. package/src/common/parser/ApcParser.ts +196 -0
  94. package/src/common/parser/Constants.ts +14 -4
  95. package/src/common/parser/DcsParser.ts +15 -16
  96. package/src/common/parser/EscapeSequenceParser.ts +214 -72
  97. package/src/common/parser/OscParser.ts +14 -15
  98. package/src/common/parser/Params.ts +31 -12
  99. package/src/common/parser/Types.ts +40 -30
  100. package/src/common/public/BufferApiView.ts +3 -3
  101. package/src/common/public/BufferLineApiView.ts +4 -4
  102. package/src/common/public/BufferNamespaceApi.ts +5 -5
  103. package/src/common/public/ParserApi.ts +5 -2
  104. package/src/common/public/UnicodeApi.ts +1 -1
  105. package/src/common/services/BufferService.ts +17 -13
  106. package/src/common/services/CharsetService.ts +6 -2
  107. package/src/common/services/CoreService.ts +23 -10
  108. package/src/common/services/DecorationService.ts +260 -15
  109. package/src/common/services/InstantiationService.ts +2 -2
  110. package/src/common/services/LogService.ts +2 -32
  111. package/src/common/services/{CoreMouseService.ts → MouseStateService.ts} +22 -133
  112. package/src/common/services/OptionsService.ts +17 -10
  113. package/src/common/services/OscLinkService.ts +3 -2
  114. package/src/common/services/ServiceRegistry.ts +14 -8
  115. package/src/common/services/Services.ts +54 -54
  116. package/src/common/services/UnicodeService.ts +6 -11
  117. package/typings/xterm.d.ts +333 -47
  118. package/src/common/Clone.ts +0 -23
  119. package/src/common/TypedArrayUtils.ts +0 -17
  120. package/src/vs/base/browser/browser.ts +0 -141
  121. package/src/vs/base/browser/canIUse.ts +0 -49
  122. package/src/vs/base/browser/dom.ts +0 -2369
  123. package/src/vs/base/browser/fastDomNode.ts +0 -316
  124. package/src/vs/base/browser/globalPointerMoveMonitor.ts +0 -112
  125. package/src/vs/base/browser/iframe.ts +0 -135
  126. package/src/vs/base/browser/keyboardEvent.ts +0 -213
  127. package/src/vs/base/browser/mouseEvent.ts +0 -229
  128. package/src/vs/base/browser/touch.ts +0 -372
  129. package/src/vs/base/browser/ui/scrollbar/abstractScrollbar.ts +0 -303
  130. package/src/vs/base/browser/ui/scrollbar/horizontalScrollbar.ts +0 -114
  131. package/src/vs/base/browser/ui/scrollbar/scrollableElement.ts +0 -720
  132. package/src/vs/base/browser/ui/scrollbar/scrollableElementOptions.ts +0 -165
  133. package/src/vs/base/browser/ui/scrollbar/scrollbarArrow.ts +0 -114
  134. package/src/vs/base/browser/ui/scrollbar/scrollbarState.ts +0 -243
  135. package/src/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.ts +0 -118
  136. package/src/vs/base/browser/ui/scrollbar/verticalScrollbar.ts +0 -116
  137. package/src/vs/base/browser/ui/widget.ts +0 -57
  138. package/src/vs/base/browser/window.ts +0 -14
  139. package/src/vs/base/common/arrays.ts +0 -887
  140. package/src/vs/base/common/arraysFind.ts +0 -202
  141. package/src/vs/base/common/assert.ts +0 -71
  142. package/src/vs/base/common/async.ts +0 -1992
  143. package/src/vs/base/common/cancellation.ts +0 -148
  144. package/src/vs/base/common/charCode.ts +0 -450
  145. package/src/vs/base/common/collections.ts +0 -140
  146. package/src/vs/base/common/decorators.ts +0 -130
  147. package/src/vs/base/common/equals.ts +0 -146
  148. package/src/vs/base/common/errors.ts +0 -303
  149. package/src/vs/base/common/event.ts +0 -1778
  150. package/src/vs/base/common/functional.ts +0 -32
  151. package/src/vs/base/common/hash.ts +0 -316
  152. package/src/vs/base/common/iterator.ts +0 -159
  153. package/src/vs/base/common/keyCodes.ts +0 -526
  154. package/src/vs/base/common/keybindings.ts +0 -284
  155. package/src/vs/base/common/lazy.ts +0 -47
  156. package/src/vs/base/common/lifecycle.ts +0 -801
  157. package/src/vs/base/common/linkedList.ts +0 -142
  158. package/src/vs/base/common/map.ts +0 -202
  159. package/src/vs/base/common/numbers.ts +0 -98
  160. package/src/vs/base/common/observable.ts +0 -76
  161. package/src/vs/base/common/observableInternal/api.ts +0 -31
  162. package/src/vs/base/common/observableInternal/autorun.ts +0 -281
  163. package/src/vs/base/common/observableInternal/base.ts +0 -489
  164. package/src/vs/base/common/observableInternal/debugName.ts +0 -145
  165. package/src/vs/base/common/observableInternal/derived.ts +0 -428
  166. package/src/vs/base/common/observableInternal/lazyObservableValue.ts +0 -146
  167. package/src/vs/base/common/observableInternal/logging.ts +0 -328
  168. package/src/vs/base/common/observableInternal/promise.ts +0 -209
  169. package/src/vs/base/common/observableInternal/utils.ts +0 -610
  170. package/src/vs/base/common/platform.ts +0 -281
  171. package/src/vs/base/common/scrollable.ts +0 -522
  172. package/src/vs/base/common/sequence.ts +0 -34
  173. package/src/vs/base/common/stopwatch.ts +0 -43
  174. package/src/vs/base/common/strings.ts +0 -557
  175. package/src/vs/base/common/symbols.ts +0 -9
  176. package/src/vs/base/common/uint.ts +0 -59
  177. package/src/vs/patches/nls.ts +0 -90
  178. package/src/vs/typings/base-common.d.ts +0 -20
  179. package/src/vs/typings/require.d.ts +0 -42
  180. package/src/vs/typings/vscode-globals-nls.d.ts +0 -36
  181. package/src/vs/typings/vscode-globals-product.d.ts +0 -33
@@ -2,8 +2,9 @@
2
2
  * Copyright (c) 2022 The xterm.js authors. All rights reserved.
3
3
  * @license MIT
4
4
  */
5
- import { IBufferService, IOscLinkService } from 'common/services/Services';
6
- import { IMarker, IOscLinkData } from 'common/Types';
5
+ import { IBufferService, IOscLinkService } from './Services';
6
+ import { IOscLinkData } from '../Types';
7
+ import { IMarker } from '../buffer/Types';
7
8
 
8
9
  export class OscLinkService implements IOscLinkService {
9
10
  public serviceBrand: any;
@@ -9,15 +9,21 @@
9
9
  * Licensed under the MIT License. See License.txt in the project root for license information.
10
10
  *--------------------------------------------------------------------------------------------*/
11
11
 
12
- import { IServiceIdentifier } from 'common/services/Services';
12
+ export interface IServiceIdentifier<T> {
13
+ (...args: any[]): void;
14
+ type: T;
15
+ _id: string;
16
+ }
13
17
 
14
- const DI_TARGET = 'di$target';
15
- const DI_DEPENDENCIES = 'di$dependencies';
18
+ const enum Constants {
19
+ DI_TARGET = 'di$target',
20
+ DI_DEPENDENCIES = 'di$dependencies'
21
+ }
16
22
 
17
23
  export const serviceRegistry: Map<string, IServiceIdentifier<any>> = new Map();
18
24
 
19
25
  export function getServiceDependencies(ctor: any): { id: IServiceIdentifier<any>, index: number, optional: boolean }[] {
20
- return ctor[DI_DEPENDENCIES] || [];
26
+ return ctor[Constants.DI_DEPENDENCIES] || [];
21
27
  }
22
28
 
23
29
  export function createDecorator<T>(id: string): IServiceIdentifier<T> {
@@ -40,10 +46,10 @@ export function createDecorator<T>(id: string): IServiceIdentifier<T> {
40
46
  }
41
47
 
42
48
  function storeServiceDependency(id: Function, target: Function, index: number): void {
43
- if ((target as any)[DI_TARGET] === target) {
44
- (target as any)[DI_DEPENDENCIES].push({ id, index });
49
+ if ((target as any)[Constants.DI_TARGET] === target) {
50
+ (target as any)[Constants.DI_DEPENDENCIES].push({ id, index });
45
51
  } else {
46
- (target as any)[DI_DEPENDENCIES] = [{ id, index }];
47
- (target as any)[DI_TARGET] = target;
52
+ (target as any)[Constants.DI_DEPENDENCIES] = [{ id, index }];
53
+ (target as any)[Constants.DI_TARGET] = target;
48
54
  }
49
55
  }
@@ -3,11 +3,11 @@
3
3
  * @license MIT
4
4
  */
5
5
 
6
- import { IDecoration, IDecorationOptions, ILinkHandler, ILogger, IWindowsPty, type IOverviewRulerOptions } from '@xterm/xterm';
7
- import { CoreMouseEncoding, CoreMouseEventType, CursorInactiveStyle, CursorStyle, IAttributeData, ICharset, IColor, ICoreMouseEvent, ICoreMouseProtocol, IDecPrivateModes, IDisposable, IModes, IOscLinkData, IWindowOptions } from 'common/Types';
8
- import { IBuffer, IBufferSet } from 'common/buffer/Types';
9
- import { createDecorator } from 'common/services/ServiceRegistry';
10
- import type { Emitter, Event } from 'vs/base/common/event';
6
+ import type { IDecoration, IDecorationOptions, ILinkHandler, ILogger, IWindowsPty, IOverviewRulerOptions } from '@xterm/xterm';
7
+ import { CoreMouseEncoding, CoreMouseEventType, CursorInactiveStyle, CursorStyle, ICharset, IColor, ICoreMouseEvent, ICoreMouseProtocol, IDecPrivateModes, IDisposable, IKittyKeyboardState, IModes, IOscLinkData, IWindowOptions } from '../Types';
8
+ import { IAttributeData, IBuffer, IBufferSet } from '../buffer/Types';
9
+ import { createDecorator, IServiceIdentifier } from './ServiceRegistry';
10
+ import type { Emitter, IEvent } from '../Event';
11
11
 
12
12
  export const IBufferService = createDecorator<IBufferService>('BufferService');
13
13
  export interface IBufferService {
@@ -18,8 +18,8 @@ export interface IBufferService {
18
18
  readonly buffer: IBuffer;
19
19
  readonly buffers: IBufferSet;
20
20
  isUserScrolling: boolean;
21
- onResize: Event<IBufferResizeEvent>;
22
- onScroll: Event<number>;
21
+ onResize: IEvent<IBufferResizeEvent>;
22
+ onScroll: IEvent<number>;
23
23
  scroll(eraseAttr: IAttributeData, isWrapped?: boolean): void;
24
24
  scrollLines(disp: number, suppressScrollEvent?: boolean): void;
25
25
  resize(cols: number, rows: number): void;
@@ -33,8 +33,8 @@ export interface IBufferResizeEvent {
33
33
  rowsChanged: boolean;
34
34
  }
35
35
 
36
- export const ICoreMouseService = createDecorator<ICoreMouseService>('CoreMouseService');
37
- export interface ICoreMouseService {
36
+ export const IMouseStateService = createDecorator<IMouseStateService>('MouseStateService');
37
+ export interface IMouseStateService {
38
38
  serviceBrand: undefined;
39
39
 
40
40
  activeProtocol: string;
@@ -43,33 +43,17 @@ export interface ICoreMouseService {
43
43
  addProtocol(name: string, protocol: ICoreMouseProtocol): void;
44
44
  addEncoding(name: string, encoding: CoreMouseEncoding): void;
45
45
  reset(): void;
46
-
47
- /**
48
- * Triggers a mouse event to be sent.
49
- *
50
- * Returns true if the event passed all protocol restrictions and a report
51
- * was sent, otherwise false. The return value may be used to decide whether
52
- * the default event action in the bowser component should be omitted.
53
- *
54
- * Note: The method will change values of the given event object
55
- * to fullfill protocol and encoding restrictions.
56
- */
57
- triggerMouseEvent(event: ICoreMouseEvent): boolean;
46
+ setCustomWheelEventHandler(customWheelEventHandler: ((event: WheelEvent) => boolean) | undefined): void;
47
+ allowCustomWheelEvent(ev: WheelEvent): boolean;
58
48
 
59
49
  /**
60
50
  * Event to announce changes in mouse tracking.
61
51
  */
62
- onProtocolChange: Event<CoreMouseEventType>;
63
-
64
- /**
65
- * Human readable version of mouse events.
66
- */
67
- explainEvents(events: CoreMouseEventType): { [event: string]: boolean };
68
-
69
- /**
70
- * Process wheel event taking partial scroll into account.
71
- */
72
- consumeWheelEvent(ev: WheelEvent, cellHeight?: number, dpr?: number): number;
52
+ onProtocolChange: IEvent<CoreMouseEventType>;
53
+ restrictMouseEvent(event: ICoreMouseEvent): boolean;
54
+ encodeMouseEvent(event: ICoreMouseEvent): string;
55
+ readonly isDefaultEncoding: boolean;
56
+ readonly isPixelEncoding: boolean;
73
57
  }
74
58
 
75
59
  export const ICoreService = createDecorator<ICoreService>('CoreService');
@@ -85,11 +69,12 @@ export interface ICoreService {
85
69
 
86
70
  readonly modes: IModes;
87
71
  readonly decPrivateModes: IDecPrivateModes;
72
+ readonly kittyKeyboard: IKittyKeyboardState;
88
73
 
89
- readonly onData: Event<string>;
90
- readonly onUserInput: Event<void>;
91
- readonly onBinary: Event<string>;
92
- readonly onRequestScrollToBottom: Event<void>;
74
+ readonly onData: IEvent<string>;
75
+ readonly onUserInput: IEvent<void>;
76
+ readonly onBinary: IEvent<string>;
77
+ readonly onRequestScrollToBottom: IEvent<void>;
93
78
 
94
79
  reset(): void;
95
80
 
@@ -116,6 +101,7 @@ export interface ICharsetService {
116
101
 
117
102
  charset: ICharset | undefined;
118
103
  readonly glevel: number;
104
+ readonly charsets: (ICharset | undefined)[];
119
105
 
120
106
  reset(): void;
121
107
 
@@ -133,12 +119,6 @@ export interface ICharsetService {
133
119
  setgCharset(g: number, charset: ICharset | undefined): void;
134
120
  }
135
121
 
136
- export interface IServiceIdentifier<T> {
137
- (...args: any[]): void;
138
- type: T;
139
- _id: string;
140
- }
141
-
142
122
  export interface IBrandedService {
143
123
  serviceBrand: undefined;
144
124
  }
@@ -199,7 +179,7 @@ export interface IOptionsService {
199
179
  /**
200
180
  * Adds an event listener for when any option changes.
201
181
  */
202
- readonly onOptionChange: Event<keyof ITerminalOptions>;
182
+ readonly onOptionChange: IEvent<keyof ITerminalOptions>;
203
183
 
204
184
  /**
205
185
  * Adds an event listener for when a specific option changes, this is a convenience method that is
@@ -227,15 +207,13 @@ export interface ITerminalOptions {
227
207
  cols?: number;
228
208
  convertEol?: boolean;
229
209
  cursorBlink?: boolean;
210
+ blinkIntervalDuration?: number;
230
211
  cursorStyle?: CursorStyle;
231
212
  cursorWidth?: number;
232
213
  cursorInactiveStyle?: CursorInactiveStyle;
233
- customGlyphs?: boolean;
234
214
  disableStdin?: boolean;
235
215
  documentOverride?: any | null;
236
216
  drawBoldTextInBrightColors?: boolean;
237
- /** @deprecated No longer supported */
238
- fastScrollModifier?: 'none' | 'alt' | 'ctrl' | 'shift';
239
217
  fastScrollSensitivity?: number;
240
218
  fontSize?: number;
241
219
  fontFamily?: string;
@@ -250,10 +228,12 @@ export interface ITerminalOptions {
250
228
  macOptionIsMeta?: boolean;
251
229
  macOptionClickForcesSelection?: boolean;
252
230
  minimumContrastRatio?: number;
231
+ mouseEventsRequireAlt?: boolean;
253
232
  reflowCursorLine?: boolean;
254
233
  rescaleOverlappingGlyphs?: boolean;
255
234
  rightClickSelectsWord?: boolean;
256
235
  rows?: number;
236
+ showCursorImmediately?: boolean;
257
237
  screenReaderMode?: boolean;
258
238
  scrollback?: number;
259
239
  scrollOnUserInput?: boolean;
@@ -261,15 +241,15 @@ export interface ITerminalOptions {
261
241
  smoothScrollDuration?: number;
262
242
  tabStopWidth?: number;
263
243
  theme?: ITheme;
264
- windowsMode?: boolean;
265
244
  windowsPty?: IWindowsPty;
266
245
  windowOptions?: IWindowOptions;
267
246
  wordSeparator?: string;
268
- overviewRuler?: IOverviewRulerOptions;
247
+ quirks?: ITerminalQuirks;
248
+ scrollbar?: IScrollbarOptions;
269
249
  scrollOnEraseInDisplay?: boolean;
250
+ vtExtensions?: IVtExtensions;
270
251
 
271
252
  [key: string]: any;
272
- cancelEvents: boolean;
273
253
  termName: string;
274
254
  }
275
255
 
@@ -304,6 +284,24 @@ export interface ITheme {
304
284
  extendedAnsi?: string[];
305
285
  }
306
286
 
287
+ export interface ITerminalQuirks {
288
+ allowSetCursorBlink?: boolean;
289
+ }
290
+
291
+ export interface IScrollbarOptions {
292
+ showScrollbar?: boolean;
293
+ showArrows?: boolean;
294
+ width?: number;
295
+ overviewRuler?: IOverviewRulerOptions;
296
+ }
297
+
298
+ export interface IVtExtensions {
299
+ kittyKeyboard?: boolean;
300
+ kittySgrBoldFaintControl?: boolean;
301
+ win32InputMode?: boolean;
302
+ colorSchemeQuery?: boolean;
303
+ }
304
+
307
305
  export const IOscLinkService = createDecorator<IOscLinkService>('OscLinkService');
308
306
  export interface IOscLinkService {
309
307
  serviceBrand: undefined;
@@ -346,14 +344,14 @@ export type UnicodeCharWidth = 0 | 1 | 2;
346
344
  export const IUnicodeService = createDecorator<IUnicodeService>('UnicodeService');
347
345
  export interface IUnicodeService {
348
346
  serviceBrand: undefined;
349
- /** Register an Unicode version provider. */
347
+ /** Register a Unicode version provider. */
350
348
  register(provider: IUnicodeVersionProvider): void;
351
349
  /** Registered Unicode versions. */
352
350
  readonly versions: string[];
353
351
  /** Currently active version. */
354
352
  activeVersion: string;
355
- /** Event triggered, when activate version changed. */
356
- readonly onChange: Event<string>;
353
+ /** Event triggered when the active version changes. */
354
+ readonly onChange: IEvent<string>;
357
355
 
358
356
  /**
359
357
  * Unicode version dependent
@@ -378,8 +376,8 @@ export const IDecorationService = createDecorator<IDecorationService>('Decoratio
378
376
  export interface IDecorationService extends IDisposable {
379
377
  serviceBrand: undefined;
380
378
  readonly decorations: IterableIterator<IInternalDecoration>;
381
- readonly onDecorationRegistered: Event<IInternalDecoration>;
382
- readonly onDecorationRemoved: Event<IInternalDecoration>;
379
+ readonly onDecorationRegistered: IEvent<IInternalDecoration>;
380
+ readonly onDecorationRemoved: IEvent<IInternalDecoration>;
383
381
  registerDecoration(decorationOptions: IDecorationOptions): IDecoration | undefined;
384
382
  reset(): void;
385
383
  /**
@@ -393,4 +391,6 @@ export interface IInternalDecoration extends IDecoration {
393
391
  readonly backgroundColorRGB: IColor | undefined;
394
392
  readonly foregroundColorRGB: IColor | undefined;
395
393
  readonly onRenderEmitter: Emitter<HTMLElement>;
394
+ /** @internal Start line for line-index removal; kept in sync on buffer line shifts. */
395
+ _indexedStartLine: number;
396
396
  }
@@ -3,16 +3,15 @@
3
3
  * @license MIT
4
4
  */
5
5
 
6
- import { UnicodeV6 } from 'common/input/UnicodeV6';
7
- import { IUnicodeService, IUnicodeVersionProvider, UnicodeCharProperties, UnicodeCharWidth } from 'common/services/Services';
8
- import { Emitter } from 'vs/base/common/event';
6
+ import { IUnicodeService, IUnicodeVersionProvider, UnicodeCharProperties, UnicodeCharWidth } from './Services';
7
+ import { Emitter } from '../Event';
9
8
 
10
9
  export class UnicodeService implements IUnicodeService {
11
10
  public serviceBrand: any;
12
11
 
13
12
  private _providers: {[key: string]: IUnicodeVersionProvider} = Object.create(null);
14
13
  private _active: string = '';
15
- private _activeProvider: IUnicodeVersionProvider;
14
+ private _activeProvider!: IUnicodeVersionProvider;
16
15
 
17
16
  private readonly _onChange = new Emitter<string>();
18
17
  public readonly onChange = this._onChange.event;
@@ -30,13 +29,6 @@ export class UnicodeService implements IUnicodeService {
30
29
  return ((state & 0xffffff) << 3) | ((width & 3) << 1) | (shouldJoin?1:0);
31
30
  }
32
31
 
33
- constructor() {
34
- const defaultProvider = new UnicodeV6();
35
- this.register(defaultProvider);
36
- this._active = defaultProvider.version;
37
- this._activeProvider = defaultProvider;
38
- }
39
-
40
32
  public dispose(): void {
41
33
  this._onChange.dispose();
42
34
  }
@@ -60,6 +52,9 @@ export class UnicodeService implements IUnicodeService {
60
52
 
61
53
  public register(provider: IUnicodeVersionProvider): void {
62
54
  this._providers[provider.version] = provider;
55
+ if (!this._active) {
56
+ this.activeVersion = provider.version;
57
+ }
63
58
  }
64
59
 
65
60
  /**