diff options
-rw-r--r-- | doc/ranger.1 | 12 | ||||
-rw-r--r-- | doc/ranger.pod | 9 | ||||
-rw-r--r-- | ranger/colorschemes/default.py | 3 | ||||
-rw-r--r-- | ranger/colorschemes/jungle.py | 3 | ||||
-rw-r--r-- | ranger/colorschemes/solarized.py | 3 | ||||
-rw-r--r-- | ranger/container/fsobject.py | 5 | ||||
-rw-r--r-- | ranger/core/actions.py | 35 | ||||
-rw-r--r-- | ranger/core/loader.py | 3 | ||||
-rw-r--r-- | ranger/gui/ui.py | 1 | ||||
-rw-r--r-- | ranger/gui/widgets/view_miller.py | 2 |
10 files changed, 55 insertions, 21 deletions
diff --git a/doc/ranger.1 b/doc/ranger.1 index c8ff78eb..db608eaf 100644 --- a/doc/ranger.1 +++ b/doc/ranger.1 @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "RANGER 1" -.TH RANGER 1 "ranger-1.7.2" "04/03/2016" "ranger manual" +.TH RANGER 1 "ranger-1.7.2" "04/15/2016" "ranger manual" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -903,6 +903,7 @@ ranger. For your convenience, this is a list of the \*(L"public\*(R" commands i \& setintag tags option value \& setlocal [path=<path>] option value \& shell [\-FLAGS] command +\& source filename \& terminal \& tmap key command \& touch filename @@ -1214,6 +1215,15 @@ use \f(CW\*(C`path=~/dl$\*(C'\fR. .IP "shell [\-\fIflags\fR] \fIcommand\fR" 2 .IX Item "shell [-flags] command" Run a shell command. \fIflags\fR are discussed in their own section. +.IP "source \fIfilename\fR" 2 +.IX Item "source filename" +Reads commands from a file and executes them in the ranger console. +.Sp +This can be used to re-evaluate the rc.conf file after changing it: +.Sp +.Vb 1 +\& map X chain shell vim \-p %confdir/rc.conf %rangerdir/config/rc.conf; source %confdir/rc.conf +.Ve .IP "terminal" 2 .IX Item "terminal" Spawns the \fIx\-terminal-emulator\fR starting in the current directory. diff --git a/doc/ranger.pod b/doc/ranger.pod index 6d798b5a..43b248ce 100644 --- a/doc/ranger.pod +++ b/doc/ranger.pod @@ -919,6 +919,7 @@ ranger. For your convenience, this is a list of the "public" commands including setintag tags option value setlocal [path=<path>] option value shell [-FLAGS] command + source filename terminal tmap key command touch filename @@ -1269,6 +1270,14 @@ use C<path=~/dl$>. Run a shell command. I<flags> are discussed in their own section. +=item source I<filename> + +Reads commands from a file and executes them in the ranger console. + +This can be used to re-evaluate the rc.conf file after changing it: + + map X chain shell vim -p %confdir/rc.conf %rangerdir/config/rc.conf; source %confdir/rc.conf + =item terminal Spawns the I<x-terminal-emulator> starting in the current directory. diff --git a/ranger/colorschemes/default.py b/ranger/colorschemes/default.py index e5dbf3a6..37b372a3 100644 --- a/ranger/colorschemes/default.py +++ b/ranger/colorschemes/default.py @@ -67,6 +67,9 @@ class Default(ColorScheme): else: fg = magenta + if context.inactive_pane: + fg = cyan + elif context.in_titlebar: attr |= bold if context.hostname: diff --git a/ranger/colorschemes/jungle.py b/ranger/colorschemes/jungle.py index a4fb1c1d..6a9c3c52 100644 --- a/ranger/colorschemes/jungle.py +++ b/ranger/colorschemes/jungle.py @@ -9,7 +9,8 @@ class Scheme(Default): def use(self, context): fg, bg, attr = Default.use(self, context) - if context.directory and not context.marked and not context.link: + if context.directory and not context.marked and not context.link \ + and not context.inactive_pane: fg = green if context.in_titlebar and context.hostname: diff --git a/ranger/colorschemes/solarized.py b/ranger/colorschemes/solarized.py index 07552ce2..2177ca3d 100644 --- a/ranger/colorschemes/solarized.py +++ b/ranger/colorschemes/solarized.py @@ -80,6 +80,9 @@ class Solarized(ColorScheme): else: fg = magenta + if context.inactive_pane: + fg = 241 + elif context.in_titlebar: attr |= bold if context.hostname: diff --git a/ranger/container/fsobject.py b/ranger/container/fsobject.py index 10f8259d..fff29c36 100644 --- a/ranger/container/fsobject.py +++ b/ranger/container/fsobject.py @@ -31,6 +31,7 @@ else: _unsafe_chars = '\n' + ''.join(map(chr, range(32))) + ''.join(map(chr, range(128, 256))) _safe_string_table = maketrans(_unsafe_chars, '?' * len(_unsafe_chars)) _extract_number_re = re.compile(r'(\d+|\D)') +_integers = set("0123456789") def safe_path(path): return path.translate(_safe_string_table) @@ -135,12 +136,12 @@ class FileSystemObject(FileManagerAware, SettingsAware): @lazy_property def basename_natural(self): - return [('0', int(s)) if s.isdigit() else (s, 0) \ + return [('0', int(s)) if s in _integers else (s, 0) \ for s in _extract_number_re.split(self.relative_path)] @lazy_property def basename_natural_lower(self): - return [('0', int(s)) if s.isdigit() else (s, 0) \ + return [('0', int(s)) if s in _integers else (s, 0) \ for s in _extract_number_re.split(self.relative_path_lower)] @lazy_property diff --git a/ranger/core/actions.py b/ranger/core/actions.py index 3b1fc47a..0224db6d 100644 --- a/ranger/core/actions.py +++ b/ranger/core/actions.py @@ -343,18 +343,19 @@ class Actions(FileManagerAware, SettingsAware): Load a config file. """ filename = os.path.expanduser(filename) - for line in open(filename, 'r'): - line = line.lstrip().rstrip("\r\n") - if line.startswith("#") or not line.strip(): - continue - try: - self.execute_console(line) - except Exception as e: - if ranger.arg.debug: - raise - else: - self.notify('Error in line `%s\':\n %s' % - (line, str(e)), bad=True) + with open(filename, 'r') as f: + for line in f: + line = line.lstrip().rstrip("\r\n") + if line.startswith("#") or not line.strip(): + continue + try: + self.execute_console(line) + except Exception as e: + if ranger.arg.debug: + raise + else: + self.notify('Error in line `%s\':\n %s' % + (line, str(e)), bad=True) def execute_file(self, files, **kw): """Uses the "rifle" module to open/execute a file @@ -821,9 +822,13 @@ class Actions(FileManagerAware, SettingsAware): except: self.ui.browser.draw_info = [] return - programs = self.rifle.list_commands([target.path], None) - programs = ['%s | %s' % program[0:2] for program in programs] - self.ui.browser.draw_info = programs + programs = [program for program in self.rifle.list_commands([target.path], + None)] + if programs: + num_digits = max((len(str(program[0])) for program in programs)) + program_info = ['%s | %s' % (str(program[0]).rjust(num_digits), + program[1]) for program in programs] + self.ui.browser.draw_info = program_info def hide_console_info(self): self.ui.browser.draw_info = False diff --git a/ranger/core/loader.py b/ranger/core/loader.py index 2184d2b1..b1aabb53 100644 --- a/ranger/core/loader.py +++ b/ranger/core/loader.py @@ -260,7 +260,8 @@ def safeDecode(string): return string.decode("utf-8") except (UnicodeDecodeError): if HAVE_CHARDET: - return string.decode(chardet.detect(string)["encoding"]) + codec = chardet.detect(string)["encoding"] + return string.decode(codec, 'ignore') else: return "" diff --git a/ranger/gui/ui.py b/ranger/gui/ui.py index 14d6f247..e5833839 100644 --- a/ranger/gui/ui.py +++ b/ranger/gui/ui.py @@ -441,6 +441,7 @@ class UI(DisplayableContainer): resize = True self.browser = self._viewmode_to_class(value)(self.win) + self.redraw_window() self.add_child(self.browser) if resize: self.browser.resize(*old_size) diff --git a/ranger/gui/widgets/view_miller.py b/ranger/gui/widgets/view_miller.py index b34cc579..dbf59ff8 100644 --- a/ranger/gui/widgets/view_miller.py +++ b/ranger/gui/widgets/view_miller.py @@ -203,7 +203,7 @@ class ViewMiller(ViewBase): if not cut_off: wid = int(self.wid - left + 1 - pad) else: - self.columns[i].resize(pad, left - 1, hei - pad * 2, 1) + self.columns[i].resize(pad, max(0, left - 1), hei - pad * 2, 1) self.columns[i].visible = False continue |