code: def preferred_width(self, cli, max_available_width):
          
          complete_state = cli.current_buffer.complete_state
          column_width = self._get_column_width(complete_state)
          result = int(column_width * math.ceil(len(complete_state.current_completions) / float(self.min_rows)))
  
          # When the desired width is still more than the maximum available,
          # reduce by removing columns until we are less than the available
          # width.
          while result > column_width and result > max_available_width - self._required_margin:
              result -= column_width
          return result + self._required_margin
docs: Preferred width: prefer to use at least min_rows, but otherwise as much
          as possible horizontally.