grid: a row-local shift moves one row of a multi-row OSC 66 block #24
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#24
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 and the IRM insert shift only the cursor row. An OSC 66 character with
s>=2spans several rows, so a shift on one of them moves that row of the block and leaves the others where they were. The block's cells then no longer line up under its primary:sized_block_atfinds the primary but the footprint it computes covers the wrong cells, and the renderer draws a torn glyph.Repro (3×10):
\e]66;s=2;A\a\e[1;1H\e[@moves the top row of A's 2×2 block right by one and leaves the bottom row in place.The cut at a shift's boundaries is handled (#12: a block a boundary crosses is erased whole). What remains is an uncut multi-row block inside the shifted span. kitty erases every multi-line multicell character intersecting a row-local shift (
nuke_multiline_char_intersecting_withinscreen_insert_characters/screen_delete_characters); the same rule here would be: before a row-local shift, clear every sized block withrows > 1that intersects[cur, edge)on that row. DECIC/DECDC and SL/SR shift every row of the region and move such a block whole unless the region's top or bottom cuts it, which is the same vertical-seam question for scroll regions.