mirror of
https://github.com/wavetermdev/xterm.js.git
synced 2026-08-05 13:43:48 -07:00
xterm-headless modes api, tests for headless
This commit is contained in:
@@ -367,6 +367,88 @@ describe('Headless API Tests', function(): void {
|
||||
});
|
||||
});
|
||||
|
||||
describe('modes', () => {
|
||||
it('defaults', () => {
|
||||
deepStrictEqual(term.modes, {
|
||||
applicationCursorKeysMode: false,
|
||||
applicationKeypadMode: false,
|
||||
bracketedPasteMode: false,
|
||||
insertMode: false,
|
||||
mouseTrackingMode: 'none',
|
||||
originMode: false,
|
||||
reverseWraparoundMode: false,
|
||||
sendFocusMode: false,
|
||||
wraparoundMode: true
|
||||
});
|
||||
});
|
||||
it('applicationCursorKeysMode', async () => {
|
||||
await writeSync('\x1b[?1h');
|
||||
strictEqual(term.modes.applicationCursorKeysMode, true);
|
||||
await writeSync('\x1b[?1l');
|
||||
strictEqual(term.modes.applicationCursorKeysMode, false);
|
||||
});
|
||||
it('applicationKeypadMode', async () => {
|
||||
await writeSync('\x1b[?66h');
|
||||
strictEqual(term.modes.applicationKeypadMode, true);
|
||||
await writeSync('\x1b[?66l');
|
||||
strictEqual(term.modes.applicationKeypadMode, false);
|
||||
});
|
||||
it('bracketedPasteMode', async () => {
|
||||
await writeSync('\x1b[?2004h');
|
||||
strictEqual(term.modes.bracketedPasteMode, true);
|
||||
await writeSync('\x1b[?2004l');
|
||||
strictEqual(term.modes.bracketedPasteMode, false);
|
||||
});
|
||||
it('insertMode', async () => {
|
||||
await writeSync('\x1b[4h');
|
||||
strictEqual(term.modes.insertMode, true);
|
||||
await writeSync('\x1b[4l');
|
||||
strictEqual(term.modes.insertMode, false);
|
||||
});
|
||||
it('mouseTrackingMode', async () => {
|
||||
await writeSync('\x1b[?9h');
|
||||
strictEqual(term.modes.mouseTrackingMode, 'x10');
|
||||
await writeSync('\x1b[?9l');
|
||||
strictEqual(term.modes.mouseTrackingMode, 'none');
|
||||
await writeSync('\x1b[?1000h');
|
||||
strictEqual(term.modes.mouseTrackingMode, 'vt200');
|
||||
await writeSync('\x1b[?1000l');
|
||||
strictEqual(term.modes.mouseTrackingMode, 'none');
|
||||
await writeSync('\x1b[?1002h');
|
||||
strictEqual(term.modes.mouseTrackingMode, 'drag');
|
||||
await writeSync('\x1b[?1002l');
|
||||
strictEqual(term.modes.mouseTrackingMode, 'none');
|
||||
await writeSync('\x1b[?1003h');
|
||||
strictEqual(term.modes.mouseTrackingMode, 'any');
|
||||
await writeSync('\x1b[?1003l');
|
||||
strictEqual(term.modes.mouseTrackingMode, 'none');
|
||||
});
|
||||
it('originMode', async () => {
|
||||
await writeSync('\x1b[?6h');
|
||||
strictEqual(term.modes.originMode, true);
|
||||
await writeSync('\x1b[?6l');
|
||||
strictEqual(term.modes.originMode, false);
|
||||
});
|
||||
it('reverseWraparoundMode', async () => {
|
||||
await writeSync('\x1b[?45h');
|
||||
strictEqual(term.modes.reverseWraparoundMode, true);
|
||||
await writeSync('\x1b[?45l');
|
||||
strictEqual(term.modes.reverseWraparoundMode, false);
|
||||
});
|
||||
it('sendFocusMode', async () => {
|
||||
await writeSync('\x1b[?1004h');
|
||||
strictEqual(term.modes.sendFocusMode, true);
|
||||
await writeSync('\x1b[?1004l');
|
||||
strictEqual(term.modes.sendFocusMode, false);
|
||||
});
|
||||
it('wraparoundMode', async () => {
|
||||
await writeSync('\x1b[?7h');
|
||||
strictEqual(term.modes.wraparoundMode, true);
|
||||
await writeSync('\x1b[?7l');
|
||||
strictEqual(term.modes.wraparoundMode, false);
|
||||
});
|
||||
});
|
||||
|
||||
it('dispose', async () => {
|
||||
term.dispose();
|
||||
strictEqual((term as any)._core._isDisposed, true);
|
||||
|
||||
@@ -7,7 +7,7 @@ import { IEvent } from 'common/EventEmitter';
|
||||
import { BufferNamespaceApi } from 'common/public/BufferNamespaceApi';
|
||||
import { ParserApi } from 'common/public/ParserApi';
|
||||
import { UnicodeApi } from 'common/public/UnicodeApi';
|
||||
import { IBufferNamespace as IBufferNamespaceApi, IMarker, IParser, ITerminalAddon, ITerminalOptions, IUnicodeHandling, Terminal as ITerminalApi } from 'xterm-headless';
|
||||
import { IBufferNamespace as IBufferNamespaceApi, IMarker, IModes, IParser, ITerminalAddon, ITerminalOptions, IUnicodeHandling, Terminal as ITerminalApi } from 'xterm-headless';
|
||||
import { Terminal as TerminalCore } from 'headless/Terminal';
|
||||
import { AddonManager } from 'common/public/AddonManager';
|
||||
|
||||
@@ -61,6 +61,27 @@ export class Terminal implements ITerminalApi {
|
||||
this._checkProposedApi();
|
||||
return this._core.markers;
|
||||
}
|
||||
public get modes(): IModes {
|
||||
const m = this._core.coreService.decPrivateModes;
|
||||
let mouseTrackingMode: 'none' | 'x10' | 'vt200' | 'drag' | 'any' = 'none';
|
||||
switch (this._core.coreMouseService.activeProtocol) {
|
||||
case 'X10': mouseTrackingMode = 'x10'; break;
|
||||
case 'VT200': mouseTrackingMode = 'vt200'; break;
|
||||
case 'DRAG': mouseTrackingMode = 'drag'; break;
|
||||
case 'ANY': mouseTrackingMode = 'any'; break;
|
||||
}
|
||||
return {
|
||||
applicationCursorKeysMode: m.applicationCursorKeys,
|
||||
applicationKeypadMode: m.applicationKeypad,
|
||||
bracketedPasteMode: m.bracketedPasteMode,
|
||||
insertMode: this._core.coreService.modes.insertMode,
|
||||
mouseTrackingMode: mouseTrackingMode,
|
||||
originMode: m.origin,
|
||||
reverseWraparoundMode: m.reverseWraparound,
|
||||
sendFocusMode: m.sendFocus,
|
||||
wraparoundMode: m.wraparound
|
||||
};
|
||||
}
|
||||
public resize(columns: number, rows: number): void {
|
||||
this._verifyIntegers(columns, rows);
|
||||
this._core.resize(columns, rows);
|
||||
|
||||
Vendored
+1220
-1168
File diff suppressed because it is too large
Load Diff
Vendored
+1
-1
@@ -1666,7 +1666,7 @@ declare module 'xterm' {
|
||||
*/
|
||||
readonly reverseWraparoundMode: boolean;
|
||||
/**
|
||||
* Send FocusIn/FocusOut events: `CSI ? 1 0 0 3 h`
|
||||
* Send FocusIn/FocusOut events: `CSI ? 1 0 0 4 h`
|
||||
*/
|
||||
readonly sendFocusMode: boolean;
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user