diff options
author | Junegunn Choi <junegunn.c@gmail.com> | 2019-11-02 19:41:59 +0900 |
---|---|---|
committer | Junegunn Choi <junegunn.c@gmail.com> | 2019-11-02 19:41:59 +0900 |
commit | 525040238e6b7cdec6b99962a60c8e0ccbd2b2e0 (patch) | |
tree | 1a1271ec62b8b438db0fa1767c396c0974e0e472 | |
parent | 33f89a08f32634d57cb145214e4647534433ac6c (diff) |
Fix behavior of 'deselect-all' to only deselect matches
To make it consistent with select-all and toggle-all.
Close #1364
-rw-r--r-- | src/terminal.go | 8 | ||||
-rwxr-xr-x | test/test_go.rb | 10 |
2 files changed, 14 insertions, 4 deletions
diff --git a/src/terminal.go b/src/terminal.go index 34df2105..4f66fdc0 100644 --- a/src/terminal.go +++ b/src/terminal.go @@ -1837,8 +1837,12 @@ func (t *Terminal) Loop() { } case actDeselectAll: if t.multi > 0 { - t.selected = make(map[int32]selectedItem) - t.version++ + for i := 0; i < t.merger.Length() && len(t.selected) > 0; i++ { + item := t.merger.Get(i).item + if _, found := t.selected[item.Index()]; found { + t.deselectItem(item) + } + } req(reqList, reqInfo) } case actToggle: diff --git a/test/test_go.rb b/test/test_go.rb index 2cfbcfdd..9282f9ee 100755 --- a/test/test_go.rb +++ b/test/test_go.rb @@ -865,16 +865,22 @@ class TestGoFZF < TestBase tmux.until { |lines| lines[-2].include? '(100)' } tmux.send_keys :Tab, :Tab tmux.until { |lines| lines[-2].include? '(98)' } + tmux.send_keys '100' + tmux.until { |lines| lines.match_count == 1 } + tmux.send_keys 'C-d' + tmux.until { |lines| lines[-2].include? '(97)' } + tmux.send_keys 'C-u' + tmux.until { |lines| lines.match_count == 100 } tmux.send_keys 'C-d' tmux.until { |lines| !lines[-2].include? '(' } - tmux.send_keys :Tab, :Tab + tmux.send_keys :BTab, :BTab tmux.until { |lines| lines[-2].include? '(2)' } tmux.send_keys 0 tmux.until { |lines| lines[-2].include? '10/100' } tmux.send_keys 'C-a' tmux.until { |lines| lines[-2].include? '(12)' } tmux.send_keys :Enter - assert_equal %w[2 1 10 20 30 40 50 60 70 80 90 100], + assert_equal %w[1 2 10 20 30 40 50 60 70 80 90 100], readonce.split($INPUT_RECORD_SEPARATOR) end |