mirror of
https://github.com/junegunn/fzf.git
synced 2025-11-15 14:53:47 -05:00
tui/light: consume full 7-byte CSI sequences to prevent leftover printing (#4528)
- Fix parsing in escSequence so 7-byte CSI forms (e.g. ESC [ 5 ; 10 ~) set *sz = 7 and the entire sequence is consumed. - Prevents trailing bytes (like 10~) from remaining in the input buffer and being printed as stray characters.
This commit is contained in:
@@ -479,6 +479,7 @@ func (r *LightRenderer) escSequence(sz *int) Event {
|
|||||||
return Event{Delete, 0, nil}
|
return Event{Delete, 0, nil}
|
||||||
}
|
}
|
||||||
if len(r.buffer) == 7 && r.buffer[6] == '~' && r.buffer[4] == '1' {
|
if len(r.buffer) == 7 && r.buffer[6] == '~' && r.buffer[4] == '1' {
|
||||||
|
*sz = 7
|
||||||
switch r.buffer[5] {
|
switch r.buffer[5] {
|
||||||
case '0':
|
case '0':
|
||||||
return Event{AltShiftDelete, 0, nil}
|
return Event{AltShiftDelete, 0, nil}
|
||||||
@@ -525,6 +526,7 @@ func (r *LightRenderer) escSequence(sz *int) Event {
|
|||||||
return Event{PageUp, 0, nil}
|
return Event{PageUp, 0, nil}
|
||||||
}
|
}
|
||||||
if len(r.buffer) == 7 && r.buffer[6] == '~' && r.buffer[4] == '1' {
|
if len(r.buffer) == 7 && r.buffer[6] == '~' && r.buffer[4] == '1' {
|
||||||
|
*sz = 7
|
||||||
switch r.buffer[5] {
|
switch r.buffer[5] {
|
||||||
case '0':
|
case '0':
|
||||||
return Event{AltShiftPageUp, 0, nil}
|
return Event{AltShiftPageUp, 0, nil}
|
||||||
@@ -569,6 +571,7 @@ func (r *LightRenderer) escSequence(sz *int) Event {
|
|||||||
return Event{PageDown, 0, nil}
|
return Event{PageDown, 0, nil}
|
||||||
}
|
}
|
||||||
if len(r.buffer) == 7 && r.buffer[6] == '~' && r.buffer[4] == '1' {
|
if len(r.buffer) == 7 && r.buffer[6] == '~' && r.buffer[4] == '1' {
|
||||||
|
*sz = 7
|
||||||
switch r.buffer[5] {
|
switch r.buffer[5] {
|
||||||
case '0':
|
case '0':
|
||||||
return Event{AltShiftPageDown, 0, nil}
|
return Event{AltShiftPageDown, 0, nil}
|
||||||
|
|||||||
Reference in New Issue
Block a user