def execute(self): try: line = int(self.arg(1)) except ValueError: line = 1 path = self.rest(2) if not path and self.fm.client: path = self.fm.client.get_cb() if os.path.isdir(path): dirname = path elif os.path.isfile(path): self.fm.attached_file = path dirname = os.path.dirname(path) else: return if self.fm.thisdir.path == dirname or self.fm.enter_dir(dirname): if os.path.isfile(path): self.fm.thisdir.refilter() self.fm.thisdir.move_to_obj(path) if hasattr(self.fm.thisfile, 'has_preview') and self.fm.thisfile.has_preview(): descr = 'Scroll the line for preview file' loadable = Loadable(self.scroll_preview(line - 1), descr) self.fm.loader.add(loadable, append=True) descr = 'Redraw manually after attach event' loadable = Loadable(self.redraw_status(), descr) self.fm.loader.add(loadable, append=True)
def fix_vcs(self): """ Vcs in ranger is a bad design. It will produce a death lock with --cmd='set column_ratios 1,1' caused by 'ui.redraw'. """ def enable_vcs_aware(): """ Use a queue loader to enable vcs_aware to avoid a death lock. """ self.fm.execute_console('set vcs_aware True') self.fm.thisdir.load_content(schedule=False) yield if self.fm.settings.vcs_aware: self.fm.execute_console('set vcs_aware False') descr = "Restore user's setting of vcs_aware" loadable = Loadable(enable_vcs_aware(), descr) self.fm.loader.add(loadable)
def execute(self): path = self.rest(1) if not path and self.fm.client: path = self.fm.client.get_cb() if os.path.isdir(path): dirname = path elif os.path.isfile(path): self.fm.attached_file = path dirname = os.path.dirname(path) else: return if self.fm.thisdir.path == dirname or self.fm.enter_dir(dirname): if os.path.isfile(path): self.fm.thisdir.refilter() self.fm.thisdir.move_to_obj(path) descr = 'Redraw manually after attach event' loadable = Loadable(self.redraw_status(), descr) self.fm.loader.add(loadable, append=True)