diff options
| author | Junegunn Choi <junegunn.c@gmail.com> | 2025-03-22 09:15:26 +0900 |
|---|---|---|
| committer | Junegunn Choi <junegunn.c@gmail.com> | 2025-03-22 09:17:18 +0900 |
| commit | 29cf28d8455c4c749694e65cc36b3ea71db26c4f (patch) | |
| tree | 13b1a07d54b95799c362bcfab06cfe9759a3e8ec /src/terminal.go | |
| parent | 7e4dbb5f3b93d38b20545a1e5a668e44cab440ce (diff) | |
| download | fzf-29cf28d8455c4c749694e65cc36b3ea71db26c4f.tar.gz | |
Suppress 'change' event during bracketed paste mode
Close #4316
Diffstat (limited to 'src/terminal.go')
| -rw-r--r-- | src/terminal.go | 15 |
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 = ¤t + 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 } |
