diff options
author | Junegunn Choi <junegunn.c@gmail.com> | 2014-02-01 10:07:59 +0900 |
---|---|---|
committer | Junegunn Choi <junegunn.c@gmail.com> | 2014-02-01 10:07:59 +0900 |
commit | eca0a99fb40bad51fdfa9dd58df84707df15dada (patch) | |
tree | fe977468959e0b1de86e904b01c0f43927fc47d7 | |
parent | 96215c4619018d9d8d67d11d75deea571eb7ab9f (diff) |
Proper handling of typeahead arrow keys
To reproduce: `sleep 2; fzf` and press arrow keys
-rwxr-xr-x | fzf | 23 |
1 files changed, 16 insertions, 7 deletions
@@ -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 |