def _rl_isearch_init(direction)
cxt = _rl_scxt_alloc(RL_SEARCH_ISEARCH, 0)
if (direction < 0)
cxt.sflags |= SF_REVERSE
end
cxt.search_terminators = @_rl_isearch_terminators ? @_rl_isearch_terminators :
@default_isearch_terminators
hlist = history_list()
rl_maybe_replace_line()
i = 0
if (hlist)
i += 1 while(hlist[i])
end
cxt.hlen = i
cxt.lines = []
for i in 0 ... cxt.hlen
cxt.lines[i] = hlist[i].line
end
if (@_rl_saved_line_for_history)
cxt.lines[i] = @_rl_saved_line_for_history.line.dup
else
cxt.allocated_line = @rl_line_buffer.dup
cxt.lines << cxt.allocated_line
end
cxt.hlen+=1
cxt.history_pos = cxt.save_line
rl_save_prompt()
cxt.search_string_size = 128
cxt.search_string_index = 0
cxt.search_string = ""
cxt.direction = (direction >= 0) ? 1 : -1
cxt.sline = @rl_line_buffer
cxt.sline_len = cxt.sline.delete(0.chr).length
cxt.sline_index = @rl_point
@_rl_iscxt = cxt
cxt
end