Skip to content

Question: xterm.js 4.0+ handling of EL when cursor is in deferred EOL position #2979

@DHowett

Description

@DHowett

Details

  • Browser and browser version: Chromium Edge, 84.0.522; VS Code 1.46
  • OS version: This does not appear to matter
  • xterm.js version: 4.0.1+ - tested on 4.7, 4.1, 4.0.1, 3.14.5

Steps to reproduce

Print 80 characters in an 80x25 terminal, then emit an EL. What should happen?

term.open(document.getElementById('terminal'));
term.resize(80, 25);
term.write("0        10        20        30        40        50        60        70        8\x1b[K~\x1b[1;5H");

Result <= 3.15

image

Result >= 4.0

image

This manifests in VSCode 1.46 with the new console host changes in Windows 21H1 as buffer corruption when running Windows VIM.

image

I'm not certain this is a bug, exactly, but it does present an interesting conundrum.

  • VTE handles it like <=3.15 (therefore so does gnome-terminal)
  • Konsole handles it like <=3.15
  • Alacritty handles it like <=3.15
  • PuTTY handles it like <=3.15
  • Conhost handles it like <=3.15
  • Xterm-344 (and the newest version, Xterm-356) handles it like >=4.0
  • rxvt-unicode v9.22 does both (it destroys the 8 but leaves the ~ on the next line)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions