summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorhut <hut@lavabit.com>2010-04-14 00:53:39 +0200
committerhut <hut@lavabit.com>2010-04-14 00:53:39 +0200
commit3dd1793a9f60b318c73e1a0d5eade6349ad322fa (patch)
tree111fbc1f54c1220748df067a8b4cd1d5004e6f79
parentf99b82c1ae6fc7bc927ad0f216579162574d4fbe (diff)
downloadranger-3dd1793a9f60b318c73e1a0d5eade6349ad322fa.tar.gz
dirarg: improved
-rw-r--r--ranger/core/actions.py12
-rw-r--r--ranger/ext/direction.py11
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
rofani-tty/commit/tests/functionaltests/test_connect.c?id=a48b9fcec2385c5d571f1f02ed6e769d6b4ee821'>a48b9fce ^
79ecff1c ^
5aab876a ^
7f98e013 ^
a28f0d9e ^
e2fa67fa ^
79ecff1c ^

7fb00a1e ^
db9376d8 ^


a48b9fce ^
db9376d8 ^
5aab876a ^
7f98e013 ^


db9376d8 ^







6640a089 ^
a48b9fce ^
db9376d8 ^
a522d022 ^
db9376d8 ^

37600846 ^
f17afcf5 ^
37600846 ^
a48b9fce ^
37600846 ^
a48b9fce ^
7f98e013 ^
37600846 ^


a48b9fce ^



7f98e013 ^
37600846 ^


a48b9fce ^



7f98e013 ^
37600846 ^



a522d022 ^
f8c5ed57 ^

7f98e013 ^
f8c5ed57 ^



a522d022 ^
37600846 ^
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95