@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.
- package/README.md +62 -38
- package/css/xterm.css +29 -22
- package/lib/xterm.js +1 -1
- package/lib/xterm.js.map +1 -1
- package/lib/xterm.mjs +8 -34
- package/lib/xterm.mjs.map +4 -4
- package/package.json +56 -45
- package/src/browser/AccessibilityManager.ts +18 -13
- package/src/browser/Clipboard.ts +8 -5
- package/src/browser/ColorContrastCache.ts +3 -3
- package/src/browser/CoreBrowserTerminal.ts +179 -348
- package/src/browser/Dom.ts +178 -0
- package/src/browser/Linkifier.ts +14 -14
- package/src/browser/OscLinkProvider.ts +86 -18
- package/src/browser/RenderDebouncer.ts +7 -9
- package/src/browser/TimeBasedDebouncer.ts +12 -5
- package/src/browser/Types.ts +16 -14
- package/src/browser/Viewport.ts +58 -23
- package/src/browser/decorations/BufferDecorationRenderer.ts +3 -3
- package/src/browser/decorations/ColorZoneStore.ts +1 -1
- package/src/browser/decorations/OverviewRulerRenderer.ts +36 -20
- package/src/browser/input/CompositionHelper.ts +47 -11
- package/src/browser/input/Mouse.ts +5 -9
- package/src/browser/input/MoveToCell.ts +3 -3
- package/src/browser/public/Terminal.ts +33 -36
- package/src/browser/renderer/dom/DomRenderer.ts +265 -89
- package/src/browser/renderer/dom/DomRendererRowFactory.ts +34 -27
- package/src/browser/renderer/dom/WidthCache.ts +57 -55
- package/src/browser/renderer/shared/Constants.ts +7 -0
- package/src/browser/renderer/shared/RendererUtils.ts +1 -1
- package/src/browser/renderer/shared/SelectionRenderModel.ts +2 -2
- package/src/browser/renderer/shared/TextBlinkStateManager.ts +97 -0
- package/src/browser/renderer/shared/Types.ts +10 -4
- package/src/browser/scrollable/abstractScrollbar.ts +300 -0
- package/src/browser/scrollable/fastDomNode.ts +126 -0
- package/src/browser/scrollable/globalPointerMoveMonitor.ts +90 -0
- package/src/browser/scrollable/horizontalScrollbar.ts +85 -0
- package/src/browser/scrollable/mouseEvent.ts +292 -0
- package/src/browser/scrollable/scrollable.ts +486 -0
- package/src/browser/scrollable/scrollableElement.ts +581 -0
- package/src/browser/scrollable/scrollableElementOptions.ts +161 -0
- package/src/browser/scrollable/scrollbarArrow.ts +110 -0
- package/src/browser/scrollable/scrollbarState.ts +246 -0
- package/src/browser/scrollable/scrollbarVisibilityController.ts +113 -0
- package/src/browser/scrollable/touch.ts +485 -0
- package/src/browser/scrollable/verticalScrollbar.ts +143 -0
- package/src/browser/scrollable/widget.ts +23 -0
- package/src/browser/selection/SelectionModel.ts +1 -1
- package/src/browser/services/CharSizeService.ts +4 -4
- package/src/browser/services/CharacterJoinerService.ts +13 -11
- package/src/browser/services/CoreBrowserService.ts +7 -5
- package/src/browser/services/KeyboardService.ts +67 -0
- package/src/browser/services/LinkProviderService.ts +3 -3
- package/src/browser/services/MouseCoordsService.ts +47 -0
- package/src/browser/services/MouseService.ts +619 -23
- package/src/browser/services/RenderService.ts +33 -21
- package/src/browser/services/SelectionService.ts +72 -54
- package/src/browser/services/Services.ts +44 -21
- package/src/browser/services/ThemeService.ts +9 -9
- package/src/common/Async.ts +141 -0
- package/src/common/CircularList.ts +24 -3
- package/src/common/Color.ts +13 -5
- package/src/common/CoreTerminal.ts +61 -35
- package/src/common/Event.ts +118 -0
- package/src/common/InputHandler.ts +286 -105
- package/src/common/Lifecycle.ts +113 -0
- package/src/common/Platform.ts +15 -5
- package/src/common/SortedList.ts +8 -4
- package/src/common/StringBuilder.ts +67 -0
- package/src/common/TaskQueue.ts +17 -8
- package/src/common/Types.ts +68 -206
- package/src/common/Version.ts +1 -1
- package/src/common/WindowsMode.ts +2 -2
- package/src/common/buffer/AttributeData.ts +3 -2
- package/src/common/buffer/Buffer.ts +47 -32
- package/src/common/buffer/BufferLine.ts +175 -100
- package/src/common/buffer/BufferLineStringCache.ts +69 -0
- package/src/common/buffer/BufferReflow.ts +7 -4
- package/src/common/buffer/BufferSet.ts +13 -9
- package/src/common/buffer/CellData.ts +61 -4
- package/src/common/buffer/Constants.ts +13 -13
- package/src/common/buffer/Marker.ts +4 -4
- package/src/common/buffer/Types.ts +153 -3
- package/src/common/data/Charsets.ts +4 -7
- package/src/common/data/EscapeSequences.ts +71 -70
- package/src/common/input/Keyboard.ts +17 -10
- package/src/common/input/KittyKeyboard.ts +526 -0
- package/src/common/input/TextDecoder.ts +3 -3
- package/src/common/input/UnicodeV6.ts +3 -2
- package/src/common/input/Win32InputMode.ts +297 -0
- package/src/common/input/WriteBuffer.ts +108 -39
- package/src/common/input/XParseColor.ts +2 -2
- package/src/common/parser/ApcParser.ts +196 -0
- package/src/common/parser/Constants.ts +14 -4
- package/src/common/parser/DcsParser.ts +15 -16
- package/src/common/parser/EscapeSequenceParser.ts +214 -72
- package/src/common/parser/OscParser.ts +14 -15
- package/src/common/parser/Params.ts +31 -12
- package/src/common/parser/Types.ts +40 -30
- package/src/common/public/BufferApiView.ts +3 -3
- package/src/common/public/BufferLineApiView.ts +4 -4
- package/src/common/public/BufferNamespaceApi.ts +5 -5
- package/src/common/public/ParserApi.ts +5 -2
- package/src/common/public/UnicodeApi.ts +1 -1
- package/src/common/services/BufferService.ts +17 -13
- package/src/common/services/CharsetService.ts +6 -2
- package/src/common/services/CoreService.ts +23 -10
- package/src/common/services/DecorationService.ts +260 -15
- package/src/common/services/InstantiationService.ts +2 -2
- package/src/common/services/LogService.ts +2 -32
- package/src/common/services/{CoreMouseService.ts → MouseStateService.ts} +22 -133
- package/src/common/services/OptionsService.ts +17 -7
- package/src/common/services/OscLinkService.ts +3 -2
- package/src/common/services/ServiceRegistry.ts +14 -8
- package/src/common/services/Services.ts +54 -50
- package/src/common/services/UnicodeService.ts +6 -11
- package/typings/xterm.d.ts +329 -34
- package/src/common/Clone.ts +0 -23
- package/src/common/TypedArrayUtils.ts +0 -17
- package/src/vs/base/browser/browser.ts +0 -141
- package/src/vs/base/browser/canIUse.ts +0 -49
- package/src/vs/base/browser/dom.ts +0 -2369
- package/src/vs/base/browser/fastDomNode.ts +0 -316
- package/src/vs/base/browser/globalPointerMoveMonitor.ts +0 -112
- package/src/vs/base/browser/iframe.ts +0 -135
- package/src/vs/base/browser/keyboardEvent.ts +0 -213
- package/src/vs/base/browser/mouseEvent.ts +0 -229
- package/src/vs/base/browser/touch.ts +0 -372
- package/src/vs/base/browser/ui/scrollbar/abstractScrollbar.ts +0 -303
- package/src/vs/base/browser/ui/scrollbar/horizontalScrollbar.ts +0 -114
- package/src/vs/base/browser/ui/scrollbar/scrollableElement.ts +0 -720
- package/src/vs/base/browser/ui/scrollbar/scrollableElementOptions.ts +0 -165
- package/src/vs/base/browser/ui/scrollbar/scrollbarArrow.ts +0 -114
- package/src/vs/base/browser/ui/scrollbar/scrollbarState.ts +0 -243
- package/src/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.ts +0 -118
- package/src/vs/base/browser/ui/scrollbar/verticalScrollbar.ts +0 -116
- package/src/vs/base/browser/ui/widget.ts +0 -57
- package/src/vs/base/browser/window.ts +0 -14
- package/src/vs/base/common/arrays.ts +0 -887
- package/src/vs/base/common/arraysFind.ts +0 -202
- package/src/vs/base/common/assert.ts +0 -71
- package/src/vs/base/common/async.ts +0 -1992
- package/src/vs/base/common/cancellation.ts +0 -148
- package/src/vs/base/common/charCode.ts +0 -450
- package/src/vs/base/common/collections.ts +0 -140
- package/src/vs/base/common/decorators.ts +0 -130
- package/src/vs/base/common/equals.ts +0 -146
- package/src/vs/base/common/errors.ts +0 -303
- package/src/vs/base/common/event.ts +0 -1778
- package/src/vs/base/common/functional.ts +0 -32
- package/src/vs/base/common/hash.ts +0 -316
- package/src/vs/base/common/iterator.ts +0 -159
- package/src/vs/base/common/keyCodes.ts +0 -526
- package/src/vs/base/common/keybindings.ts +0 -284
- package/src/vs/base/common/lazy.ts +0 -47
- package/src/vs/base/common/lifecycle.ts +0 -801
- package/src/vs/base/common/linkedList.ts +0 -142
- package/src/vs/base/common/map.ts +0 -202
- package/src/vs/base/common/numbers.ts +0 -98
- package/src/vs/base/common/observable.ts +0 -76
- package/src/vs/base/common/observableInternal/api.ts +0 -31
- package/src/vs/base/common/observableInternal/autorun.ts +0 -281
- package/src/vs/base/common/observableInternal/base.ts +0 -489
- package/src/vs/base/common/observableInternal/debugName.ts +0 -145
- package/src/vs/base/common/observableInternal/derived.ts +0 -428
- package/src/vs/base/common/observableInternal/lazyObservableValue.ts +0 -146
- package/src/vs/base/common/observableInternal/logging.ts +0 -328
- package/src/vs/base/common/observableInternal/promise.ts +0 -209
- package/src/vs/base/common/observableInternal/utils.ts +0 -610
- package/src/vs/base/common/platform.ts +0 -281
- package/src/vs/base/common/scrollable.ts +0 -522
- package/src/vs/base/common/sequence.ts +0 -34
- package/src/vs/base/common/stopwatch.ts +0 -43
- package/src/vs/base/common/strings.ts +0 -557
- package/src/vs/base/common/symbols.ts +0 -9
- package/src/vs/base/common/uint.ts +0 -59
- package/src/vs/patches/nls.ts +0 -90
- package/src/vs/typings/base-common.d.ts +0 -20
- package/src/vs/typings/require.d.ts +0 -42
- package/src/vs/typings/vscode-globals-nls.d.ts +0 -36
- 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
|
-
|
|
12
|
+
export interface IServiceIdentifier<T> {
|
|
13
|
+
(...args: any[]): void;
|
|
14
|
+
type: T;
|
|
15
|
+
_id: string;
|
|
16
|
+
}
|
|
13
17
|
|
|
14
|
-
const
|
|
15
|
-
|
|
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,
|
|
7
|
-
import { CoreMouseEncoding, CoreMouseEventType, CursorInactiveStyle, CursorStyle,
|
|
8
|
-
import { IBuffer, IBufferSet } from '
|
|
9
|
-
import { createDecorator } from '
|
|
10
|
-
import type { Emitter,
|
|
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:
|
|
22
|
-
onScroll:
|
|
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
|
|
37
|
-
export interface
|
|
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:
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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:
|
|
90
|
-
readonly onUserInput:
|
|
91
|
-
readonly onBinary:
|
|
92
|
-
readonly onRequestScrollToBottom:
|
|
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:
|
|
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
|
-
|
|
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
|
|
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
|
|
352
|
-
readonly onChange:
|
|
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:
|
|
378
|
-
readonly onDecorationRemoved:
|
|
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 {
|
|
7
|
-
import {
|
|
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
|
|
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
|
/**
|