diff options
-rw-r--r-- | ranger/core/actions.py | 12 | ||||
-rw-r--r-- | ranger/ext/direction.py | 11 |
2 files changed, 10 insertions, 13 deletions
diff --git a/ranger/core/actions.py b/ranger/core/actions.py index 15d0d017..b320396a 100644 --- a/ranger/core/actions.py +++ b/ranger/core/actions.py @@ -547,19 +547,19 @@ class Actions(FileManagerAware, EnvironmentAware, SettingsAware): cwd = self.env.cwd if not narg and not dirarg: selected = (f for f in self.env.get_selection() if f in cwd.files) - self.env.copy = set(selected) else: - direction = Direction(dirarg or {}) - offset = 0 - if not direction.vertical(): + if not dirarg and narg: direction = Direction(down=1) - offset = -1 + offset = 0 + else: + direction = Direction(dirarg) + offset = 1 pos, selected = direction.select( override=narg, lst=cwd.files, current=cwd.pointer, pagesize=self.env.termsize[0], offset=offset) - self.env.copy = set(selected) self.env.cwd.pointer = pos self.env.cwd.correct_pointer() + self.env.copy = set(selected) self.env.cut = False self.ui.browser.main_column.request_redraw() diff --git a/ranger/ext/direction.py b/ranger/ext/direction.py index cefd32bc..b9fbcac9 100644 --- a/ranger/ext/direction.py +++ b/ranger/ext/direction.py @@ -134,11 +134,8 @@ class Direction(dict): pos += current return int(max(min(pos, maximum + offset - 1), minimum)) - def select(self, lst, override, current, pagesize, offset=0): - destination = self.move(direction=self.down(), override=override, + def select(self, lst, override, current, pagesize, offset=1): + dest = self.move(direction=self.down(), override=override, current=current, pagesize=pagesize, minimum=0, maximum=len(lst)) - if destination > current: - destination += offset - return destination, lst[current:destination + 1] - destination -= offset - return destination, lst[destination:current + 1] + selection = lst[min(current, dest):max(current, dest) + offset] + return dest + offset - 1, selection |