From eca0a99fb40bad51fdfa9dd58df84707df15dada Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Sat, 1 Feb 2014 10:07:59 +0900 Subject: Proper handling of typeahead arrow keys To reproduce: `sleep 2; fzf` and press arrow keys --- fzf | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/fzf b/fzf index c4bc1d5c..37773692 100755 --- a/fzf +++ b/fzf @@ -142,7 +142,7 @@ class FZF def start $stdout.reopen($stderr) - render { init_screen } + init_screen start_reader start_renderer start_search @@ -531,6 +531,8 @@ class FZF end | (bold ? C::A_BOLD : 0) end end + + C.refresh end def start_reader @@ -819,13 +821,20 @@ class FZF end when 27 C.stdscr.timeout = 0 - ch = + ch = # Typeahead arrow keys case ch2 = C.getch - when 'b' then :alt_b - when 'f' then :alt_f - when nil then :esc - else - ch2 + when '[', 91 + case ch3 = C.getch + when 'D', 68 then ctrl(:b) + when 'C', 67 then ctrl(:f) + when 'B', 66 then ctrl(:j) + when 'A', 65 then ctrl(:k) + else ch3 + end + when 'b', 98 then :alt_b + when 'f', 102 then :alt_f + when nil then :esc + else ch2 end end -- cgit v1.2.3