From 85a75ee035f7945ecbb82e76fc5e1ca5e81993ae Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Fri, 1 Dec 2017 01:39:56 +0900 Subject: [PATCH] Revert default command: find with -fstype required In #1061 we changed the default command to retry with a simpler find command with fewer arguments if the first find command failed. This was to support stripped-down verions of find that do not support -fstype argument. However, this caused an unwanted side-effect of yielding duplicate entries when the first command failed after producing some lines. We revert the change in this commit, so the default command will not work with find without -fstype support. But we now print better error message in that case so that the user can set up a working $FZF_DEFAULT_COMMAND. Close #1120 #1167 --- src/constants.go | 2 +- src/terminal.go | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/constants.go b/src/constants.go index e6ed170..8eddce9 100644 --- a/src/constants.go +++ b/src/constants.go @@ -55,7 +55,7 @@ var defaultCommand string func init() { if !util.IsWindows() { - defaultCommand = `set -o pipefail; (command find -L . -mindepth 1 \( -path '*/\.*' -o -fstype 'sysfs' -o -fstype 'devfs' -o -fstype 'devtmpfs' -o -fstype 'proc' \) -prune -o -type f -print -o -type l -print || command find -L . -mindepth 1 -path '*/\.*' -prune -o -type f -print -o -type l -print) 2> /dev/null | cut -b3-` + defaultCommand = `set -o pipefail; command find -L . -mindepth 1 \( -path '*/\.*' -o -fstype 'sysfs' -o -fstype 'devfs' -o -fstype 'devtmpfs' -o -fstype 'proc' \) -prune -o -type f -print -o -type l -print 2> /dev/null | cut -b3-` } else if os.Getenv("TERM") == "cygwin" { defaultCommand = `sh -c "command find -L . -mindepth 1 -path '*/\.*' -prune -o -type f -print -o -type l -print 2> /dev/null | cut -b3-"` } else { diff --git a/src/terminal.go b/src/terminal.go index 98d837c..7dbdb6e 100644 --- a/src/terminal.go +++ b/src/terminal.go @@ -691,7 +691,11 @@ func (t *Terminal) printInfo() { output += fmt.Sprintf(" (%d%%)", t.progress) } if !t.success && t.count == 0 { - output += " [ERROR]" + if len(os.Getenv("FZF_DEFAULT_COMMAND")) > 0 { + output = "[$FZF_DEFAULT_COMMAND failed]" + } else { + output = "[default command failed - $FZF_DEFAULT_COMMAND required]" + } } if pos+len(output) <= t.window.Width() { t.window.CPrint(tui.ColInfo, 0, output)