def get_visual_repeat_data(self):
        if self.mode not in (modes.VISUAL, modes.VISUAL_LINE):
            return

        first = first_sel(self.view)
        lines = (utils.row_at(self.view, first.end()) -
                 utils.row_at(self.view, first.begin()))

        if lines > 0:
            chars = utils.col_at(self.view, first.end())
        else:
            chars = first.size()

        return (lines, chars, self.mode)
Returns the data needed to restore visual selections before
dataset/ETHPy150Open guillermooo/Vintageous/state.py/State.get_visual_repeat_data