class Search
Public Class Methods
new()
click to toggle source
# File lib/vimamsa/search.rb, line 18 def initialize() @cur_search_i = -1 @search_indexes = [] end
Public Instance Methods
jump_to_next()
click to toggle source
# File lib/vimamsa/search.rb, line 60 def jump_to_next() return if @cur_search_i < 0 # TODO: optimize, update only after buffer changed # or search only for the next match update_search return if !@search_indexes.any? # if @search_indexes.size > @cur_search_i + 1 # @cur_search_i = @cur_search_i + 1 # else # @cur_search_i = 0 # end @buffer.set_pos(@search_indexes[@cur_search_i]) end
jump_to_previous()
click to toggle source
# File lib/vimamsa/search.rb, line 77 def jump_to_previous() return if @cur_search_i < 0 update_search return if !@search_indexes.any? # TODO: hack 2.times { if @cur_search_i - 1 < 0 @cur_search_i = @search_indexes.size - 1 else @cur_search_i = @cur_search_i - 1 end break if @buffer.pos != @search_indexes[@cur_search_i] } @buffer.set_pos(@search_indexes[@cur_search_i]) end
set(search_str, search_type, buffer)
click to toggle source
# File lib/vimamsa/search.rb, line 23 def set(search_str, search_type, buffer) @search_str = search_str @search_type = search_type @buffer = buffer regex = Regexp.escape(search_str) if /.*\p{Upper}.*/ =~ regex @reg = Regexp.new(regex) else # if does not contain uppercase characters, ignore case @reg = Regexp.new(regex, Regexp::IGNORECASE) end @search_indexes = scan_indexes(buffer, @reg) puts @search_indexes.inspect @cur_search_i = -1 if @search_indexes.any? @cur_search_i = 0 startpos = @search_indexes.select { |x| x > @buffer.pos }.min if startpos != nil @cur_search_i = @search_indexes.find_index(startpos) end @buffer.set_pos(@search_indexes[@cur_search_i]) else return false end end
update_search()
click to toggle source
# File lib/vimamsa/search.rb, line 49 def update_search() @search_indexes = scan_indexes(@buffer, @reg) @cur_search_i = 0 startpos = @search_indexes.select { |x| x > @buffer.pos }.min if startpos != nil @cur_search_i = @search_indexes.find_index(startpos) end # Ripl.start :binding => binding end