summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--ranger/shared/settings.py4
1 files changed, 2 insertions, 2 deletions
diff --git a/ranger/shared/settings.py b/ranger/shared/settings.py
index 6df5241f..2d947beb 100644
--- a/ranger/shared/settings.py
+++ b/ranger/shared/settings.py
@@ -57,13 +57,13 @@ class SettingsAware(object):
 		if not ranger.arg.clean:
 			# overwrite single default options with custom options
 			try:
-				import rangerrc
+				import options as my_options
 			except ImportError:
 				pass
 			else:
 				for setting in ALLOWED_SETTINGS:
 					try:
-						settings[setting] = getattr(rangerrc, setting)
+						settings[setting] = getattr(my_options, setting)
 					except AttributeError:
 						pass
 
ref='#n87'>87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226
import curses
from curses import *
from curses.ascii import *
from ranger import RANGERDIR
from ranger import log
from ranger.gui.widgets import console_mode as cmode
from ranger.gui.widgets.console import Console
from ranger.container.bookmarks import ALLOWED_KEYS as ALLOWED_BOOKMARK_KEYS

# syntax for binding keys: bind(*keys, fnc)
# fnc is a function which is called with the FM instance,
# keys are one or more key-combinations which are either:
# * a string
# * an integer which represents an ascii code
# * a tuple of integers
#
# in initialize_console_commands, fnc is a function which is
# called with the console widget instance instead.

def initialize_commands(command_list):
	"""Initialize the commands for the main user interface"""

	def do(method, *args, **kw):
		return lambda fm, n: getattr(fm, method)(*args, **kw)

	def bind(*args):
		command_list.bind(args[-1], *args[:-1])

	bind('l', KEY_RIGHT, do('move_right'))
	bind(KEY_ENTER, ctrl('j'), do('move_right', mode=1))
	bind('H', do('history_go', -1))
	bind('L', do('history_go',  1))
	bind('J', do('move_pointer_by_pages', 0.5))
	bind('K', do('move_pointer_by_pages', -0.5))
	bind('E', do('edit_file'))
#	bind('o', do('force_load_preview'))
	bind('i', do('tag_toggle'))
	bind('I', do('tag_remove'))

	bind(' ', do('mark', toggle=True))
	bind('v', do('mark', all=True, toggle=True))
	bind('V', do('mark', all=True, val=False))

	bind('yy', 'cp', do('copy'))
	bind('cut', do('cut'))
	bind('p', do('paste'))

	bind('s', do('spawn', 'bash'))

	t_hint = "show_//h//idden //p//review_files //d//irectories_first //a//uto_load_preview //c//ollapse_preview"
	command_list.hint(t_hint, 't')
	bind('th', do('toggle_boolean_option', 'show_hidden'))
	bind('tp', do('toggle_boolean_option', 'preview_files'))
	bind('td', do('toggle_boolean_option', 'directories_first'))
	bind('ta', do('toggle_boolean_option', 'auto_load_preview'))
	bind('tc', do('toggle_boolean_option', 'collapse_preview'))

	sort_hint = "//s//ize //b//ase//n//ame //m//time //t//ype //r//everse"
	sort_dict = {
		's': 'size',
		'b': 'basename',
		'n': 'basename',
		'm': 'mtime',
		't': 'type',
	}
	for key, val in sort_dict.items():
		for key, is_upper in ((key.lower(), False), (key.upper(), True)):
			# reverse if any of the two letters is capital
			bind('o' + key, do('sort', func=val, reverse=is_upper))
			bind('O' + key, do('sort', func=val, reverse=True))
	bind('or', 'Or', 'oR', 'OR', lambda fm, n: \
			fm.sort(reverse=not fm.settings.reverse))
	command_list.hint(sort_hint, 'o', 'O')

	def edit_name(fm, n):
		cf = fm.env.cf
		if cf:
			fm.open_console(cmode.COMMAND, 'rename ' + cf.basename)

	bind('A', edit_name)
	bind('cw', do('open_console', cmode.COMMAND, 'rename '))
	bind('cd', do('open_console', cmode.COMMAND, 'cd '))
	bind('f', do('open_console', cmode.COMMAND_QUICK, 'find '))

	# key combinations which change the current directory
	def cd(path):
		return lambda fm: fm.enter_dir(path)

	bind('gh', do('cd', '~'))
	bind('ge', do('cd', '/etc'))
	bind('gu', do('cd', '/usr'))
	bind('gr', do('cd', '/'))
	bind('gm', do('cd', '/media'))
	bind('gn', do('cd', '/mnt'))
	bind('gt', do('cd', '~/.trash'))
	bind('gs', do('cd', '/srv'))
	bind('gR', do('cd', RANGERDIR))

	bind('n', do('search_forward'))
	bind('N', do('search_backward'))

	# bookmarks
	for key in ALLOWED_BOOKMARK_KEYS:
		bind("`" + key, "'" + key, do('enter_bookmark', key))
		bind("m" + key, do('set_bookmark', key))
		bind("um" + key, do('unset_bookmark', key))

	# system functions
	bind(ctrl('D'), 'q', 'ZZ', do('exit'))
	bind(ctrl('R'), do('reset'))
	bind(ctrl('L'), do('redraw_window'))
	bind(ctrl('C'), do('interrupt'))
	bind(KEY_RESIZE, do('resize'))
	bind(KEY_MOUSE, do('handle_mouse'))
	bind(':', do('open_console', cmode.COMMAND))
	bind('>', do('open_console', cmode.COMMAND_QUICK))
	bind('/', do('open_console', cmode.SEARCH))
	bind('?', do('open_console', cmode.SEARCH))
	bind('!', do('open_console', cmode.OPEN))
	bind('r', do('open_console', cmode.OPEN_QUICK))


	# definitions which require their own function:
	def test(fm, n):
		from ranger import log
		log(fm.bookmarks.dct)
	bind('x', test)

	def ggG(default):
		# moves to an absolute point, or to a predefined default
		# if no number is specified.
		return lambda fm, n: \
				fm.move_pointer(absolute=(n or default)-1)

	bind('gg', ggG(1))
	bind('G', ggG(0))

	bind('%', lambda fm, n: fm.move_pointer_by_percentage(absolute=n or 50))

	def jk(direction):
		# moves up or down by the specified number or one, in
		# the predefined direction
		return lambda fm, n: \
				fm.move_pointer(relative=(n or 1) * direction)

	bind('j', KEY_DOWN, jk(1))
	bind('k', KEY_UP, jk(-1))

	bind('h', KEY_LEFT, KEY_BACKSPACE, DEL, lambda fm, n: \
			fm.move_left(n or 1))

	bind('w', lambda fm, n: fm.ui.open_pman())

	command_list.rebuild_paths()


