columnize (Debugger::ColumnizeFunctions)

    # File cli/ruby-debug/helper.rb, line 9
        def columnize(list, displaywidth=80)
          if not list.is_a?(Array)
            return "Expecting an Array, got #{list.class}\n"
          end
          if list.size == 0
            return  "<empty>\n"
          end
          nonstrings = []
          for str in list do
            nonstrings << str unless str.is_a?(String)
          end
          if nonstrings.size > 0
            return "Nonstrings: %s\n" % nonstrings.map {|non| non.to_s}.join(', ')
          end
          if 1 == list.size
            return "#{list[0]}\n"
          end
          # Try every row count from 1 upwards
          nrows = ncols = 0
          colwidths = []
          1.upto(list.size) do
            colwidths = []
            nrows += 1
            ncols = (list.size + nrows-1) / nrows
            totwidth = -2
            # Debugger.debugger if nrows > 1
            0.upto(ncols-1) do |col|
              colwidth = 0
              0.upto(nrows-1) do |row|
                i = row + nrows*col
                if i >= list.size
                  break
                end
                colwidth = [colwidth, list[i].size].max
              end
              colwidths << colwidth
              totwidth += colwidth + 2
              if totwidth > displaywidth
                break
              end
            end
            if totwidth <= displaywidth
              break
            end
          end
          s = ''
          0.upto(nrows-1) do |row|
            texts = []
            0.upto(ncols-1) do |col|
              i = row + nrows*col
              if i >= list.size
                x = ""
              else
                x = list[i]
              end
              texts << x
            end
            while texts and texts[-1] == ''
              texts = texts[0..-2]
            end
            0.upto(texts.size-1) do |col|
              texts[col] = texts[col].ljust(colwidths[col])
            end
            s += "%s\n" % texts.join("  ")
          end
          return s
        end