Improve -0 and -1 as suggested in #36

- Make -0 and -1 work without -q
- Change exit status to 0 when exiting with -0
pull/37/head
Junegunn Choi 10 years ago
parent 22d3929ae3
commit 02c01c81a0

@ -72,8 +72,8 @@ usage: fzf [options]
Scripting
-q, --query=STR Start the finder with the given query
-1, --select-1 (with --query) Automatically select the only match
-0, --exit-0 (with --query) Exit when there's no match
-1, --select-1 Automatically select the only match
-0, --exit-0 Exit immediately when there's no match
-f, --filter=STR Filter mode. Do not start interactive finder.
Environment variables

16
fzf

@ -7,7 +7,7 @@
# / __/ / /_/ __/
# /_/ /___/_/ Fuzzy finder for your shell
#
# Version: 0.8.3 (April 2, 2014)
# Version: 0.8.3 (April 3, 2014)
#
# Author: Junegunn Choi
# URL: https://github.com/junegunn/fzf
@ -194,16 +194,16 @@ class FZF
filter_list @new
else
start_reader
emit(:key) { q = @query.get; [q, q.length] } unless @query.empty?
if !@query.empty? && (@select1 || @exit0)
emit(:key) { q = @query.get; [q, q.length] } unless empty = @query.empty?
if @select1 || @exit0
start_search do |loaded, matches|
len = matches.length
len = empty ? @count.get : matches.length
if loaded
if @select1 && len == 1
puts matches.first.first
puts empty ? matches.first : matches.first.first
exit 0
elsif @exit0 && len == 0
exit 1
exit 0
end
end
@ -276,8 +276,8 @@ class FZF
Scripting
-q, --query=STR Start the finder with the given query
-1, --select-1 (with --query) Automatically select the only match
-0, --exit-0 (with --query) Exit when there's no match
-1, --select-1 Automatically select the only match
-0, --exit-0 Exit immediately when there's no match
-f, --filter=STR Filter mode. Do not start interactive finder.
Environment variables

@ -590,6 +590,21 @@ class TestFZF < MiniTest::Unit::TestCase
end
end
def test_select_1_without_query
stream = stream_for "Hello World"
output = StringIO.new
begin
$stdout = output
FZF.new(%w[--select-1], stream).start
rescue SystemExit => e
assert_equal 0, e.status
assert_equal 'Hello World', output.string.chomp
ensure
$stdout = STDOUT
end
end
def test_select_1_ambiguity
stream = stream_for "Hello\nWorld"
begin
@ -611,7 +626,22 @@ class TestFZF < MiniTest::Unit::TestCase
$stdout = output
FZF.new(%w[--query=zz --exit-0], stream).start
rescue SystemExit => e
assert_equal 1, e.status
assert_equal 0, e.status
assert_equal '', output.string
ensure
$stdout = STDOUT
end
end
def test_exit_0_without_query
stream = stream_for ""
output = StringIO.new
begin
$stdout = output
FZF.new(%w[--exit-0], stream).start
rescue SystemExit => e
assert_equal 0, e.status
assert_equal '', output.string
ensure
$stdout = STDOUT

Loading…
Cancel
Save