diff options
-rw-r--r-- | README.md | 4 | ||||
-rw-r--r-- | ranger/api/commands.py | 2 | ||||
-rw-r--r-- | ranger/core/actions.py | 94 | ||||
-rwxr-xr-x | ranger/ext/rifle.py | 2 |
4 files changed, 85 insertions, 17 deletions
diff --git a/README.md b/README.md index f0d3ca25..57b2631d 100644 --- a/README.md +++ b/README.md @@ -52,8 +52,8 @@ Features Dependencies ------------ -* Python (tested with version 2.6, 2.7, 3.1, 3.2) with support for ncurses - and (optionally) wide-unicode. +* Python (tested with version 2.6, 2.7, 3.1, 3.2) with the "curses" module + and (optionally) wide-unicode support. * A pager ("less" by default) Optional: diff --git a/ranger/api/commands.py b/ranger/api/commands.py index 2cf96a9f..ca713d0c 100644 --- a/ranger/api/commands.py +++ b/ranger/api/commands.py @@ -47,7 +47,7 @@ class CommandContainer(object): continue attribute = getattr(obj, attribute_name) if hasattr(attribute, '__call__'): - cmd = type(attribute_name, (FunctionCommand, ), dict()) + cmd = type(attribute_name, (FunctionCommand, ), dict(__doc__=attribute.__doc__)) cmd._based_function = attribute cmd._function_name = attribute.__name__ cmd._object_name = obj.__class__.__name__ diff --git a/ranger/core/actions.py b/ranger/core/actions.py index 8167dbcf..26dcf4f7 100644 --- a/ranger/core/actions.py +++ b/ranger/core/actions.py @@ -41,11 +41,17 @@ class Actions(FileManagerAware, SettingsAware): # -------------------------- def exit(self): - """Exit the program""" + """:exit + + Exit the program. + """ raise SystemExit() def reset(self): - """Reset the filemanager, clearing the directory buffer""" + """:reset + + Reset the filemanager, clearing the directory buffer. + """ old_path = self.thisdir.path self.previews = {} self.garbage_collect(-1) @@ -55,6 +61,10 @@ class Actions(FileManagerAware, SettingsAware): self.metadata.reset() def change_mode(self, mode): + """:change_mode <mode> + + Change mode to "visual" (selection) or "normal" mode. + """ if mode == self.mode: return if mode == 'visual': @@ -103,6 +113,10 @@ class Actions(FileManagerAware, SettingsAware): raise ValueError("Invalid value `%s' for option `%s'!" % (name, value)) def toggle_visual_mode(self, reverse=False, narg=None): + """:toggle_visual_mode + + Toggle the visual mode (see :change_mode). + """ if self.mode == 'normal': self._visual_reverse = reverse if narg != None: @@ -112,14 +126,23 @@ class Actions(FileManagerAware, SettingsAware): self.change_mode('normal') def reload_cwd(self): + """:reload_cwd + + Reload the current working directory. + """ try: cwd = self.thisdir except: pass - cwd.unload() - cwd.load_content() + else: + cwd.unload() + cwd.load_content() def notify(self, text, duration=4, bad=False): + """:notify <text> + + Display the text in the statusbar. + """ if isinstance(text, Exception): if ranger.arg.debug: raise @@ -135,6 +158,10 @@ class Actions(FileManagerAware, SettingsAware): print(text) def abort(self): + """:abort + + Empty the first queued action. + """ try: item = self.loader.queue[0] except: @@ -150,16 +177,25 @@ class Actions(FileManagerAware, SettingsAware): self.ui.redraw_main_column() def redraw_window(self): - """Redraw the window""" + """:redraw + + Redraw the window. + """ self.ui.redraw_window() def open_console(self, string='', prompt=None, position=None): - """Open the console""" + """:open_console [string] + + Open the console. + """ self.change_mode('normal') self.ui.open_console(string, prompt=prompt, position=position) def execute_console(self, string='', wildcards=[], quantifier=None): - """Execute a command for the console""" + """:execute_console [string] + + Execute a command for the console + """ command_name = string.lstrip().split()[0] cmd_class = self.commands.get_command(command_name, abbrev=False) if cmd_class is None: @@ -291,6 +327,10 @@ class Actions(FileManagerAware, SettingsAware): return macros def source(self, filename): + """:source <filename> + + Load a config file. + """ filename = os.path.expanduser(filename) for line in open(filename, 'r'): line = line.lstrip().rstrip("\r\n") @@ -538,12 +578,18 @@ class Actions(FileManagerAware, SettingsAware): self.execute_file(file, label='editor') def toggle_option(self, string): - """Toggle a boolean option named <string>""" + """:toggle_option <string> + + Toggle a boolean option named <string>. + """ if isinstance(self.settings[string], bool): self.settings[string] ^= True def set_option(self, optname, value): - """Set the value of an option named <optname>""" + """:set_option <optname> + + Set the value of an option named <optname>. + """ self.settings[optname] = value def sort(self, func=None, reverse=None): @@ -680,6 +726,10 @@ class Actions(FileManagerAware, SettingsAware): # file is important to you in any context. def tag_toggle(self, paths=None, value=None, movedown=None, tag=None): + """:tag_toggle <character> + + Toggle a tag <character>. + """ if not self.tags: return if paths is None: @@ -1113,8 +1163,10 @@ class Actions(FileManagerAware, SettingsAware): for cmd_name in sorted(self.commands.commands): cmd = self.commands.commands[cmd_name] if hasattr(cmd, '__doc__') and cmd.__doc__: - write(cleandoc(cmd.__doc__)) - write("\n\n" + "-" * 60 + "\n") + doc = cleandoc(cmd.__doc__) + if doc[0] == ':': + write(doc) + write("\n\n" + "-" * 60 + "\n") else: undocumented.append(cmd) @@ -1144,12 +1196,20 @@ class Actions(FileManagerAware, SettingsAware): # -------------------------- def uncut(self): + """:uncut + + Empty the copy buffer. + """ self.copy_buffer = set() self.do_cut = False self.ui.browser.main_column.request_redraw() def copy(self, mode='set', narg=None, dirarg=None): - """Copy the selected items. Modes are: 'set', 'add', 'remove'.""" + """:copy [mode=set] + + Copy the selected items. + Modes are: 'set', 'add', 'remove'. + """ assert mode in ('set', 'add', 'remove') cwd = self.thisdir if not narg and not dirarg: @@ -1176,6 +1236,11 @@ class Actions(FileManagerAware, SettingsAware): self.ui.browser.main_column.request_redraw() def cut(self, mode='set', narg=None, dirarg=None): + """:cut [mode=set] + + Cut the selected items. + Modes are: 'set, 'add, 'remove. + """ self.copy(mode=mode, narg=narg, dirarg=dirarg) self.do_cut = True self.ui.browser.main_column.request_redraw() @@ -1224,7 +1289,10 @@ class Actions(FileManagerAware, SettingsAware): next_available_filename(target_path)) def paste(self, overwrite=False, append=False): - """Paste the selected items into the current directory""" + """:paste + + Paste the selected items into the current directory. + """ loadable = CopyLoader(self.copy_buffer, self.do_cut, overwrite) self.loader.add(loadable, append=append) self.do_cut = False diff --git a/ranger/ext/rifle.py b/ranger/ext/rifle.py index 504851b1..5d13a5bf 100755 --- a/ranger/ext/rifle.py +++ b/ranger/ext/rifle.py @@ -231,7 +231,7 @@ class Rifle(object): self._app_flags = argument return True elif function == 'X': - return 'DISPLAY' in os.environ + return sys.platform == 'darwin' or 'DISPLAY' in os.environ elif function == 'env': return bool(os.environ.get(argument)) elif function == 'else': |