def initialize_console_commands(command_list):
	"""Initialize the commands for the console widget only"""

	def bind(*args):
		command_list.bind(args[-1], *args[:-1])

	def do(method, *args, **kw):
		return lambda widget: getattr(widget, method)(*args, **kw)

	def do_fm(method, *args, **kw):
		return lambda widget: getattr(widget.fm, method)(*args, **kw)

	# movement
	bind(KEY_UP, do('history_move', -1))
	bind(KEY_DOWN, do('history_move', 1))
	bind(ctrl('b'), KEY_LEFT, do('move', relative = -1))
	bind(ctrl('f'), KEY_RIGHT, do('move', relative = 1))
	bind(ctrl('a'), KEY_HOME, do('move', absolute = 0))
	bind(ctrl('e'), KEY_END, do('move', absolute = -1))
	bind(ctrl('d'), KEY_DC, do('delete', 0))
	bind(ctrl('h'), KEY_BACKSPACE, DEL, do('delete', -1))
	bind(ctrl('w'), do('delete_word'))
	bind(ctrl('k'), do('delete_rest', 1))
	bind(ctrl('u'), do('delete_rest', -1))
	bind(ctrl('y'), do('paste'))

	# system functions
	bind(ctrl('c'), ESC, do('close'))
	bind(ctrl('j'), KEY_ENTER, do('execute'))
	bind(ctrl('l'), do_fm('redraw'))
	bind(TAB, do('tab'))
	bind(KEY_BTAB, do('tab', -1))
	bind(KEY_RESIZE, do_fm('resize'))

	# type keys
	def type_key(key):
		return lambda con: con.type_key(key)

	for i in range(ord(' '), ord('~')+1):
		bind(i, type_key(i))

	command_list.rebuild_paths()

def initialize_process_manager_commands(command_list):
	"""Initialize the commands for the process manager widget"""

	from ranger.gui.widgets.process_manager import KeyWrapper as wdg

	def bind(*args):
		command_list.bind(args[-1], *args[:-1])

	def do(method, *args, **kw):
		return lambda widget, n: getattr(widget, method)(*args, **kw)

	def do_fm(method, *args, **kw):
		return lambda widget, n: getattr(widget.fm, method)(*args, **kw)

	bind('j', KEY_DOWN, wdg.move(relative=1))
	bind('k', KEY_UP, wdg.move(relative=-1))
	bind('gg', wdg.move(absolute=0))
	bind('G', wdg.move(absolute=-1))
	bind('K', lambda wdg, n: wdg.process_move(0))
	bind('J', lambda wdg, n: wdg.process_move(-1))

	bind('dd', do('process_remove'))
	bind('w', ESC, ctrl('d'), ctrl('c'),
			lambda wdg, n: wdg.fm.ui.close_pman())
	bind(KEY_RESIZE, do_fm('resize'))

	command_list.rebuild_paths()