code: def operator_range(self, document):
          
          start, end = self.sorted()
          doc = document
  
          if (self.type == TextObjectType.EXCLUSIVE and
                  doc.translate_index_to_position(end + doc.cursor_position)[1] == 0):
              # If the motion is exclusive and the end of motion is on the first
              # column, the end position becomes end of previous line.
              end -= 1
          if self.type == TextObjectType.INCLUSIVE:
              end += 1
          if self.type == TextObjectType.LINEWISE:
              # Select whole lines
              row, col = doc.translate_index_to_position(start + doc.cursor_position)
              start = doc.translate_row_col_to_index(row, 0) - doc.cursor_position
              row, col = doc.translate_index_to_position(end + doc.cursor_position)
              end = doc.translate_row_col_to_index(row, len(doc.lines[row])) - doc.cursor_position
          return start, end
docs: Return a (start, end) tuple with start <= end that indicates the range
          operators should operate on.
          `buffer` is used to get start and end of line positions.