summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorDavid Pugnasse <david.pugnasse@gmail.com>2011-10-24 00:58:33 +0200
committerDavid Pugnasse <david.pugnasse@gmail.com>2011-10-24 00:58:33 +0200
commit8a2d5352480629aeb7a983ea4ddadf7005223907 (patch)
tree4e9ccac02a816a8cab335f8c1b1d86924676865c
parent989013dcb7fcd9ff5d03608283acd8da27ca3238 (diff)
downloadranger-8a2d5352480629aeb7a983ea4ddadf7005223907.tar.gz
core.main: added --selectfile option
-rw-r--r--doc/ranger.13
-rw-r--r--doc/ranger.pod4
-rw-r--r--ranger/core/actions.py8
-rw-r--r--ranger/core/helper.py2
-rw-r--r--ranger/core/main.py6
5 files changed, 21 insertions, 2 deletions
diff --git a/doc/ranger.1 b/doc/ranger.1
index e9f00501..c1a5b381 100644
--- a/doc/ranger.1
+++ b/doc/ranger.1
@@ -178,6 +178,9 @@ selected files into \fItargetfile\fR, adding one newline after each filename.
 .IX Item "--choosedir=targetfile"
 Allows you to pick a directory with ranger.  When you exit ranger, it will
 write the last visited directory into \fItargetfile\fR.
+.IP "\fB\-\-selectfile\fR=\fItargetfile\fR" 14
+.IX Item "--selectfile=targetfile"
+Open ranger with \fItargetfile\fR selected.
 .IP "\fB\-\-copy\-config\fR=\fIfile\fR" 14
 .IX Item "--copy-config=file"
 Create copies of the default configuration files in your local configuration
diff --git a/doc/ranger.pod b/doc/ranger.pod
index 069b9de1..8943b476 100644
--- a/doc/ranger.pod
+++ b/doc/ranger.pod
@@ -67,6 +67,10 @@ selected files into I<targetfile>, adding one newline after each filename.
 Allows you to pick a directory with ranger.  When you exit ranger, it will
 write the last visited directory into I<targetfile>.
 
+=item B<--selectfile>=I<targetfile>
+
+Open ranger with I<targetfile> selected.
+
 =item B<--copy-config>=I<file>
 
 Create copies of the default configuration files in your local configuration
diff --git a/ranger/core/actions.py b/ranger/core/actions.py
index 5364f391..3300a534 100644
--- a/ranger/core/actions.py
+++ b/ranger/core/actions.py
@@ -344,8 +344,12 @@ class Actions(FileManagerAware, EnvironmentAware, SettingsAware):
 
 	def select_file(self, path):
 		path = path.strip()
-		if self.enter_dir(os.path.dirname(path)):
-			self.env.cwd.move_to_obj(path)
+		dirname = os.path.dirname(path)
+		if dirname:
+			if self.enter_dir(dirname):
+				self.env.cwd.move_to_obj(path)
+		else:
+			self.env.cwd.move_to_obj(join(self.env.cwd.path, path))
 
 	def history_go(self, relative):
 		"""Move back and forth in the history"""
diff --git a/ranger/core/helper.py b/ranger/core/helper.py
index c22a52b8..88072e13 100644
--- a/ranger/core/helper.py
+++ b/ranger/core/helper.py
@@ -66,6 +66,8 @@ def parse_arguments():
 			", it will write the name of the last visited directory to TARGET")
 	parser.add_option('--list-unused-keys', action='store_true',
 			help="List common keys which are not bound to any action.")
+	parser.add_option('--selectfile', type='string', metavar='filepath',
+			help="Open ranger with supplied file selected.")
 
 	options, positional = parser.parse_args()
 	arg = OpenStruct(options.__dict__, targets=positional)
diff --git a/ranger/core/main.py b/ranger/core/main.py
index c87a4660..49513125 100644
--- a/ranger/core/main.py
+++ b/ranger/core/main.py
@@ -49,6 +49,9 @@ def main():
 
 	SettingsAware._setup(clean=arg.clean)
 
+	if arg.selectfile:
+		arg.targets.insert(0, os.path.dirname(arg.selectfile))
+
 	targets = arg.targets or ['.']
 	target = targets[0]
 	if arg.targets:
@@ -97,6 +100,9 @@ def main():
 			from ranger.ext import curses_interrupt_handler
 			curses_interrupt_handler.install_interrupt_handler()
 
+		if arg.selectfile:
+			fm.select_file(arg.selectfile)
+
 		# Run the file manager
 		fm.initialize()
 		fm.ui.initialize()
id='n318' href='#n318'>318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390