@xterm/xterm 6.1.0-beta.26 → 6.1.0-beta.261

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 (179) 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 -48
  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 +177 -346
  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 +4 -4
  16. package/src/browser/TimeBasedDebouncer.ts +3 -3
  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/MoveToCell.ts +2 -2
  24. package/src/browser/public/Terminal.ts +33 -36
  25. package/src/browser/renderer/dom/DomRenderer.ts +251 -85
  26. package/src/browser/renderer/dom/DomRendererRowFactory.ts +34 -27
  27. package/src/browser/renderer/dom/WidthCache.ts +57 -55
  28. package/src/browser/renderer/shared/Constants.ts +7 -0
  29. package/src/browser/renderer/shared/RendererUtils.ts +1 -1
  30. package/src/browser/renderer/shared/SelectionRenderModel.ts +2 -2
  31. package/src/browser/renderer/shared/TextBlinkStateManager.ts +97 -0
  32. package/src/browser/renderer/shared/Types.ts +10 -4
  33. package/src/browser/scrollable/abstractScrollbar.ts +300 -0
  34. package/src/browser/scrollable/fastDomNode.ts +126 -0
  35. package/src/browser/scrollable/globalPointerMoveMonitor.ts +90 -0
  36. package/src/browser/scrollable/horizontalScrollbar.ts +85 -0
  37. package/src/browser/scrollable/mouseEvent.ts +292 -0
  38. package/src/browser/scrollable/scrollable.ts +486 -0
  39. package/src/browser/scrollable/scrollableElement.ts +581 -0
  40. package/src/browser/scrollable/scrollableElementOptions.ts +161 -0
  41. package/src/browser/scrollable/scrollbarArrow.ts +110 -0
  42. package/src/browser/scrollable/scrollbarState.ts +246 -0
  43. package/src/browser/scrollable/scrollbarVisibilityController.ts +113 -0
  44. package/src/browser/scrollable/touch.ts +485 -0
  45. package/src/browser/scrollable/verticalScrollbar.ts +143 -0
  46. package/src/browser/scrollable/widget.ts +23 -0
  47. package/src/browser/selection/SelectionModel.ts +1 -1
  48. package/src/browser/services/CharSizeService.ts +4 -4
  49. package/src/browser/services/CharacterJoinerService.ts +7 -7
  50. package/src/browser/services/CoreBrowserService.ts +7 -5
  51. package/src/browser/services/KeyboardService.ts +67 -0
  52. package/src/browser/services/LinkProviderService.ts +3 -3
  53. package/src/browser/services/MouseCoordsService.ts +47 -0
  54. package/src/browser/services/MouseService.ts +619 -23
  55. package/src/browser/services/RenderService.ts +33 -21
  56. package/src/browser/services/SelectionService.ts +72 -54
  57. package/src/browser/services/Services.ts +44 -21
  58. package/src/browser/services/ThemeService.ts +8 -8
  59. package/src/common/Async.ts +141 -0
  60. package/src/common/CircularList.ts +24 -3
  61. package/src/common/Color.ts +9 -1
  62. package/src/common/CoreTerminal.ts +61 -35
  63. package/src/common/Event.ts +118 -0
  64. package/src/common/InputHandler.ts +301 -102
  65. package/src/common/Lifecycle.ts +113 -0
  66. package/src/common/Platform.ts +13 -3
  67. package/src/common/SortedList.ts +8 -4
  68. package/src/common/StringBuilder.ts +67 -0
  69. package/src/common/TaskQueue.ts +16 -7
  70. package/src/common/Types.ts +67 -205
  71. package/src/common/Version.ts +9 -0
  72. package/src/common/WindowsMode.ts +2 -2
  73. package/src/common/buffer/AttributeData.ts +3 -2
  74. package/src/common/buffer/Buffer.ts +45 -30
  75. package/src/common/buffer/BufferLine.ts +145 -73
  76. package/src/common/buffer/BufferLineStringCache.ts +69 -0
  77. package/src/common/buffer/BufferReflow.ts +7 -4
  78. package/src/common/buffer/BufferSet.ts +13 -9
  79. package/src/common/buffer/CellData.ts +61 -4
  80. package/src/common/buffer/Marker.ts +3 -3
  81. package/src/common/buffer/Types.ts +153 -3
  82. package/src/common/data/Charsets.ts +4 -7
  83. package/src/common/data/EscapeSequences.ts +71 -70
  84. package/src/common/input/Keyboard.ts +16 -9
  85. package/src/common/input/KittyKeyboard.ts +526 -0
  86. package/src/common/input/TextDecoder.ts +1 -1
  87. package/src/common/input/UnicodeV6.ts +3 -2
  88. package/src/common/input/Win32InputMode.ts +297 -0
  89. package/src/common/input/WriteBuffer.ts +107 -38
  90. package/src/common/input/XParseColor.ts +2 -2
  91. package/src/common/parser/ApcParser.ts +196 -0
  92. package/src/common/parser/Constants.ts +14 -4
  93. package/src/common/parser/DcsParser.ts +15 -16
  94. package/src/common/parser/EscapeSequenceParser.ts +212 -70
  95. package/src/common/parser/OscParser.ts +14 -15
  96. package/src/common/parser/Params.ts +28 -9
  97. package/src/common/parser/Types.ts +38 -28
  98. package/src/common/public/BufferApiView.ts +3 -3
  99. package/src/common/public/BufferLineApiView.ts +4 -4
  100. package/src/common/public/BufferNamespaceApi.ts +5 -5
  101. package/src/common/public/ParserApi.ts +5 -2
  102. package/src/common/public/UnicodeApi.ts +1 -1
  103. package/src/common/services/BufferService.ts +17 -13
  104. package/src/common/services/CharsetService.ts +6 -2
  105. package/src/common/services/CoreService.ts +23 -10
  106. package/src/common/services/DecorationService.ts +260 -15
  107. package/src/common/services/InstantiationService.ts +2 -2
  108. package/src/common/services/LogService.ts +2 -32
  109. package/src/common/services/{CoreMouseService.ts → MouseStateService.ts} +22 -133
  110. package/src/common/services/OptionsService.ts +17 -7
  111. package/src/common/services/OscLinkService.ts +3 -2
  112. package/src/common/services/ServiceRegistry.ts +14 -8
  113. package/src/common/services/Services.ts +52 -48
  114. package/src/common/services/UnicodeService.ts +6 -11
  115. package/typings/xterm.d.ts +329 -34
  116. package/src/common/Clone.ts +0 -23
  117. package/src/common/TypedArrayUtils.ts +0 -17
  118. package/src/vs/base/browser/browser.ts +0 -141
  119. package/src/vs/base/browser/canIUse.ts +0 -49
  120. package/src/vs/base/browser/dom.ts +0 -2369
  121. package/src/vs/base/browser/fastDomNode.ts +0 -316
  122. package/src/vs/base/browser/globalPointerMoveMonitor.ts +0 -112
  123. package/src/vs/base/browser/iframe.ts +0 -135
  124. package/src/vs/base/browser/keyboardEvent.ts +0 -213
  125. package/src/vs/base/browser/mouseEvent.ts +0 -229
  126. package/src/vs/base/browser/touch.ts +0 -372
  127. package/src/vs/base/browser/ui/scrollbar/abstractScrollbar.ts +0 -303
  128. package/src/vs/base/browser/ui/scrollbar/horizontalScrollbar.ts +0 -114
  129. package/src/vs/base/browser/ui/scrollbar/scrollableElement.ts +0 -720
  130. package/src/vs/base/browser/ui/scrollbar/scrollableElementOptions.ts +0 -165
  131. package/src/vs/base/browser/ui/scrollbar/scrollbarArrow.ts +0 -114
  132. package/src/vs/base/browser/ui/scrollbar/scrollbarState.ts +0 -243
  133. package/src/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.ts +0 -118
  134. package/src/vs/base/browser/ui/scrollbar/verticalScrollbar.ts +0 -116
  135. package/src/vs/base/browser/ui/widget.ts +0 -57
  136. package/src/vs/base/browser/window.ts +0 -14
  137. package/src/vs/base/common/arrays.ts +0 -887
  138. package/src/vs/base/common/arraysFind.ts +0 -202
  139. package/src/vs/base/common/assert.ts +0 -71
  140. package/src/vs/base/common/async.ts +0 -1992
  141. package/src/vs/base/common/cancellation.ts +0 -148
  142. package/src/vs/base/common/charCode.ts +0 -450
  143. package/src/vs/base/common/collections.ts +0 -140
  144. package/src/vs/base/common/decorators.ts +0 -130
  145. package/src/vs/base/common/equals.ts +0 -146
  146. package/src/vs/base/common/errors.ts +0 -303
  147. package/src/vs/base/common/event.ts +0 -1778
  148. package/src/vs/base/common/functional.ts +0 -32
  149. package/src/vs/base/common/hash.ts +0 -316
  150. package/src/vs/base/common/iterator.ts +0 -159
  151. package/src/vs/base/common/keyCodes.ts +0 -526
  152. package/src/vs/base/common/keybindings.ts +0 -284
  153. package/src/vs/base/common/lazy.ts +0 -47
  154. package/src/vs/base/common/lifecycle.ts +0 -801
  155. package/src/vs/base/common/linkedList.ts +0 -142
  156. package/src/vs/base/common/map.ts +0 -202
  157. package/src/vs/base/common/numbers.ts +0 -98
  158. package/src/vs/base/common/observable.ts +0 -76
  159. package/src/vs/base/common/observableInternal/api.ts +0 -31
  160. package/src/vs/base/common/observableInternal/autorun.ts +0 -281
  161. package/src/vs/base/common/observableInternal/base.ts +0 -489
  162. package/src/vs/base/common/observableInternal/debugName.ts +0 -145
  163. package/src/vs/base/common/observableInternal/derived.ts +0 -428
  164. package/src/vs/base/common/observableInternal/lazyObservableValue.ts +0 -146
  165. package/src/vs/base/common/observableInternal/logging.ts +0 -328
  166. package/src/vs/base/common/observableInternal/promise.ts +0 -209
  167. package/src/vs/base/common/observableInternal/utils.ts +0 -610
  168. package/src/vs/base/common/platform.ts +0 -281
  169. package/src/vs/base/common/scrollable.ts +0 -522
  170. package/src/vs/base/common/sequence.ts +0 -34
  171. package/src/vs/base/common/stopwatch.ts +0 -43
  172. package/src/vs/base/common/strings.ts +0 -557
  173. package/src/vs/base/common/symbols.ts +0 -9
  174. package/src/vs/base/common/uint.ts +0 -59
  175. package/src/vs/patches/nls.ts +0 -90
  176. package/src/vs/typings/base-common.d.ts +0 -20
  177. package/src/vs/typings/require.d.ts +0 -42
  178. package/src/vs/typings/vscode-globals-nls.d.ts +0 -36
  179. 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;
@@ -349,7 +351,7 @@ export interface IUnicodeService {
349
351
  /** Currently active version. */
350
352
  activeVersion: string;
351
353
  /** Event triggered, when activate version changed. */
352
- readonly onChange: Event<string>;
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
  /**