Interface: IParser

Allows hooking into the parser for custom handling of escape sequences.

Note on sync vs. async handlers: xterm.js implements all parser actions with synchronous handlers. In general custom handlers should also operate in sync mode wherever possible to keep the parser fast. Still the exposed interfaces allow to register async handlers by returning a Promise<boolean>. Here the parser will pause input processing until the promise got resolved or rejected (in-band blocking). This “full stop” on the input chain allows to implement backpressure from a certain async action while the terminal state will not progress any further from input. It does not mean that the terminal state will not change at all in between, as user actions like resize or reset are still processed immediately. It is an error to assume a stable terminal state while giving back control in between, e.g. by multiple chained then calls. Downside of an async handler is a rather bad throughput performance, thus use async handlers only as a last resort or for actions that have to rely on async interfaces itself.

Hierarchy

  • IParser

Index

Methods

Methods

registerCsiHandler

registerCsiHandler(id: IFunctionIdentifier, callback: function): IDisposable

Defined in xterm.d.ts:1775

Adds a handler for CSI escape sequences.

Parameters:

id: IFunctionIdentifier

Specifies the function identifier under which the callback gets registered, e.g. {final: ‘m’} for SGR.

callback: function

The function to handle the sequence. The callback is called with the numerical params. If the sequence has subparams the array will contain subarrays with their numercial values. Return true if the sequence was handled, false if the parser should try a previous handler. The most recently added handler is tried first.

▸ (params: number number[][]): *boolean Promise‹boolean›*

Parameters:

Name Type
params number | number[][]

Returns: IDisposable

An IDisposable you can call to remove this handler.


registerDcsHandler

registerDcsHandler(id: IFunctionIdentifier, callback: function): IDisposable

Defined in xterm.d.ts:1793

Adds a handler for DCS escape sequences.

Parameters:

id: IFunctionIdentifier

Specifies the function identifier under which the callback gets registered, e.g. {intermediates: ‘$’ final: ‘q’} for DECRQSS.

callback: function

The function to handle the sequence. Note that the function will only be called once if the sequence finished sucessfully. There is currently no way to intercept smaller data chunks, data chunks will be stored up until the sequence is finished. Since DCS sequences are not limited by the amount of data this might impose a problem for big payloads. Currently xterm.js limits DCS payload to 10 MB which should give enough room for most use cases. The function gets the payload and numerical parameters as arguments. Return true if the sequence was handled, false if the parser should try a previous handler. The most recently added handler is tried first.

▸ (data: string, param: number number[][]): *boolean Promise‹boolean›*

Parameters:

Name Type
data string
param number | number[][]

Returns: IDisposable

An IDisposable you can call to remove this handler.


registerEscHandler

registerEscHandler(id: IFunctionIdentifier, handler: function): IDisposable

Defined in xterm.d.ts:1805

Adds a handler for ESC escape sequences.

Parameters:

id: IFunctionIdentifier

Specifies the function identifier under which the callback gets registered, e.g. {intermediates: ‘%’ final: ‘G’} for default charset selection.

handler: function

▸ (): *boolean Promise‹boolean›*

Returns: IDisposable

An IDisposable you can call to remove this handler.


registerOscHandler

registerOscHandler(ident: number, callback: function): IDisposable

Defined in xterm.d.ts:1822

Adds a handler for OSC escape sequences.

Parameters:

ident: number

The number (first parameter) of the sequence.

callback: function

The function to handle the sequence. Note that the function will only be called once if the sequence finished sucessfully. There is currently no way to intercept smaller data chunks, data chunks will be stored up until the sequence is finished. Since OSC sequences are not limited by the amount of data this might impose a problem for big payloads. Currently xterm.js limits OSC payload to 10 MB which should give enough room for most use cases. The callback is called with OSC data string. Return true if the sequence was handled, false if the parser should try a previous handler. The most recently added handler is tried first.

▸ (data: string): *boolean Promise‹boolean›*

Parameters:

Name Type
data string

Returns: IDisposable

An IDisposable you can call to remove this handler.