# File lib/sup/modes/scroll-mode.rb, line 175
  def draw_line ln, opts={}
    regex = /(#{@search_query})/i
    case(s = self[ln])
    when String
      if in_search?
        draw_line_from_array ln, matching_text_array(s, regex), opts
      else
        draw_line_from_string ln, s, opts
      end
    when Array
      if in_search?
        ## seems like there ought to be a better way of doing this
        array = []
        s.each do |color, text| 
          if text =~ regex
            array += matching_text_array text, regex, color
          else
            array << [color, text]
          end
        end
        draw_line_from_array ln, array, opts
      else
        draw_line_from_array ln, s, opts
      end
    else
      raise "unknown drawable object: #{s.inspect} in #{self} for line #{ln}" # good for debugging
    end

      ## speed test
      # str = s.map { |color, text| text }.join
      # buffer.write ln - @topline, 0, str, :color => :none, :highlight => opts[:highlight]
      # return
  end