X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=lib%2Fsup%2Fmodes%2Fscroll-mode.rb;h=c13142599e9aed1aaad9bde0c1a029b2331fa72e;hb=07cbc361fdeed42067e9bdfa24270024acca4993;hp=66c098be06b43d343ac7b0e120589d71b3ea20f7;hpb=1dbbdfaa3150369cc2b2d7dce95080d5b76b68fd;p=sup diff --git a/lib/sup/modes/scroll-mode.rb b/lib/sup/modes/scroll-mode.rb index 66c098b..c131425 100644 --- a/lib/sup/modes/scroll-mode.rb +++ b/lib/sup/modes/scroll-mode.rb @@ -3,7 +3,7 @@ module Redwood class ScrollMode < Mode ## we define topline and botline as the top and bottom lines of any ## content in the currentview. - + ## we left leftcol and rightcol as the left and right columns of any ## content in the current view. but since we're operating in a ## line-centric fashion, rightcol is always leftcol + the buffer @@ -73,7 +73,7 @@ class ScrollMode < Mode end if line @search_line = line + 1 - search_goto_pos line, col, col + @search_query.length + search_goto_pos line, col, col + @search_query.display_length buffer.mark_dirty else BufferManager.flash "Not found!" @@ -164,7 +164,7 @@ protected if match return [i, offset + match] else - offset += string.length + offset += string.display_length end end end @@ -219,24 +219,25 @@ protected def draw_line_from_array ln, a, opts xpos = 0 - a.each do |color, text| + a.each_with_index do |(color, text), i| raise "nil text for color '#{color}'" if text.nil? # good for debugging - - if xpos + text.length < @leftcol + l = text.display_length + no_fill = i != a.size - 1 + + if xpos + l < @leftcol buffer.write ln - @topline, 0, "", :color => color, :highlight => opts[:highlight] - xpos += text.length elsif xpos < @leftcol ## partial buffer.write ln - @topline, 0, text[(@leftcol - xpos) .. -1], :color => color, - :highlight => opts[:highlight] - xpos += text.length + :highlight => opts[:highlight], :no_fill => no_fill else buffer.write ln - @topline, xpos - @leftcol, text, - :color => color, :highlight => opts[:highlight] - xpos += text.length + :color => color, :highlight => opts[:highlight], + :no_fill => no_fill end + xpos += l end end