def _rl_dispatch_subseq(key, map, got_subseq)
func = map[key]
if (func)
@rl_executing_keymap = map
@rl_dispatching = true
rl_setstate(RL_STATE_DISPATCHING)
send(map[key],@rl_numeric_arg * @rl_arg_sign, key)
rl_unsetstate(RL_STATE_DISPATCHING)
@rl_dispatching = false
if (@rl_pending_input == 0 && map[key] != :rl_digit_argument)
@rl_last_func = map[key]
end
else
if(map.keys.detect{|x| x =~ /^#{Regexp.escape(key)}/})
key += _rl_subseq_getchar(key)
return _rl_dispatch_subseq(key,map,got_subseq)
elsif(key.length>1 && key[1].ord < 0x7f)
_rl_abort_internal()
return -1
else
@rl_dispatching = true
rl_setstate(RL_STATE_DISPATCHING)
send(:rl_insert,@rl_numeric_arg * @rl_arg_sign, key)
rl_unsetstate(RL_STATE_DISPATCHING)
@rl_dispatching = false
end
end
0
end