Introduce escape time-out for better handling of escape sequences

pull/25/head
Junegunn Choi 11 years ago
parent 19e24bd644
commit 871dfb709d

27
fzf

@ -753,8 +753,15 @@ class FZF
end end
end end
def read_nb chars = 1, default = nil def read_nb chars = 1, default = nil, tries = 20
@tty.read_nonblock(chars).ord rescue default tries.times do |_|
begin
return @tty.read_nonblock(chars).ord
rescue Exception
sleep 0.01
end
end
default
end end
def get_mouse def get_mouse
@ -808,7 +815,7 @@ class FZF
end end
ord = ord =
case ord = read_nb(1, :esc) case read_nb(1, :esc)
when 91 when 91
case read_nb(1, nil) case read_nb(1, nil)
when 68 then ctrl(:b) when 68 then ctrl(:b)
@ -816,12 +823,14 @@ class FZF
when 66 then ctrl(:j) when 66 then ctrl(:j)
when 65 then ctrl(:k) when 65 then ctrl(:k)
when 90 then :stab when 90 then :stab
when 49 then read_nb(1); ctrl(:a) when 50 then read_nb; :ins
when 50 then read_nb(1); :ins when 51 then read_nb; :del
when 51 then read_nb(1); :del when 53 then read_nb; :pgup
when 52 then read_nb(1); ctrl(:e) when 54 then read_nb; :pgdn
when 53 then read_nb(1); :pgup when 49 then read_nb; ctrl(:a)
when 54 then read_nb(1); :pgdn when 52 then read_nb; ctrl(:e)
when 72 then ctrl(:a)
when 70 then ctrl(:e)
when 77 when 77
get_mouse get_mouse
end end

Loading…
Cancel
Save