Improve performance when pasting large amounts of text into readline by not redrawing on every char

This commit is contained in:
Kovid Goyal
2022-10-09 09:15:17 +05:30
parent c0f17c279e
commit 834385baff
4 changed files with 31 additions and 8 deletions

View File

@@ -46,13 +46,14 @@ type EscapeCodeParser struct {
current_callback func([]byte) error
// Callbacks
HandleRune func(rune) error
HandleCSI func([]byte) error
HandleOSC func([]byte) error
HandleDCS func([]byte) error
HandlePM func([]byte) error
HandleSOS func([]byte) error
HandleAPC func([]byte) error
HandleRune func(rune) error
HandleEndOfBracketedPaste func()
HandleCSI func([]byte) error
HandleOSC func([]byte) error
HandleDCS func([]byte) error
HandlePM func([]byte) error
HandleSOS func([]byte) error
HandleAPC func([]byte) error
}
func (self *EscapeCodeParser) InBracketedPaste() bool { return self.state == bracketed_paste }
@@ -183,6 +184,9 @@ func (self *EscapeCodeParser) dispatch_char(ch utils.UTF8State) error {
self.bracketed_paste_buffer = append(self.bracketed_paste_buffer, ch)
if self.bracketed_paste_buffer[len(self.bracketed_paste_buffer)-1] == '~' {
self.reset_state()
if self.HandleEndOfBracketedPaste != nil {
self.HandleEndOfBracketedPaste()
}
}
return nil
} else {