summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2019-11-02 19:41:59 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2019-11-02 19:41:59 +0900
commit525040238e6b7cdec6b99962a60c8e0ccbd2b2e0 (patch)
tree1a1271ec62b8b438db0fa1767c396c0974e0e472
parent33f89a08f32634d57cb145214e4647534433ac6c (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.go8
-rwxr-xr-xtest/test_go.rb10
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