summaryrefslogtreecommitdiff
path: root/src/terminal.go
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2025-03-22 09:15:26 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2025-03-22 09:17:18 +0900
commit29cf28d8455c4c749694e65cc36b3ea71db26c4f (patch)
tree13b1a07d54b95799c362bcfab06cfe9759a3e8ec /src/terminal.go
parent7e4dbb5f3b93d38b20545a1e5a668e44cab440ce (diff)
downloadfzf-29cf28d8455c4c749694e65cc36b3ea71db26c4f.tar.gz
Suppress 'change' event during bracketed paste mode
Close #4316
Diffstat (limited to 'src/terminal.go')
-rw-r--r--src/terminal.go15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/terminal.go b/src/terminal.go
index 923c6005..d892a340 100644
--- a/src/terminal.go
+++ b/src/terminal.go
@@ -279,6 +279,7 @@ type Terminal struct {
yanked []rune
input []rune
inputOverride *[]rune
+ pasting *[]rune
multi int
multiLine bool
sort bool
@@ -459,6 +460,8 @@ const (
actStart
actClick
actInvalid
+ actBracketedPasteBegin
+ actBracketedPasteEnd
actChar
actMouse
actBeginningOfLine
@@ -668,6 +671,8 @@ func defaultKeymap() map[tui.Event][]*action {
add(tui.Fatal, actFatal)
add(tui.Invalid, actInvalid)
+ add(tui.BracketedPasteBegin, actBracketedPasteBegin)
+ add(tui.BracketedPasteEnd, actBracketedPasteEnd)
add(tui.CtrlA, actBeginningOfLine)
add(tui.CtrlB, actBackwardChar)
add(tui.CtrlC, actAbort)
@@ -4977,6 +4982,14 @@ func (t *Terminal) Loop() error {
case actInvalid:
t.mutex.Unlock()
return false
+ case actBracketedPasteBegin:
+ current := []rune(t.input)
+ t.pasting = &current
+ case actBracketedPasteEnd:
+ if t.pasting != nil {
+ queryChanged = string(t.input) != string(*t.pasting)
+ t.pasting = nil
+ }
case actTogglePreview, actShowPreview, actHidePreview:
var act bool
switch a.t {
@@ -6036,7 +6049,7 @@ func (t *Terminal) Loop() error {
} else {
t.truncateQuery()
}
- queryChanged = string(previousInput) != string(t.input)
+ queryChanged = queryChanged || t.pasting == nil && string(previousInput) != string(t.input)
if queryChanged {
t.inputOverride = nil
}