mirror of
https://github.com/wavetermdev/xterm.js.git
synced 2026-08-05 13:43:48 -07:00
single arg for DCS and ESC handler registration
This commit is contained in:
@@ -278,11 +278,11 @@ export class EscapeSequenceParser implements IEscapeSequenceParser {
|
||||
this._csiHandlerFb = callback;
|
||||
}
|
||||
|
||||
setEscHandler(collect: string, flag: string, callback: (collect: string, flag: number) => void): void {
|
||||
this._escHandlers[collect + flag] = callback;
|
||||
setEscHandler(collectAndFlag: string, callback: () => void): void {
|
||||
this._escHandlers[collectAndFlag] = callback;
|
||||
}
|
||||
clearEscHandler(collect: string, flag: string): void {
|
||||
if (this._escHandlers[collect + flag]) delete this._escHandlers[collect + flag];
|
||||
clearEscHandler(collectAndFlag: string): void {
|
||||
if (this._escHandlers[collectAndFlag]) delete this._escHandlers[collectAndFlag];
|
||||
}
|
||||
setEscHandlerFallback(callback: (...params: any[]) => void): void {
|
||||
this._escHandlerFb = callback;
|
||||
@@ -298,11 +298,11 @@ export class EscapeSequenceParser implements IEscapeSequenceParser {
|
||||
this._oscHandlerFb = callback;
|
||||
}
|
||||
|
||||
setDcsHandler(collect: string, flag: string, handler: IDcsHandler): void {
|
||||
this._dcsHandlers[collect + flag] = handler;
|
||||
setDcsHandler(collectAndFlag: string, handler: IDcsHandler): void {
|
||||
this._dcsHandlers[collectAndFlag] = handler;
|
||||
}
|
||||
clearDcsHandler(collect: string, flag: string): void {
|
||||
if (this._dcsHandlers[collect + flag]) delete this._dcsHandlers[collect + flag];
|
||||
clearDcsHandler(collectAndFlag: string): void {
|
||||
if (this._dcsHandlers[collectAndFlag]) delete this._dcsHandlers[collectAndFlag];
|
||||
}
|
||||
setDcsHandlerFallback(handler: IDcsHandler): void {
|
||||
this._dcsHandlerFb = handler;
|
||||
@@ -336,7 +336,6 @@ export class EscapeSequenceParser implements IEscapeSequenceParser {
|
||||
let params = this.params;
|
||||
const table: Uint8Array | number[] = this.transitions.table;
|
||||
let dcsHandler: IDcsHandler | null = this._activeDcsHandler;
|
||||
let ident: string = ''; // ugly workaround for ESC and DCS lookup keys
|
||||
let callback: Function | null = null;
|
||||
|
||||
// process input string
|
||||
@@ -459,8 +458,7 @@ export class EscapeSequenceParser implements IEscapeSequenceParser {
|
||||
dcs = -1;
|
||||
break;
|
||||
case ParserAction.DCS_HOOK:
|
||||
ident = collect + String.fromCharCode(code);
|
||||
dcsHandler = this._dcsHandlers[ident];
|
||||
dcsHandler = this._dcsHandlers[collect + String.fromCharCode(code)];
|
||||
if (!dcsHandler) dcsHandler = this._dcsHandlerFb;
|
||||
dcsHandler.hook(collect, params, code);
|
||||
break;
|
||||
|
||||
+23
-23
@@ -158,30 +158,30 @@ export class InputHandler implements IInputHandler {
|
||||
/**
|
||||
* ESC handlers
|
||||
*/
|
||||
this._parser.setEscHandler('', '7', () => this.saveCursor([]));
|
||||
this._parser.setEscHandler('', '8', () => this.restoreCursor([]));
|
||||
this._parser.setEscHandler('', 'D', () => this.index());
|
||||
this._parser.setEscHandler('', 'E', () => this.nextLine());
|
||||
this._parser.setEscHandler('', 'H', () => this.tabSet());
|
||||
this._parser.setEscHandler('', 'M', () => this.reverseIndex());
|
||||
this._parser.setEscHandler('', '=', () => this.keypadApplicationMode());
|
||||
this._parser.setEscHandler('', '>', () => this.keypadNumericMode());
|
||||
this._parser.setEscHandler('', 'c', () => this.reset());
|
||||
this._parser.setEscHandler('', 'n', () => this.setgLevel(2));
|
||||
this._parser.setEscHandler('', 'o', () => this.setgLevel(3));
|
||||
this._parser.setEscHandler('', '|', () => this.setgLevel(3));
|
||||
this._parser.setEscHandler('', '}', () => this.setgLevel(2));
|
||||
this._parser.setEscHandler('', '~', () => this.setgLevel(1));
|
||||
this._parser.setEscHandler('%', '@', () => this.selectDefaultCharset());
|
||||
this._parser.setEscHandler('%', 'G', () => this.selectDefaultCharset());
|
||||
this._parser.setEscHandler('7', () => this.saveCursor([]));
|
||||
this._parser.setEscHandler('8', () => this.restoreCursor([]));
|
||||
this._parser.setEscHandler('D', () => this.index());
|
||||
this._parser.setEscHandler('E', () => this.nextLine());
|
||||
this._parser.setEscHandler('H', () => this.tabSet());
|
||||
this._parser.setEscHandler('M', () => this.reverseIndex());
|
||||
this._parser.setEscHandler('=', () => this.keypadApplicationMode());
|
||||
this._parser.setEscHandler('>', () => this.keypadNumericMode());
|
||||
this._parser.setEscHandler('c', () => this.reset());
|
||||
this._parser.setEscHandler('n', () => this.setgLevel(2));
|
||||
this._parser.setEscHandler('o', () => this.setgLevel(3));
|
||||
this._parser.setEscHandler('|', () => this.setgLevel(3));
|
||||
this._parser.setEscHandler('}', () => this.setgLevel(2));
|
||||
this._parser.setEscHandler('~', () => this.setgLevel(1));
|
||||
this._parser.setEscHandler('%@', () => this.selectDefaultCharset());
|
||||
this._parser.setEscHandler('%G', () => this.selectDefaultCharset());
|
||||
for (let flag in CHARSETS) {
|
||||
this._parser.setEscHandler('(', flag, () => this.selectCharset('(' + flag));
|
||||
this._parser.setEscHandler(')', flag, () => this.selectCharset(')' + flag));
|
||||
this._parser.setEscHandler('*', flag, () => this.selectCharset('*' + flag));
|
||||
this._parser.setEscHandler('+', flag, () => this.selectCharset('+' + flag));
|
||||
this._parser.setEscHandler('-', flag, () => this.selectCharset('-' + flag));
|
||||
this._parser.setEscHandler('.', flag, () => this.selectCharset('.' + flag));
|
||||
this._parser.setEscHandler('/', flag, () => this.selectCharset('/' + flag)); // FIXME: supported?
|
||||
this._parser.setEscHandler('(' + flag, () => this.selectCharset('(' + flag));
|
||||
this._parser.setEscHandler(')' + flag, () => this.selectCharset(')' + flag));
|
||||
this._parser.setEscHandler('*' + flag, () => this.selectCharset('*' + flag));
|
||||
this._parser.setEscHandler('+' + flag, () => this.selectCharset('+' + flag));
|
||||
this._parser.setEscHandler('-' + flag, () => this.selectCharset('-' + flag));
|
||||
this._parser.setEscHandler('.' + flag, () => this.selectCharset('.' + flag));
|
||||
this._parser.setEscHandler('/' + flag, () => this.selectCharset('/' + flag)); // FIXME: supported?
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+4
-4
@@ -479,16 +479,16 @@ export interface IEscapeSequenceParser {
|
||||
clearCsiHandler(flag: string): void;
|
||||
setCsiHandlerFallback(callback: (...params: any[]) => void): void;
|
||||
|
||||
setEscHandler(collect: string, flag: string, callback: (collect: string, flag: number) => void): void;
|
||||
clearEscHandler(collect: string, flag: string): void;
|
||||
setEscHandler(collectAndFlag: string, callback: () => void): void;
|
||||
clearEscHandler(collectAndFlag: string): void;
|
||||
setEscHandlerFallback(callback: (...params: any[]) => void): void;
|
||||
|
||||
setOscHandler(ident: number, callback: (data: string) => void): void;
|
||||
clearOscHandler(ident: number): void;
|
||||
setOscHandlerFallback(callback: (...params: any[]) => void): void;
|
||||
|
||||
setDcsHandler(collect: string, flag: string, handler: IDcsHandler): void;
|
||||
clearDcsHandler(collect: string, flag: string): void;
|
||||
setDcsHandler(collectAndFlag: string, handler: IDcsHandler): void;
|
||||
clearDcsHandler(collectAndFlag: string): void;
|
||||
setDcsHandlerFallback(handler: IDcsHandler): void;
|
||||
|
||||
setErrorHandler(callback: (state: IParsingState) => IParsingState): void;
|
||||
|
||||
Reference in New Issue
Block a user