fzy

terminal fuzzy finder picker

git clone https://9o.is/git/fzy.git

commit dfbc1e2732d106de6a6710cafb887ed22b4a830c
parent 6568ff3acd3430cb5b15d2adedb9e9a09fd35031
Author: John Hawthorn <john@hawthorn.email>
Date:   Sun, 17 Jun 2018 11:30:11 -0700

Initialize tty before reading choices

It's possible for user input to arrive while fzy was still reading
choices from stdin. Previously, this would happen before the correct
termios were set, causing fzy to misinterpret Enter as Ctrl-J for
example.

Fixes #81

Diffstat:
Msrc/fzy.c | 5++++-
1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/fzy.c b/src/fzy.c @@ -20,16 +20,17 @@ int main(int argc, char *argv[]) { choices_t choices; choices_init(&choices, &options); - choices_fread(&choices, stdin); if (options.benchmark) { if (!options.filter) { fprintf(stderr, "Must specify -e/--show-matches with --benchmark\n"); exit(EXIT_FAILURE); } + choices_fread(&choices, stdin); for (int i = 0; i < options.benchmark; i++) choices_search(&choices, options.filter); } else if (options.filter) { + choices_fread(&choices, stdin); choices_search(&choices, options.filter); for (size_t i = 0; i < choices_available(&choices); i++) { if (options.show_scores) @@ -41,6 +42,8 @@ int main(int argc, char *argv[]) { tty_t tty; tty_init(&tty, options.tty_filename); + choices_fread(&choices, stdin); + if (options.num_lines > choices.size) options.num_lines = choices.size;