Print [ERROR] on info line when the default command failed

With zero result.

Related: https://github.com/junegunn/fzf.vim/issues/22#issuecomment-311869805
This commit is contained in:
Junegunn Choi 2017-07-01 01:13:15 +09:00
parent 3fc795340d
commit 07ef2b051c
No known key found for this signature in database
GPG Key ID: 254BC280FEF9C627
4 changed files with 25 additions and 11 deletions

View File

@ -228,7 +228,7 @@ func Run(opts *Options, revision string) {
case EvtReadNew, EvtReadFin:
reading = reading && evt == EvtReadNew
snapshot, count := chunkList.Snapshot()
terminal.UpdateCount(count, !reading)
terminal.UpdateCount(count, !reading, value.(bool))
matcher.Reset(snapshot, terminal.Input(), false, !reading, sort)
case EvtSearchNew:

View File

@ -17,16 +17,17 @@ type Reader struct {
// ReadSource reads data from the default command or from standard input
func (r *Reader) ReadSource() {
var success bool
if util.IsTty() {
cmd := os.Getenv("FZF_DEFAULT_COMMAND")
if len(cmd) == 0 {
cmd = defaultCommand
}
r.readFromCommand(cmd)
success = r.readFromCommand(cmd)
} else {
r.readFromStdin()
success = r.readFromStdin()
}
r.eventBox.Set(EvtReadFin, nil)
r.eventBox.Set(EvtReadFin, success)
}
func (r *Reader) feed(src io.Reader) {
@ -50,7 +51,7 @@ func (r *Reader) feed(src io.Reader) {
}
}
if r.pusher(bytea) {
r.eventBox.Set(EvtReadNew, nil)
r.eventBox.Set(EvtReadNew, true)
}
}
if err != nil {
@ -59,20 +60,21 @@ func (r *Reader) feed(src io.Reader) {
}
}
func (r *Reader) readFromStdin() {
func (r *Reader) readFromStdin() bool {
r.feed(os.Stdin)
return true
}
func (r *Reader) readFromCommand(cmd string) {
func (r *Reader) readFromCommand(cmd string) bool {
listCommand := util.ExecCommand(cmd)
out, err := listCommand.StdoutPipe()
if err != nil {
return
return false
}
err = listCommand.Start()
if err != nil {
return
return false
}
defer listCommand.Wait()
r.feed(out)
return listCommand.Wait() == nil
}

View File

@ -94,6 +94,7 @@ type Terminal struct {
count int
progress int
reading bool
success bool
jumping jumpMode
jumpLabels string
printer func(string)
@ -372,6 +373,7 @@ func NewTerminal(opts *Options, eventBox *util.EventBox) *Terminal {
ansi: opts.Ansi,
tabstop: opts.Tabstop,
reading: true,
success: true,
jumping: jumpDisabled,
jumpLabels: opts.JumpLabels,
printer: opts.Printer,
@ -401,10 +403,11 @@ func (t *Terminal) Input() []rune {
}
// UpdateCount updates the count information
func (t *Terminal) UpdateCount(cnt int, final bool) {
func (t *Terminal) UpdateCount(cnt int, final bool, success bool) {
t.mutex.Lock()
t.count = cnt
t.reading = !final
t.success = success
t.mutex.Unlock()
t.reqBox.Set(reqInfo, nil)
if final {
@ -682,6 +685,9 @@ func (t *Terminal) printInfo() {
if t.progress > 0 && t.progress < 100 {
output += fmt.Sprintf(" (%d%%)", t.progress)
}
if !t.success && t.count == 0 {
output += " [ERROR]"
}
if pos+len(output) <= t.window.Width() {
t.window.CPrint(tui.ColInfo, 0, output)
}

View File

@ -260,6 +260,12 @@ class TestGoFZF < TestBase
assert_equal 'hello', readonce.chomp
end
def test_fzf_default_command_failure
tmux.send_keys fzf.sub('FZF_DEFAULT_COMMAND=', 'FZF_DEFAULT_COMMAND=false'), :Enter
tmux.until { |lines| lines[-2].include?('ERROR') }
tmux.send_keys :Enter
end
def test_key_bindings
tmux.send_keys "#{FZF} -q 'foo bar foo-bar'", :Enter
tmux.until { |lines| lines.last =~ /^>/ }