@xterm/xterm 6.1.0-beta.28 → 6.1.0-beta.281

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 +62 -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 +56 -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 +179 -348
  12. package/src/browser/Dom.ts +178 -0
  13. package/src/browser/Linkifier.ts +14 -14
  14. package/src/browser/OscLinkProvider.ts +86 -18
  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 +1 -1
  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 +619 -23
  56. package/src/browser/services/RenderService.ts +33 -21
  57. package/src/browser/services/SelectionService.ts +72 -54
  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 +61 -35
  64. package/src/common/Event.ts +118 -0
  65. package/src/common/InputHandler.ts +286 -105
  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 +1 -1
  73. package/src/common/WindowsMode.ts +2 -2
  74. package/src/common/buffer/AttributeData.ts +3 -2
  75. package/src/common/buffer/Buffer.ts +47 -32
  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 +4 -7
  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 -7
  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 -50
  116. package/src/common/services/UnicodeService.ts +6 -11
  117. package/typings/xterm.d.ts +329 -34
  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
@@ -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,6 +207,7 @@ 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;
@@ -247,10 +228,12 @@ export interface ITerminalOptions {
247
228
  macOptionIsMeta?: boolean;
248
229
  macOptionClickForcesSelection?: boolean;
249
230
  minimumContrastRatio?: number;
231
+ mouseEventsRequireAlt?: boolean;
250
232
  reflowCursorLine?: boolean;
251
233
  rescaleOverlappingGlyphs?: boolean;
252
234
  rightClickSelectsWord?: boolean;
253
235
  rows?: number;
236
+ showCursorImmediately?: boolean;
254
237
  screenReaderMode?: boolean;
255
238
  scrollback?: number;
256
239
  scrollOnUserInput?: boolean;
@@ -261,11 +244,12 @@ export interface ITerminalOptions {
261
244
  windowsPty?: IWindowsPty;
262
245
  windowOptions?: IWindowOptions;
263
246
  wordSeparator?: string;
264
- overviewRuler?: IOverviewRulerOptions;
247
+ quirks?: ITerminalQuirks;
248
+ scrollbar?: IScrollbarOptions;
265
249
  scrollOnEraseInDisplay?: boolean;
250
+ vtExtensions?: IVtExtensions;
266
251
 
267
252
  [key: string]: any;
268
- cancelEvents: boolean;
269
253
  termName: string;
270
254
  }
271
255
 
@@ -300,6 +284,24 @@ export interface ITheme {
300
284
  extendedAnsi?: string[];
301
285
  }
302
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
+
303
305
  export const IOscLinkService = createDecorator<IOscLinkService>('OscLinkService');
304
306
  export interface IOscLinkService {
305
307
  serviceBrand: undefined;
@@ -342,14 +344,14 @@ export type UnicodeCharWidth = 0 | 1 | 2;
342
344
  export const IUnicodeService = createDecorator<IUnicodeService>('UnicodeService');
343
345
  export interface IUnicodeService {
344
346
  serviceBrand: undefined;
345
- /** Register an Unicode version provider. */
347
+ /** Register a Unicode version provider. */
346
348
  register(provider: IUnicodeVersionProvider): void;
347
349
  /** Registered Unicode versions. */
348
350
  readonly versions: string[];
349
351
  /** Currently active version. */
350
352
  activeVersion: string;
351
- /** Event triggered, when activate version changed. */
352
- readonly onChange: Event<string>;
353
+ /** Event triggered when the active version changes. */
354
+ readonly onChange: IEvent<string>;
353
355
 
354
356
  /**
355
357
  * Unicode version dependent
@@ -374,8 +376,8 @@ export const IDecorationService = createDecorator<IDecorationService>('Decoratio
374
376
  export interface IDecorationService extends IDisposable {
375
377
  serviceBrand: undefined;
376
378
  readonly decorations: IterableIterator<IInternalDecoration>;
377
- readonly onDecorationRegistered: Event<IInternalDecoration>;
378
- readonly onDecorationRemoved: Event<IInternalDecoration>;
379
+ readonly onDecorationRegistered: IEvent<IInternalDecoration>;
380
+ readonly onDecorationRemoved: IEvent<IInternalDecoration>;
379
381
  registerDecoration(decorationOptions: IDecorationOptions): IDecoration | undefined;
380
382
  reset(): void;
381
383
  /**
@@ -389,4 +391,6 @@ export interface IInternalDecoration extends IDecoration {
389
391
  readonly backgroundColorRGB: IColor | undefined;
390
392
  readonly foregroundColorRGB: IColor | undefined;
391
393
  readonly onRenderEmitter: Emitter<HTMLElement>;
394
+ /** @internal Start line for line-index removal; kept in sync on buffer line shifts. */
395
+ _indexedStartLine: number;
392
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
  /**