about summary refs log tree commit diff stats
path: root/ranger/data/commands.py
diff options
context:
space:
mode:
authorhut <hut@lavabit.com>2011-10-08 22:51:42 +0200
committerhut <hut@lavabit.com>2011-10-08 22:51:42 +0200
commitd92c4af3688e01836a87b7684228d9327a828c7e (patch)
tree038e84a1d34293cee95aaa4fb77b8d9308b8b8f4 /ranger/data/commands.py
parent520dcebc586de13b9371df5bd4b1d1ba3a712e02 (diff)
downloadranger-d92c4af3688e01836a87b7684228d9327a828c7e.tar.gz
mv ranger/data/config_examples/* ranger/data/
Diffstat (limited to 'ranger/data/commands.py')
-rw-r--r--ranger/data/commands.py103
1 files changed, 103 insertions, 0 deletions
diff --git a/ranger/data/commands.py b/ranger/data/commands.py
new file mode 100644
index 00000000..03178354
--- /dev/null
+++ b/ranger/data/commands.py
@@ -0,0 +1,103 @@
+# ===================================================================
+# This configuration file contains custom commands.  It's all in python;
+# lines beginning with # are comments.
+#
+# Scroll down for a few examples.
+#
+# Every class defined here which is a subclass of `Command' will be used as a
+# command in ranger.  Several methods are defined to interface with ranger:
+#   execute(): called when the command is executed.
+#   cancel():  called when closing the console.
+#   tab():     called when <TAB> is pressed.
+#   quick():   called after each keypress.
+#
+# The return values for tab() can be either:
+#   None: There is no tab completion
+#   A string: Change the console to this string
+#   A list/tuple/generator: cycle through every item in it
+#
+# The return value for quick() can be:
+#   False: Nothing happens
+#   True: Execute the command afterwards
+#
+# The return value for execute() and cancel() doesn't matter.
+#
+# ===================================================================
+# Commands have certain attributes and methods that facilitate parsing of
+# the arguments:
+#
+# self.line: The whole line that was written in the console.
+# self.args: A list of all (space-separated) arguments to the command.
+# self.quantifier: If this command was mapped to the key "X" and
+#      the user pressed 6X, self.quantifier will be 6.
+# self.arg(n): The n-th argument, or an empty string if it doesn't exist.
+# self.rest(n): The n-th argument plus everything that followed.  For example,
+#      If the command was "search foo bar a b c", rest(2) will be "bar a b c"
+# self.start(n): The n-th argument and anything before it.  For example,
+#      If the command was "search foo bar a b c", rest(2) will be "bar a b c"
+#
+# ===================================================================
+# And this is a little reference for common ranger functions and objects:
+#
+# self.fm: A reference to the "fm" object which contains most information
+#      about ranger.
+# self.fm.notify(string): Print the given string on the screen.
+# self.fm.notify(string, bad=True): Print the given string in RED.
+# self.fm.reload_cwd(): Reload the current working directory.
+# self.fm.env.cwd: The current working directory. (A File object.)
+# self.fm.env.cf: The current file. (A File object too.)
+# self.fm.env.cwd.get_selection(): A list of all selected files.
+# self.fm.execute_console(string): Execute the string as a ranger command.
+# self.fm.open_console(string): Open the console with the given string
+#      already typed in for you.
+# self.fm.move(direction): Moves the cursor in the given direction, which
+#      can be something like down=3, up=5, right=1, left=1, to=6, ...
+#
+# File objects (for example self.fm.env.cf) have these useful attributes and
+# methods:
+#
+# cf.path: The path to the file.
+# cf.basename: The base name only.
+# cf.load_content(): Force a loading of the directories content (which
+#      obviously works with directories only)
+# cf.is_directory: True/False depending on whether it's a directory.
+#
+# For advanced commands it is unavoidable to dive a bit into the source code
+# of ranger.
+# ===================================================================
+# Here are some example commands:
+
+from ranger.api.commands import *
+
+#class tabnew(Command):
+#	def execute(self):
+#		self.fm.tab_new()
+
+#class tabgo(Command):
+#	""" Go to the n-th tab. """
+#	def execute(self):
+#		num = self.line.split()[1]
+#		self.fm.tab_open(int(num))
+
+#class terminal(Command):
+#	"""
+#	:terminal
+#
+#	Spawns an "x-terminal-emulator" starting in the current directory.
+#	"""
+#	def execute(self):
+#		self.fm.run('x-terminal-emulator', flags='d')
+
+#class edit(Command):
+#	def execute(self):
+#		if not self.arg(1):
+#			self.fm.edit_file(self.fm.env.cf.path)
+#		else:
+#			self.fm.edit_file(self.rest(1))
+#
+#	def tab(self):
+#		return self._tab_directory_content()
+
+#class incremental_search(Command):
+#	def quick(self):
+#		self.fm.search_file(self.rest(1), regexp=True, offset=0)