grid: cell-shifting operations split wide pairs #12
Labels
No labels
Area/ci
Area/cli
Area/client
Area/client-core
Area/daemon
Area/deps
Area/docs
Area/grid
Area/manual
Area/nix
Area/protocol
Area/pty
Area/render
Area/shaping
Area/skills
Area/transport
Area/vt
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Performance
Kind/Security
Kind/Testing
perf-regression-accepted
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Blocked
Status
Need More Info
Status
Upstream
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
felis-terminal/felis#12
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
ICH, DCH, SL/SR, the IRM insert in
put_grapheme, DECSLRM-bounded shifts, alt-screen truncating resize and DECCRA move cells and then repair only the vacated span, never the shift boundaries. A wide pair crossing a boundary is split, for plain wide chars too.Repros (
_= Spacer):字b\r\e[P→_|b; ICH on a right half字b\r\e[C\e[@→·|·|_|b; IRM on a right half字b\r\e[C\e[4hX→·|X|_|b.abcdef字\r\e[@; SR\e[1 A; IRM\r\e[4hX; DECSLRM + ICH\e[?69h\e[1;4sab字\e[1;1H\e[@; DECSLRM + DCH\e[?69habc字x\e[1;4s\e[1;1H\e[P→b|c|字|·.a|b|c|字.\e[?69h\e[1;7s\e[1;7H❤️puts the Spacer outside the margin.rewrap_run(lib.rs~2046) later synthesizes a Spacer on resize, shifting the line right.Where:
ich/dch(crates/felis-grid/src/editing.rs~1631–1690),scroll_region_horizontal, IRM path input_grapheme, resize truncation, DECCRA.