Add support for the DECALN escape sequence #3968
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary of the Pull Request
This adds support for the
DECALN
escape sequence, which produces a kind of test pattern, originally used on VT terminals to adjust the screen alignment. It's needed to pass several of the tests in the Vttest suite.PR Checklist
Detailed Description of the Pull Request / Additional comments
To start with, the
ActionEscDispatch
method in theOutputStateMachineEngine
needed to be extended to check for a new intermediate type (#
). Then when that intermediate is followed by an8
, it dispatches to a newScreenAlignmentPattern
method in theITermDispatch
interface.The implementation of the
ScreenAlignmentPattern
itself is fairly simple. It uses the recently addedPrivateFillRegion
API to fill the screen with the characterE
using default attributes. Then in addition to that, a bunch of VT properties are reset:Validation Steps Performed
I've added a screen buffer test that makes sure the
DECALN
sequence fills the screen with the correct character and attributes, and that the above mentioned properties are all updated appropriately.I've also tested in Vttest, and confirmed that the first two pages of the Test of cursor movements are now showing the frame of E's that are expected there.