about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--ranger/data/config_examples/apps.py32
-rw-r--r--ranger/data/config_examples/commands.py103
2 files changed, 135 insertions, 0 deletions
diff --git a/ranger/data/config_examples/apps.py b/ranger/data/config_examples/apps.py
new file mode 100644
index 00000000..c9221dbf
--- /dev/null
+++ b/ranger/data/config_examples/apps.py
@@ -0,0 +1,32 @@
+# ===================================================================
+# This is the configuration file for filetype detection and application
+# handling.  It's all in python; lines beginning with # are comments.
+#
+# Here, the class "CustomApplications" is defined as a subclass of the default
+# application handler class.  It is located at ranger/defaults/apps.py and
+# contains a whole lot of definitions.  You can just copy & paste them here.
+# ===================================================================
+
+# Import the basics
+from ranger.defaults.apps import CustomApplications as DefaultApps
+from ranger.api.apps import *
+
+# By default, we do nothing.
+class CustomApplications(DefaultApps):
+	pass
+
+#	def app_kaffeine(self, context):
+#		return 'kaffeine', context
+#
+#	def app_feh_fullscreen_by_default(self, context):
+#		return 'feh', '-F', context
+#
+#	def app_default(self, context):
+#		f = context.file #shortcut
+#		if f.video or f.audio:
+#			return self.app_kaffeine(context)
+#
+#		if f.image and context.mode == 0:
+#			return self.app_feh_fullscreen_by_default(context)
+#
+#		return DefaultApps.app_default(self, context)
diff --git a/ranger/data/config_examples/commands.py b/ranger/data/config_examples/commands.py
new file mode 100644
index 00000000..03178354
--- /dev/null
+++ b/ranger/data/config_examples/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)