Class: Search
- Inherits:
-
Object
- Object
- Search
- Defined in:
- lib/vimamsa/search.rb
Instance Method Summary collapse
-
#initialize ⇒ Search
constructor
A new instance of Search.
- #jump_to_next ⇒ Object
- #jump_to_previous ⇒ Object
- #set(search_str, search_type, buffer) ⇒ Object
- #update_search ⇒ Object
Constructor Details
#initialize ⇒ Search
Returns a new instance of Search.
18 19 20 21 |
# File 'lib/vimamsa/search.rb', line 18 def initialize() @cur_search_i = -1 @search_indexes = [] end |
Instance Method Details
#jump_to_next ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/vimamsa/search.rb', line 61 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 ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/vimamsa/search.rb', line 78 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) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# 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) debug @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 return nil end |
#update_search ⇒ Object
51 52 53 54 55 56 57 58 59 |
# File 'lib/vimamsa/search.rb', line 51 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 end |