@xterm/xterm 5.6.0-beta.6 → 5.6.0-beta.61
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 +7 -3
- package/css/xterm.css +71 -4
- package/lib/xterm.js +1 -1
- package/lib/xterm.js.map +1 -1
- package/lib/xterm.mjs +53 -0
- package/lib/xterm.mjs.map +7 -0
- package/package.json +43 -33
- package/src/browser/AccessibilityManager.ts +53 -25
- package/src/browser/{Terminal.ts → CoreBrowserTerminal.ts} +132 -144
- package/src/browser/Linkifier.ts +15 -13
- package/src/browser/LocalizableStrings.ts +15 -4
- package/src/browser/{Types.d.ts → Types.ts} +67 -15
- package/src/browser/Viewport.ts +142 -370
- package/src/browser/decorations/BufferDecorationRenderer.ts +14 -9
- package/src/browser/decorations/OverviewRulerRenderer.ts +40 -44
- package/src/browser/public/Terminal.ts +25 -19
- package/src/browser/renderer/dom/DomRenderer.ts +14 -16
- package/src/browser/renderer/shared/CharAtlasUtils.ts +4 -0
- package/src/browser/renderer/shared/CustomGlyphs.ts +6 -0
- package/src/browser/renderer/shared/DevicePixelObserver.ts +1 -2
- package/src/browser/renderer/shared/TextureAtlas.ts +3 -3
- package/src/browser/renderer/shared/{Types.d.ts → Types.ts} +4 -4
- package/src/browser/services/CharSizeService.ts +6 -6
- package/src/browser/services/CoreBrowserService.ts +15 -15
- package/src/browser/services/LinkProviderService.ts +2 -2
- package/src/browser/services/RenderService.ts +20 -20
- package/src/browser/services/SelectionService.ts +8 -8
- package/src/browser/services/Services.ts +13 -13
- package/src/browser/services/ThemeService.ts +17 -56
- package/src/browser/shared/Constants.ts +8 -0
- package/src/common/CircularList.ts +5 -5
- package/src/common/CoreTerminal.ts +35 -41
- package/src/common/InputHandler.ts +34 -28
- package/src/common/{Types.d.ts → Types.ts} +11 -17
- package/src/common/buffer/Buffer.ts +5 -1
- package/src/common/buffer/BufferSet.ts +5 -5
- package/src/common/buffer/Marker.ts +4 -4
- package/src/common/buffer/{Types.d.ts → Types.ts} +2 -2
- package/src/common/input/WriteBuffer.ts +3 -3
- package/src/common/parser/EscapeSequenceParser.ts +4 -4
- package/src/common/public/BufferNamespaceApi.ts +3 -3
- package/src/common/services/BufferService.ts +7 -7
- package/src/common/services/CoreMouseService.ts +5 -3
- package/src/common/services/CoreService.ts +6 -6
- package/src/common/services/DecorationService.ts +8 -9
- package/src/common/services/LogService.ts +2 -2
- package/src/common/services/OptionsService.ts +5 -5
- package/src/common/services/Services.ts +24 -17
- package/src/common/services/UnicodeService.ts +2 -2
- package/src/vs/base/browser/browser.ts +141 -0
- package/src/vs/base/browser/canIUse.ts +49 -0
- package/src/vs/base/browser/dom.ts +2369 -0
- package/src/vs/base/browser/fastDomNode.ts +316 -0
- package/src/vs/base/browser/globalPointerMoveMonitor.ts +112 -0
- package/src/vs/base/browser/iframe.ts +135 -0
- package/src/vs/base/browser/keyboardEvent.ts +213 -0
- package/src/vs/base/browser/mouseEvent.ts +229 -0
- package/src/vs/base/browser/touch.ts +372 -0
- package/src/vs/base/browser/ui/scrollbar/abstractScrollbar.ts +303 -0
- package/src/vs/base/browser/ui/scrollbar/horizontalScrollbar.ts +114 -0
- package/src/vs/base/browser/ui/scrollbar/scrollableElement.ts +720 -0
- package/src/vs/base/browser/ui/scrollbar/scrollableElementOptions.ts +165 -0
- package/src/vs/base/browser/ui/scrollbar/scrollbarArrow.ts +114 -0
- package/src/vs/base/browser/ui/scrollbar/scrollbarState.ts +243 -0
- package/src/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.ts +118 -0
- package/src/vs/base/browser/ui/scrollbar/verticalScrollbar.ts +116 -0
- package/src/vs/base/browser/ui/widget.ts +57 -0
- package/src/vs/base/browser/window.ts +14 -0
- package/src/vs/base/common/arrays.ts +887 -0
- package/src/vs/base/common/arraysFind.ts +202 -0
- package/src/vs/base/common/assert.ts +71 -0
- package/src/vs/base/common/async.ts +1992 -0
- package/src/vs/base/common/cancellation.ts +148 -0
- package/src/vs/base/common/charCode.ts +450 -0
- package/src/vs/base/common/collections.ts +140 -0
- package/src/vs/base/common/decorators.ts +130 -0
- package/src/vs/base/common/equals.ts +146 -0
- package/src/vs/base/common/errors.ts +303 -0
- package/src/vs/base/common/event.ts +1778 -0
- package/src/vs/base/common/functional.ts +32 -0
- package/src/vs/base/common/hash.ts +316 -0
- package/src/vs/base/common/iterator.ts +159 -0
- package/src/vs/base/common/keyCodes.ts +526 -0
- package/src/vs/base/common/keybindings.ts +284 -0
- package/src/vs/base/common/lazy.ts +47 -0
- package/src/vs/base/common/lifecycle.ts +801 -0
- package/src/vs/base/common/linkedList.ts +142 -0
- package/src/vs/base/common/map.ts +202 -0
- package/src/vs/base/common/numbers.ts +98 -0
- package/src/vs/base/common/observable.ts +76 -0
- package/src/vs/base/common/observableInternal/api.ts +31 -0
- package/src/vs/base/common/observableInternal/autorun.ts +281 -0
- package/src/vs/base/common/observableInternal/base.ts +489 -0
- package/src/vs/base/common/observableInternal/debugName.ts +145 -0
- package/src/vs/base/common/observableInternal/derived.ts +428 -0
- package/src/vs/base/common/observableInternal/lazyObservableValue.ts +146 -0
- package/src/vs/base/common/observableInternal/logging.ts +328 -0
- package/src/vs/base/common/observableInternal/promise.ts +209 -0
- package/src/vs/base/common/observableInternal/utils.ts +610 -0
- package/src/vs/base/common/platform.ts +281 -0
- package/src/vs/base/common/scrollable.ts +522 -0
- package/src/vs/base/common/sequence.ts +34 -0
- package/src/vs/base/common/stopwatch.ts +43 -0
- package/src/vs/base/common/strings.ts +557 -0
- package/src/vs/base/common/symbols.ts +9 -0
- package/src/vs/base/common/uint.ts +59 -0
- package/src/vs/patches/nls.ts +90 -0
- package/src/vs/typings/base-common.d.ts +20 -0
- package/src/vs/typings/require.d.ts +42 -0
- package/src/vs/typings/thenable.d.ts +12 -0
- package/src/vs/typings/vscode-globals-nls.d.ts +36 -0
- package/src/vs/typings/vscode-globals-product.d.ts +33 -0
- package/typings/xterm.d.ts +59 -15
- package/src/browser/Lifecycle.ts +0 -33
- package/src/common/EventEmitter.ts +0 -78
- package/src/common/Lifecycle.ts +0 -108
- /package/src/browser/selection/{Types.d.ts → Types.ts} +0 -0
- /package/src/common/parser/{Types.d.ts → Types.ts} +0 -0
|
@@ -8,10 +8,9 @@ import { IInputHandler, IAttributeData, IDisposable, IWindowOptions, IColorEvent
|
|
|
8
8
|
import { C0, C1 } from 'common/data/EscapeSequences';
|
|
9
9
|
import { CHARSETS, DEFAULT_CHARSET } from 'common/data/Charsets';
|
|
10
10
|
import { EscapeSequenceParser } from 'common/parser/EscapeSequenceParser';
|
|
11
|
-
import { Disposable } from 'common/
|
|
11
|
+
import { Disposable } from 'vs/base/common/lifecycle';
|
|
12
12
|
import { StringToUtf32, stringFromCodePoint, Utf8ToUtf32 } from 'common/input/TextDecoder';
|
|
13
13
|
import { BufferLine, DEFAULT_ATTR_DATA } from 'common/buffer/BufferLine';
|
|
14
|
-
import { EventEmitter } from 'common/EventEmitter';
|
|
15
14
|
import { IParsingState, IEscapeSequenceParser, IParams, IFunctionIdentifier } from 'common/parser/Types';
|
|
16
15
|
import { NULL_CELL_CODE, NULL_CELL_WIDTH, Attributes, FgFlags, BgFlags, Content, UnderlineStyle } from 'common/buffer/Constants';
|
|
17
16
|
import { CellData } from 'common/buffer/CellData';
|
|
@@ -22,6 +21,7 @@ import { OscHandler } from 'common/parser/OscParser';
|
|
|
22
21
|
import { DcsHandler } from 'common/parser/DcsParser';
|
|
23
22
|
import { IBuffer } from 'common/buffer/Types';
|
|
24
23
|
import { parseColor } from 'common/input/XParseColor';
|
|
24
|
+
import { Emitter } from 'vs/base/common/event';
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
27
|
* Map collect to glevel. Used in `selectCharset`.
|
|
@@ -119,7 +119,6 @@ export class InputHandler extends Disposable implements IInputHandler {
|
|
|
119
119
|
private _parseBuffer: Uint32Array = new Uint32Array(4096);
|
|
120
120
|
private _stringDecoder: StringToUtf32 = new StringToUtf32();
|
|
121
121
|
private _utf8Decoder: Utf8ToUtf32 = new Utf8ToUtf32();
|
|
122
|
-
private _workCell: CellData = new CellData();
|
|
123
122
|
private _windowTitle = '';
|
|
124
123
|
private _iconName = '';
|
|
125
124
|
private _dirtyRowTracker: IDirtyRowTracker;
|
|
@@ -132,32 +131,32 @@ export class InputHandler extends Disposable implements IInputHandler {
|
|
|
132
131
|
|
|
133
132
|
private _activeBuffer: IBuffer;
|
|
134
133
|
|
|
135
|
-
private readonly _onRequestBell = this.
|
|
134
|
+
private readonly _onRequestBell = this._register(new Emitter<void>());
|
|
136
135
|
public readonly onRequestBell = this._onRequestBell.event;
|
|
137
|
-
private readonly _onRequestRefreshRows = this.
|
|
136
|
+
private readonly _onRequestRefreshRows = this._register(new Emitter<{ start: number, end: number } | undefined>());
|
|
138
137
|
public readonly onRequestRefreshRows = this._onRequestRefreshRows.event;
|
|
139
|
-
private readonly _onRequestReset = this.
|
|
138
|
+
private readonly _onRequestReset = this._register(new Emitter<void>());
|
|
140
139
|
public readonly onRequestReset = this._onRequestReset.event;
|
|
141
|
-
private readonly _onRequestSendFocus = this.
|
|
140
|
+
private readonly _onRequestSendFocus = this._register(new Emitter<void>());
|
|
142
141
|
public readonly onRequestSendFocus = this._onRequestSendFocus.event;
|
|
143
|
-
private readonly _onRequestSyncScrollBar = this.
|
|
142
|
+
private readonly _onRequestSyncScrollBar = this._register(new Emitter<void>());
|
|
144
143
|
public readonly onRequestSyncScrollBar = this._onRequestSyncScrollBar.event;
|
|
145
|
-
private readonly _onRequestWindowsOptionsReport = this.
|
|
144
|
+
private readonly _onRequestWindowsOptionsReport = this._register(new Emitter<WindowsOptionsReportType>());
|
|
146
145
|
public readonly onRequestWindowsOptionsReport = this._onRequestWindowsOptionsReport.event;
|
|
147
146
|
|
|
148
|
-
private readonly _onA11yChar = this.
|
|
147
|
+
private readonly _onA11yChar = this._register(new Emitter<string>());
|
|
149
148
|
public readonly onA11yChar = this._onA11yChar.event;
|
|
150
|
-
private readonly _onA11yTab = this.
|
|
149
|
+
private readonly _onA11yTab = this._register(new Emitter<number>());
|
|
151
150
|
public readonly onA11yTab = this._onA11yTab.event;
|
|
152
|
-
private readonly _onCursorMove = this.
|
|
151
|
+
private readonly _onCursorMove = this._register(new Emitter<void>());
|
|
153
152
|
public readonly onCursorMove = this._onCursorMove.event;
|
|
154
|
-
private readonly _onLineFeed = this.
|
|
153
|
+
private readonly _onLineFeed = this._register(new Emitter<void>());
|
|
155
154
|
public readonly onLineFeed = this._onLineFeed.event;
|
|
156
|
-
private readonly _onScroll = this.
|
|
155
|
+
private readonly _onScroll = this._register(new Emitter<number>());
|
|
157
156
|
public readonly onScroll = this._onScroll.event;
|
|
158
|
-
private readonly _onTitleChange = this.
|
|
157
|
+
private readonly _onTitleChange = this._register(new Emitter<string>());
|
|
159
158
|
public readonly onTitleChange = this._onTitleChange.event;
|
|
160
|
-
private readonly _onColor = this.
|
|
159
|
+
private readonly _onColor = this._register(new Emitter<IColorEvent>());
|
|
161
160
|
public readonly onColor = this._onColor.event;
|
|
162
161
|
|
|
163
162
|
private _parseStack: IParseStack = {
|
|
@@ -180,12 +179,12 @@ export class InputHandler extends Disposable implements IInputHandler {
|
|
|
180
179
|
private readonly _parser: IEscapeSequenceParser = new EscapeSequenceParser()
|
|
181
180
|
) {
|
|
182
181
|
super();
|
|
183
|
-
this.
|
|
182
|
+
this._register(this._parser);
|
|
184
183
|
this._dirtyRowTracker = new DirtyRowTracker(this._bufferService);
|
|
185
184
|
|
|
186
185
|
// Track properties used in performance critical code manually to avoid using slow getters
|
|
187
186
|
this._activeBuffer = this._bufferService.buffer;
|
|
188
|
-
this.
|
|
187
|
+
this._register(this._bufferService.buffers.onBufferActivate(e => this._activeBuffer = e.activeBuffer));
|
|
189
188
|
|
|
190
189
|
/**
|
|
191
190
|
* custom fallback handlers
|
|
@@ -500,7 +499,10 @@ export class InputHandler extends Disposable implements IInputHandler {
|
|
|
500
499
|
const viewportEnd = this._dirtyRowTracker.end + (this._bufferService.buffer.ybase - this._bufferService.buffer.ydisp);
|
|
501
500
|
const viewportStart = this._dirtyRowTracker.start + (this._bufferService.buffer.ybase - this._bufferService.buffer.ydisp);
|
|
502
501
|
if (viewportStart < this._bufferService.rows) {
|
|
503
|
-
this._onRequestRefreshRows.fire(
|
|
502
|
+
this._onRequestRefreshRows.fire({
|
|
503
|
+
start: Math.min(viewportStart, this._bufferService.rows - 1),
|
|
504
|
+
end: Math.min(viewportEnd, this._bufferService.rows - 1)
|
|
505
|
+
});
|
|
504
506
|
}
|
|
505
507
|
}
|
|
506
508
|
|
|
@@ -1943,7 +1945,7 @@ export class InputHandler extends Disposable implements IInputHandler {
|
|
|
1943
1945
|
case 1047: // alt screen buffer
|
|
1944
1946
|
this._bufferService.buffers.activateAltBuffer(this._eraseAttrData());
|
|
1945
1947
|
this._coreService.isCursorInitialized = true;
|
|
1946
|
-
this._onRequestRefreshRows.fire(
|
|
1948
|
+
this._onRequestRefreshRows.fire(undefined);
|
|
1947
1949
|
this._onRequestSyncScrollBar.fire();
|
|
1948
1950
|
break;
|
|
1949
1951
|
case 2004: // bracketed paste mode (https://cirw.in/blog/bracketed-paste)
|
|
@@ -2171,7 +2173,7 @@ export class InputHandler extends Disposable implements IInputHandler {
|
|
|
2171
2173
|
this.restoreCursor();
|
|
2172
2174
|
}
|
|
2173
2175
|
this._coreService.isCursorInitialized = true;
|
|
2174
|
-
this._onRequestRefreshRows.fire(
|
|
2176
|
+
this._onRequestRefreshRows.fire(undefined);
|
|
2175
2177
|
this._onRequestSyncScrollBar.fire();
|
|
2176
2178
|
break;
|
|
2177
2179
|
case 2004: // bracketed paste mode (https://cirw.in/blog/bracketed-paste)
|
|
@@ -2972,14 +2974,18 @@ export class InputHandler extends Disposable implements IInputHandler {
|
|
|
2972
2974
|
* feedback. Use `OSC 8 ; ; BEL` to finish the current hyperlink.
|
|
2973
2975
|
*/
|
|
2974
2976
|
public setHyperlink(data: string): boolean {
|
|
2975
|
-
|
|
2976
|
-
|
|
2977
|
-
|
|
2977
|
+
// Arg parsing is special cases to support unencoded semi-colons in the URIs (#4944)
|
|
2978
|
+
const idx = data.indexOf(';');
|
|
2979
|
+
if (idx === -1) {
|
|
2980
|
+
// malformed sequence, just return as handled
|
|
2981
|
+
return true;
|
|
2978
2982
|
}
|
|
2979
|
-
|
|
2980
|
-
|
|
2983
|
+
const id = data.slice(0, idx).trim();
|
|
2984
|
+
const uri = data.slice(idx + 1);
|
|
2985
|
+
if (uri) {
|
|
2986
|
+
return this._createHyperlink(id, uri);
|
|
2981
2987
|
}
|
|
2982
|
-
if (
|
|
2988
|
+
if (id.trim()) {
|
|
2983
2989
|
return false;
|
|
2984
2990
|
}
|
|
2985
2991
|
return this._finishHyperlink();
|
|
@@ -3452,6 +3458,6 @@ class DirtyRowTracker implements IDirtyRowTracker {
|
|
|
3452
3458
|
}
|
|
3453
3459
|
}
|
|
3454
3460
|
|
|
3455
|
-
function isValidColorIndex(value: number): value is ColorIndex {
|
|
3461
|
+
export function isValidColorIndex(value: number): value is ColorIndex {
|
|
3456
3462
|
return 0 <= value && value < 256;
|
|
3457
3463
|
}
|
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { IDeleteEvent, IInsertEvent } from 'common/CircularList';
|
|
7
|
-
import { IEvent, IEventEmitter } from 'common/EventEmitter';
|
|
8
7
|
import { Attributes, UnderlineStyle } from 'common/buffer/Constants'; // eslint-disable-line no-unused-vars
|
|
9
8
|
import { IBufferSet } from 'common/buffer/Types';
|
|
10
9
|
import { IParams } from 'common/parser/Types';
|
|
11
10
|
import { ICoreMouseService, ICoreService, IOptionsService, IUnicodeService } from 'common/services/Services';
|
|
12
11
|
import { IFunctionIdentifier, ITerminalOptions as IPublicTerminalOptions } from '@xterm/xterm';
|
|
12
|
+
import type { Emitter, Event } from 'vs/base/common/event';
|
|
13
13
|
|
|
14
14
|
export interface ICoreTerminal {
|
|
15
15
|
coreMouseService: ICoreMouseService;
|
|
@@ -60,12 +60,6 @@ export interface IKeyboardEvent {
|
|
|
60
60
|
|
|
61
61
|
export interface IScrollEvent {
|
|
62
62
|
position: number;
|
|
63
|
-
source: ScrollSource;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
export const enum ScrollSource {
|
|
67
|
-
TERMINAL,
|
|
68
|
-
VIEWPORT,
|
|
69
63
|
}
|
|
70
64
|
|
|
71
65
|
export interface ICircularList<T> {
|
|
@@ -73,12 +67,12 @@ export interface ICircularList<T> {
|
|
|
73
67
|
maxLength: number;
|
|
74
68
|
isFull: boolean;
|
|
75
69
|
|
|
76
|
-
onDeleteEmitter:
|
|
77
|
-
onDelete:
|
|
78
|
-
onInsertEmitter:
|
|
79
|
-
onInsert:
|
|
80
|
-
onTrimEmitter:
|
|
81
|
-
onTrim:
|
|
70
|
+
onDeleteEmitter: Emitter<IDeleteEvent>;
|
|
71
|
+
onDelete: Event<IDeleteEvent>;
|
|
72
|
+
onInsertEmitter: Emitter<IInsertEvent>;
|
|
73
|
+
onInsert: Event<IInsertEvent>;
|
|
74
|
+
onTrimEmitter: Emitter<number>;
|
|
75
|
+
onTrim: Event<number>;
|
|
82
76
|
|
|
83
77
|
get(index: number): T | undefined;
|
|
84
78
|
set(index: number, value: T): void;
|
|
@@ -264,7 +258,7 @@ export interface IMarker extends IDisposable {
|
|
|
264
258
|
readonly id: number;
|
|
265
259
|
readonly isDisposed: boolean;
|
|
266
260
|
readonly line: number;
|
|
267
|
-
onDispose:
|
|
261
|
+
onDispose: Event<void>;
|
|
268
262
|
}
|
|
269
263
|
export interface IModes {
|
|
270
264
|
insertMode: boolean;
|
|
@@ -425,8 +419,8 @@ type Enumerate<N extends number, Acc extends number[] = []> = Acc['length'] exte
|
|
|
425
419
|
: Enumerate<N, [...Acc, Acc['length']]>;
|
|
426
420
|
type IntRange<F extends number, T extends number> = Exclude<Enumerate<T>, Enumerate<F>>;
|
|
427
421
|
|
|
428
|
-
type ColorIndex = IntRange<0, 256>; // number from 0 to 255
|
|
429
|
-
type AllColorIndex = ColorIndex | SpecialColorIndex;
|
|
422
|
+
export type ColorIndex = IntRange<0, 256>; // number from 0 to 255
|
|
423
|
+
export type AllColorIndex = ColorIndex | SpecialColorIndex;
|
|
430
424
|
export const enum SpecialColorIndex {
|
|
431
425
|
FOREGROUND = 256,
|
|
432
426
|
BACKGROUND = 257,
|
|
@@ -452,7 +446,7 @@ export type IColorEvent = (IColorReportRequest | IColorSetRequest | IColorRestor
|
|
|
452
446
|
* Calls the parser and handles actions generated by the parser.
|
|
453
447
|
*/
|
|
454
448
|
export interface IInputHandler {
|
|
455
|
-
onTitleChange:
|
|
449
|
+
onTitleChange: Event<string>;
|
|
456
450
|
|
|
457
451
|
parse(data: string | Uint8Array, promiseResult?: boolean): void | Promise<boolean>;
|
|
458
452
|
print(data: Uint32Array, start: number, end: number): void;
|
|
@@ -161,6 +161,10 @@ export class Buffer implements IBuffer {
|
|
|
161
161
|
this.lines.maxLength = newMaxLength;
|
|
162
162
|
}
|
|
163
163
|
|
|
164
|
+
// if (this._cols > newCols) {
|
|
165
|
+
// console.log('increase!');
|
|
166
|
+
// }
|
|
167
|
+
|
|
164
168
|
// The following adjustments should only happen if the buffer has been
|
|
165
169
|
// initialized/filled.
|
|
166
170
|
if (this.lines.length > 0) {
|
|
@@ -611,8 +615,8 @@ export class Buffer implements IBuffer {
|
|
|
611
615
|
this._isClearing = true;
|
|
612
616
|
for (let i = 0; i < this.markers.length; i++) {
|
|
613
617
|
this.markers[i].dispose();
|
|
614
|
-
this.markers.splice(i--, 1);
|
|
615
618
|
}
|
|
619
|
+
this.markers.length = 0;
|
|
616
620
|
this._isClearing = false;
|
|
617
621
|
}
|
|
618
622
|
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
* @license MIT
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
import { Disposable } from 'common/Lifecycle';
|
|
6
|
+
import { Disposable } from 'vs/base/common/lifecycle';
|
|
8
7
|
import { IAttributeData } from 'common/Types';
|
|
9
8
|
import { Buffer } from 'common/buffer/Buffer';
|
|
10
9
|
import { IBuffer, IBufferSet } from 'common/buffer/Types';
|
|
11
10
|
import { IBufferService, IOptionsService } from 'common/services/Services';
|
|
11
|
+
import { Emitter } from 'vs/base/common/event';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* The BufferSet represents the set of two buffers used by xterm terminals (normal and alt) and
|
|
@@ -19,7 +19,7 @@ export class BufferSet extends Disposable implements IBufferSet {
|
|
|
19
19
|
private _alt!: Buffer;
|
|
20
20
|
private _activeBuffer!: Buffer;
|
|
21
21
|
|
|
22
|
-
private readonly _onBufferActivate = this.
|
|
22
|
+
private readonly _onBufferActivate = this._register(new Emitter<{ activeBuffer: IBuffer, inactiveBuffer: IBuffer }>());
|
|
23
23
|
public readonly onBufferActivate = this._onBufferActivate.event;
|
|
24
24
|
|
|
25
25
|
/**
|
|
@@ -31,8 +31,8 @@ export class BufferSet extends Disposable implements IBufferSet {
|
|
|
31
31
|
) {
|
|
32
32
|
super();
|
|
33
33
|
this.reset();
|
|
34
|
-
this.
|
|
35
|
-
this.
|
|
34
|
+
this._register(this._optionsService.onSpecificOptionChange('scrollback', () => this.resize(this._bufferService.cols, this._bufferService.rows)));
|
|
35
|
+
this._register(this._optionsService.onSpecificOptionChange('tabStopWidth', () => this.setupTabStops()));
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
public reset(): void {
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
* @license MIT
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { EventEmitter } from 'common/EventEmitter';
|
|
7
|
-
import { disposeArray } from 'common/Lifecycle';
|
|
8
6
|
import { IDisposable, IMarker } from 'common/Types';
|
|
7
|
+
import { Emitter } from 'vs/base/common/event';
|
|
8
|
+
import { dispose } from 'vs/base/common/lifecycle';
|
|
9
9
|
|
|
10
10
|
export class Marker implements IMarker {
|
|
11
11
|
private static _nextId = 1;
|
|
@@ -16,7 +16,7 @@ export class Marker implements IMarker {
|
|
|
16
16
|
private readonly _id: number = Marker._nextId++;
|
|
17
17
|
public get id(): number { return this._id; }
|
|
18
18
|
|
|
19
|
-
private readonly _onDispose = this.register(new
|
|
19
|
+
private readonly _onDispose = this.register(new Emitter<void>());
|
|
20
20
|
public readonly onDispose = this._onDispose.event;
|
|
21
21
|
|
|
22
22
|
constructor(
|
|
@@ -32,7 +32,7 @@ export class Marker implements IMarker {
|
|
|
32
32
|
this.line = -1;
|
|
33
33
|
// Emit before super.dispose such that dispose listeners get a change to react
|
|
34
34
|
this._onDispose.fire();
|
|
35
|
-
|
|
35
|
+
dispose(this._disposables);
|
|
36
36
|
this._disposables.length = 0;
|
|
37
37
|
}
|
|
38
38
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { IAttributeData, ICircularList, IBufferLine, ICellData, IMarker, ICharset, IDisposable } from 'common/Types';
|
|
7
|
-
import {
|
|
7
|
+
import type { Event } from 'vs/base/common/event';
|
|
8
8
|
|
|
9
9
|
// BufferIndex denotes a position in the buffer: [rowIndex, colIndex]
|
|
10
10
|
export type BufferIndex = [number, number];
|
|
@@ -42,7 +42,7 @@ export interface IBufferSet extends IDisposable {
|
|
|
42
42
|
normal: IBuffer;
|
|
43
43
|
active: IBuffer;
|
|
44
44
|
|
|
45
|
-
onBufferActivate:
|
|
45
|
+
onBufferActivate: Event<{ activeBuffer: IBuffer, inactiveBuffer: IBuffer }>;
|
|
46
46
|
|
|
47
47
|
activateNormalBuffer(): void;
|
|
48
48
|
activateAltBuffer(fillAttr?: IAttributeData): void;
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { Disposable } from 'vs/base/common/lifecycle';
|
|
8
|
+
import { Emitter } from 'vs/base/common/event';
|
|
9
9
|
|
|
10
10
|
declare const setTimeout: (handler: () => void, timeout?: number) => void;
|
|
11
11
|
|
|
@@ -43,7 +43,7 @@ export class WriteBuffer extends Disposable {
|
|
|
43
43
|
private _syncCalls = 0;
|
|
44
44
|
private _didUserInput = false;
|
|
45
45
|
|
|
46
|
-
private readonly _onWriteParsed = this.
|
|
46
|
+
private readonly _onWriteParsed = this._register(new Emitter<void>());
|
|
47
47
|
public readonly onWriteParsed = this._onWriteParsed.event;
|
|
48
48
|
|
|
49
49
|
constructor(private _action: (data: string | Uint8Array, promiseResult?: boolean) => void | Promise<boolean>) {
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import { IParsingState, IDcsHandler, IEscapeSequenceParser, IParams, IOscHandler, IHandlerCollection, CsiHandlerType, OscFallbackHandlerType, IOscParser, EscHandlerType, IDcsParser, DcsFallbackHandlerType, IFunctionIdentifier, ExecuteFallbackHandlerType, CsiFallbackHandlerType, EscFallbackHandlerType, PrintHandlerType, PrintFallbackHandlerType, ExecuteHandlerType, IParserStackState, ParserStackType, ResumableHandlersType } from 'common/parser/Types';
|
|
7
7
|
import { ParserState, ParserAction } from 'common/parser/Constants';
|
|
8
|
-
import { Disposable, toDisposable } from 'common/
|
|
8
|
+
import { Disposable, toDisposable } from 'vs/base/common/lifecycle';
|
|
9
9
|
import { IDisposable } from 'common/Types';
|
|
10
10
|
import { Params } from 'common/parser/Params';
|
|
11
11
|
import { OscParser } from 'common/parser/OscParser';
|
|
@@ -283,13 +283,13 @@ export class EscapeSequenceParser extends Disposable implements IEscapeSequenceP
|
|
|
283
283
|
this._executeHandlers = Object.create(null);
|
|
284
284
|
this._csiHandlers = Object.create(null);
|
|
285
285
|
this._escHandlers = Object.create(null);
|
|
286
|
-
this.
|
|
286
|
+
this._register(toDisposable(() => {
|
|
287
287
|
this._csiHandlers = Object.create(null);
|
|
288
288
|
this._executeHandlers = Object.create(null);
|
|
289
289
|
this._escHandlers = Object.create(null);
|
|
290
290
|
}));
|
|
291
|
-
this._oscParser = this.
|
|
292
|
-
this._dcsParser = this.
|
|
291
|
+
this._oscParser = this._register(new OscParser());
|
|
292
|
+
this._dcsParser = this._register(new DcsParser());
|
|
293
293
|
this._errorHandler = this._errorHandlerFb;
|
|
294
294
|
|
|
295
295
|
// swallow 7bit ST (ESC+\)
|
|
@@ -5,15 +5,15 @@
|
|
|
5
5
|
|
|
6
6
|
import { IBuffer as IBufferApi, IBufferNamespace as IBufferNamespaceApi } from '@xterm/xterm';
|
|
7
7
|
import { BufferApiView } from 'common/public/BufferApiView';
|
|
8
|
-
import { EventEmitter } from 'common/EventEmitter';
|
|
9
8
|
import { ICoreTerminal } from 'common/Types';
|
|
10
|
-
import { Disposable } from 'common/
|
|
9
|
+
import { Disposable } from 'vs/base/common/lifecycle';
|
|
10
|
+
import { Emitter } from 'vs/base/common/event';
|
|
11
11
|
|
|
12
12
|
export class BufferNamespaceApi extends Disposable implements IBufferNamespaceApi {
|
|
13
13
|
private _normal: BufferApiView;
|
|
14
14
|
private _alternate: BufferApiView;
|
|
15
15
|
|
|
16
|
-
private readonly _onBufferChange = this.
|
|
16
|
+
private readonly _onBufferChange = this._register(new Emitter<IBufferApi>());
|
|
17
17
|
public readonly onBufferChange = this._onBufferChange.event;
|
|
18
18
|
|
|
19
19
|
constructor(private _core: ICoreTerminal) {
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
* @license MIT
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { IAttributeData, IBufferLine, ScrollSource } from 'common/Types';
|
|
6
|
+
import { Disposable } from 'vs/base/common/lifecycle';
|
|
7
|
+
import { IAttributeData, IBufferLine } from 'common/Types';
|
|
9
8
|
import { BufferSet } from 'common/buffer/BufferSet';
|
|
10
9
|
import { IBuffer, IBufferSet } from 'common/buffer/Types';
|
|
11
10
|
import { IBufferService, IOptionsService } from 'common/services/Services';
|
|
11
|
+
import { Emitter } from 'vs/base/common/event';
|
|
12
12
|
|
|
13
13
|
export const MINIMUM_COLS = 2; // Less than 2 can mess with wide chars
|
|
14
14
|
export const MINIMUM_ROWS = 1;
|
|
@@ -22,9 +22,9 @@ export class BufferService extends Disposable implements IBufferService {
|
|
|
22
22
|
/** Whether the user is scrolling (locks the scroll position) */
|
|
23
23
|
public isUserScrolling: boolean = false;
|
|
24
24
|
|
|
25
|
-
private readonly _onResize = this.
|
|
25
|
+
private readonly _onResize = this._register(new Emitter<{ cols: number, rows: number }>());
|
|
26
26
|
public readonly onResize = this._onResize.event;
|
|
27
|
-
private readonly _onScroll = this.
|
|
27
|
+
private readonly _onScroll = this._register(new Emitter<number>());
|
|
28
28
|
public readonly onScroll = this._onScroll.event;
|
|
29
29
|
|
|
30
30
|
public get buffer(): IBuffer { return this.buffers.active; }
|
|
@@ -36,7 +36,7 @@ export class BufferService extends Disposable implements IBufferService {
|
|
|
36
36
|
super();
|
|
37
37
|
this.cols = Math.max(optionsService.rawOptions.cols || 0, MINIMUM_COLS);
|
|
38
38
|
this.rows = Math.max(optionsService.rawOptions.rows || 0, MINIMUM_ROWS);
|
|
39
|
-
this.buffers = this.
|
|
39
|
+
this.buffers = this._register(new BufferSet(optionsService, this));
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
public resize(cols: number, rows: number): void {
|
|
@@ -125,7 +125,7 @@ export class BufferService extends Disposable implements IBufferService {
|
|
|
125
125
|
* to avoid unwanted events being handled by the viewport when the event was triggered from the
|
|
126
126
|
* viewport originally.
|
|
127
127
|
*/
|
|
128
|
-
public scrollLines(disp: number, suppressScrollEvent?: boolean
|
|
128
|
+
public scrollLines(disp: number, suppressScrollEvent?: boolean): void {
|
|
129
129
|
const buffer = this.buffer;
|
|
130
130
|
if (disp < 0) {
|
|
131
131
|
if (buffer.ydisp === 0) {
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
* @license MIT
|
|
4
4
|
*/
|
|
5
5
|
import { IBufferService, ICoreService, ICoreMouseService } from 'common/services/Services';
|
|
6
|
-
import { EventEmitter } from 'common/EventEmitter';
|
|
7
6
|
import { ICoreMouseProtocol, ICoreMouseEvent, CoreMouseEncoding, CoreMouseEventType, CoreMouseButton, CoreMouseAction } from 'common/Types';
|
|
8
|
-
import { Disposable } from 'common/
|
|
7
|
+
import { Disposable } from 'vs/base/common/lifecycle';
|
|
8
|
+
import { Emitter } from 'vs/base/common/event';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Supported default protocols.
|
|
@@ -167,13 +167,15 @@ const DEFAULT_ENCODINGS: { [key: string]: CoreMouseEncoding } = {
|
|
|
167
167
|
* To send a mouse event call `triggerMouseEvent`.
|
|
168
168
|
*/
|
|
169
169
|
export class CoreMouseService extends Disposable implements ICoreMouseService {
|
|
170
|
+
public serviceBrand: any;
|
|
171
|
+
|
|
170
172
|
private _protocols: { [name: string]: ICoreMouseProtocol } = {};
|
|
171
173
|
private _encodings: { [name: string]: CoreMouseEncoding } = {};
|
|
172
174
|
private _activeProtocol: string = '';
|
|
173
175
|
private _activeEncoding: string = '';
|
|
174
176
|
private _lastEvent: ICoreMouseEvent | null = null;
|
|
175
177
|
|
|
176
|
-
private readonly _onProtocolChange = this.
|
|
178
|
+
private readonly _onProtocolChange = this._register(new Emitter<CoreMouseEventType>());
|
|
177
179
|
public readonly onProtocolChange = this._onProtocolChange.event;
|
|
178
180
|
|
|
179
181
|
constructor(
|
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { clone } from 'common/Clone';
|
|
7
|
-
import {
|
|
8
|
-
import { Disposable } from 'common/Lifecycle';
|
|
7
|
+
import { Disposable } from 'vs/base/common/lifecycle';
|
|
9
8
|
import { IDecPrivateModes, IModes } from 'common/Types';
|
|
10
9
|
import { IBufferService, ICoreService, ILogService, IOptionsService } from 'common/services/Services';
|
|
10
|
+
import { Emitter } from 'vs/base/common/event';
|
|
11
11
|
|
|
12
12
|
const DEFAULT_MODES: IModes = Object.freeze({
|
|
13
13
|
insertMode: false
|
|
@@ -31,13 +31,13 @@ export class CoreService extends Disposable implements ICoreService {
|
|
|
31
31
|
public modes: IModes;
|
|
32
32
|
public decPrivateModes: IDecPrivateModes;
|
|
33
33
|
|
|
34
|
-
private readonly _onData = this.
|
|
34
|
+
private readonly _onData = this._register(new Emitter<string>());
|
|
35
35
|
public readonly onData = this._onData.event;
|
|
36
|
-
private readonly _onUserInput = this.
|
|
36
|
+
private readonly _onUserInput = this._register(new Emitter<void>());
|
|
37
37
|
public readonly onUserInput = this._onUserInput.event;
|
|
38
|
-
private readonly _onBinary = this.
|
|
38
|
+
private readonly _onBinary = this._register(new Emitter<string>());
|
|
39
39
|
public readonly onBinary = this._onBinary.event;
|
|
40
|
-
private readonly _onRequestScrollToBottom = this.
|
|
40
|
+
private readonly _onRequestScrollToBottom = this._register(new Emitter<void>());
|
|
41
41
|
public readonly onRequestScrollToBottom = this._onRequestScrollToBottom.event;
|
|
42
42
|
|
|
43
43
|
constructor(
|
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { css } from 'common/Color';
|
|
7
|
-
import {
|
|
8
|
-
import { Disposable, toDisposable } from 'common/Lifecycle';
|
|
7
|
+
import { Disposable, DisposableStore, toDisposable } from 'vs/base/common/lifecycle';
|
|
9
8
|
import { IDecorationService, IInternalDecoration } from 'common/services/Services';
|
|
10
9
|
import { SortedList } from 'common/SortedList';
|
|
11
10
|
import { IColor } from 'common/Types';
|
|
12
11
|
import { IDecoration, IDecorationOptions, IMarker } from '@xterm/xterm';
|
|
12
|
+
import { Emitter } from 'vs/base/common/event';
|
|
13
13
|
|
|
14
14
|
// Work variables to avoid garbage collection
|
|
15
15
|
let $xmin = 0;
|
|
@@ -25,9 +25,9 @@ export class DecorationService extends Disposable implements IDecorationService
|
|
|
25
25
|
*/
|
|
26
26
|
private readonly _decorations: SortedList<IInternalDecoration> = new SortedList(e => e?.marker.line);
|
|
27
27
|
|
|
28
|
-
private readonly _onDecorationRegistered = this.
|
|
28
|
+
private readonly _onDecorationRegistered = this._register(new Emitter<IInternalDecoration>());
|
|
29
29
|
public readonly onDecorationRegistered = this._onDecorationRegistered.event;
|
|
30
|
-
private readonly _onDecorationRemoved = this.
|
|
30
|
+
private readonly _onDecorationRemoved = this._register(new Emitter<IInternalDecoration>());
|
|
31
31
|
public readonly onDecorationRemoved = this._onDecorationRemoved.event;
|
|
32
32
|
|
|
33
33
|
public get decorations(): IterableIterator<IInternalDecoration> { return this._decorations.values(); }
|
|
@@ -35,7 +35,7 @@ export class DecorationService extends Disposable implements IDecorationService
|
|
|
35
35
|
constructor() {
|
|
36
36
|
super();
|
|
37
37
|
|
|
38
|
-
this.
|
|
38
|
+
this._register(toDisposable(() => this.reset()));
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
public registerDecoration(options: IDecorationOptions): IDecoration | undefined {
|
|
@@ -90,14 +90,13 @@ export class DecorationService extends Disposable implements IDecorationService
|
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
class Decoration extends
|
|
93
|
+
class Decoration extends DisposableStore implements IInternalDecoration {
|
|
94
94
|
public readonly marker: IMarker;
|
|
95
95
|
public element: HTMLElement | undefined;
|
|
96
|
-
public get isDisposed(): boolean { return this._isDisposed; }
|
|
97
96
|
|
|
98
|
-
public readonly onRenderEmitter = this.
|
|
97
|
+
public readonly onRenderEmitter = this.add(new Emitter<HTMLElement>());
|
|
99
98
|
public readonly onRender = this.onRenderEmitter.event;
|
|
100
|
-
private readonly _onDispose = this.
|
|
99
|
+
private readonly _onDispose = this.add(new Emitter<void>());
|
|
101
100
|
public readonly onDispose = this._onDispose.event;
|
|
102
101
|
|
|
103
102
|
private _cachedBg: IColor | undefined | null = null;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* @license MIT
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { Disposable } from 'common/
|
|
6
|
+
import { Disposable } from 'vs/base/common/lifecycle';
|
|
7
7
|
import { ILogService, IOptionsService, LogLevelEnum } from 'common/services/Services';
|
|
8
8
|
|
|
9
9
|
type LogType = (message?: any, ...optionalParams: any[]) => void;
|
|
@@ -42,7 +42,7 @@ export class LogService extends Disposable implements ILogService {
|
|
|
42
42
|
) {
|
|
43
43
|
super();
|
|
44
44
|
this._updateLogLevel();
|
|
45
|
-
this.
|
|
45
|
+
this._register(this._optionsService.onSpecificOptionChange('logLevel', () => this._updateLogLevel()));
|
|
46
46
|
|
|
47
47
|
// For trace logging, assume the latest created log service is valid
|
|
48
48
|
traceLogger = this;
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
* @license MIT
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
import { Disposable, toDisposable } from 'common/Lifecycle';
|
|
6
|
+
import { Disposable, toDisposable } from 'vs/base/common/lifecycle';
|
|
8
7
|
import { isMac } from 'common/Platform';
|
|
9
8
|
import { CursorStyle, IDisposable } from 'common/Types';
|
|
10
9
|
import { FontWeight, IOptionsService, ITerminalOptions } from 'common/services/Services';
|
|
10
|
+
import { Emitter } from 'vs/base/common/event';
|
|
11
11
|
|
|
12
12
|
export const DEFAULT_OPTIONS: Readonly<Required<ITerminalOptions>> = {
|
|
13
13
|
cols: 80,
|
|
@@ -54,7 +54,7 @@ export const DEFAULT_OPTIONS: Readonly<Required<ITerminalOptions>> = {
|
|
|
54
54
|
convertEol: false,
|
|
55
55
|
termName: 'xterm',
|
|
56
56
|
cancelEvents: false,
|
|
57
|
-
|
|
57
|
+
overviewRuler: {}
|
|
58
58
|
};
|
|
59
59
|
|
|
60
60
|
const FONT_WEIGHT_OPTIONS: Extract<FontWeight, string>[] = ['normal', 'bold', '100', '200', '300', '400', '500', '600', '700', '800', '900'];
|
|
@@ -65,7 +65,7 @@ export class OptionsService extends Disposable implements IOptionsService {
|
|
|
65
65
|
public readonly rawOptions: Required<ITerminalOptions>;
|
|
66
66
|
public options: Required<ITerminalOptions>;
|
|
67
67
|
|
|
68
|
-
private readonly _onOptionChange = this.
|
|
68
|
+
private readonly _onOptionChange = this._register(new Emitter<keyof ITerminalOptions>());
|
|
69
69
|
public readonly onOptionChange = this._onOptionChange.event;
|
|
70
70
|
|
|
71
71
|
constructor(options: Partial<ITerminalOptions>) {
|
|
@@ -90,7 +90,7 @@ export class OptionsService extends Disposable implements IOptionsService {
|
|
|
90
90
|
|
|
91
91
|
// Clear out options that could link outside xterm.js as they could easily cause an embedder
|
|
92
92
|
// memory leak
|
|
93
|
-
this.
|
|
93
|
+
this._register(toDisposable(() => {
|
|
94
94
|
this.rawOptions.linkHandler = null;
|
|
95
95
|
this.rawOptions.documentOverride = null;
|
|
96
96
|
}));
|