about summary refs log tree commit diff stats
path: root/arc
ModeNameSize
d---------.traces12326log stats plain
-rw-r--r--Readme.md567log stats plain blame
-rw-r--r--blocking.arc.t900log stats plain blame
-rw-r--r--buffered-stdin.mu1263log stats plain blame
-rw-r--r--callcc.mu599log stats plain blame
-rw-r--r--channel.mu1941log stats plain blame
d---------charterm268log stats plain
-rw-r--r--chessboard.arc.t12726log stats plain blame
-rw-r--r--chessboard.mu11850log stats plain blame
-rw-r--r--color-repl.mu23324log stats plain blame
-rw-r--r--counters.mu1190log stats plain blame
-rw-r--r--edit.arc.t1161log stats plain blame
-rw-r--r--edit.mu813log stats plain blame
-rw-r--r--exuberant-ctags-rc298log stats plain blame
-rw-r--r--factorial.mu629log stats plain blame
-rw-r--r--fork.mu408log stats plain blame
-rw-r--r--generic.mu898log stats plain blame
-rw-r--r--graphics.mu889log stats plain blame
-rw-r--r--highlights969log stats plain blame
-rw-r--r--load.arc775log stats plain blame
-rwxr-xr-xmu615log stats plain blame
-rw-r--r--mu.arc127823log stats plain blame
-rw-r--r--mu.arc.t171613log stats plain blame
-rw-r--r--mu.arc.t.html562366log stats plain blame
-rw-r--r--render.vim5000log stats plain blame
-rw-r--r--scratch.vim1558log stats plain blame
-rw-r--r--stdin.mu1091log stats plain blame
-rw-r--r--tangle.mu963log stats plain blame
-rw-r--r--trace.arc.t73475log stats plain blame
-rw-r--r--trace.mu49823log stats plain blame
-rw-r--r--vimrc.vim270log stats plain blame
-rw-r--r--x.mu142log stats plain blame
ass="p">[key] pwd = self.env.pwd if destination.path != pwd.path: self.bookmarks.enter(key) self.bookmarks.remember(pwd) except NonexistantBookmark: pass def set_bookmark(self, key): """Set the bookmark with the name <key> to the current directory""" self.bookmarks[key] = self.env.pwd def unset_bookmark(self, key): """Delete the bookmark with the name <key>""" self.bookmarks.delete(key) def move_left(self): """Enter the parent directory""" self.env.enter_dir('..') def move_right(self, mode=0): """Enter the current directory or execute the current file""" cf = self.env.cf marked_items = self.env.pwd.marked_items sel = self.env.get_selection() if not self.env.enter_dir(cf): if sel: if not self.execute_file(sel, mode=mode): self.open_console('@') def history_go(self, relative): """Move back and forth in the history""" self.env.history_go(relative) def handle_mouse(self): """Handle mouse-buttons if one was pressed""" self.ui.handle_mouse() def execute_file(self, files, app='', flags='', mode=0): """Execute a file. app is the name of a method in Applications, without the "app_" flags is a string consisting of applications.ALLOWED_FLAGS mode is a positive integer. Both flags and mode specify how the program is run.""" if type(files) not in (list, tuple, set): files = [files] arbitrary_file = tuple(files)[0] return self.apps.get(app)( mainfile = arbitrary_file, files = files, flags = flags, mode = mode, fm = self, stdin = None, apps = self.apps) def edit_file(self): """Calls execute_file with the current file and app='editor'""" if self.env.cf is None: return self.execute_file(self.env.cf, app = 'editor') def open_console(self, mode=':', string=''): """Open the console if the current UI supports that""" if hasattr(self.ui, 'open_console'): self.ui.open_console(mode, string) def move_pointer(self, relative = 0, absolute = None): """Move the pointer down by <relative> or to <absolute>""" self.env.cf = self.env.pwd.move_pointer(relative, absolute) def move_pointer_by_pages(self, relative): """Move the pointer down by <relative> pages""" self.env.cf = self.env.pwd.move_pointer( relative = int(relative * self.env.termsize[0])) def move_pointer_by_percentage(self, relative=0, absolute=None): """Move the pointer down by <relative>% or to <absolute>%""" try: factor = len(self.env.pwd) / 100.0 except: return self.env.cf = self.env.pwd.move_pointer( \ relative=int(relative * factor), \ absolute=int(absolute * factor) ) def scroll(self, relative): """Scroll down by <relative> lines""" if hasattr(self.ui, 'scroll'): self.ui.scroll(relative) self.env.cf = self.env.pwd.pointed_file def redraw_window(self): """Redraw the window""" self.ui.redraw_window() def reset(self): """Reset the filemanager, clearing the directory buffer""" old_path = self.env.pwd.path self.env.directories = {} self.enter_dir(old_path) def toggle_boolean_option(self, string): """Toggle a boolean option named <string>""" if isinstance(self.env.settings[string], bool): self.env.settings[string] ^= True def sort(self, func=None, reverse=None): if reverse is not None: self.env.settings['reverse'] = bool(reverse) if func is not None: self.env.settings['sort'] = str(func) def force_load_preview(self): cf = self.env.cf if cf is not None: cf.force_load = True # ------------------------------------ filesystem operations def copy(self): """Copy the selected items""" selected = self.env.get_selection() self.env.copy = set(f for f in selected if f in self.env.pwd.files) self.env.cut = False def cut(self): self.copy() self.env.cut = True def paste(self): """Paste the selected items into the current directory""" from os.path import join, isdir copied_files = self.env.copy if not copied_files: return if self.env.cut: msg = self.notify("Moving ...", duration=0) self.ui.redraw() for f in self.env.copy: try: shutil.move(f.path, self.env.pwd.path) except (shutil.Error, IOError) as x: self.notify(str(x), bad=True) self.env.copy.clear() self.env.cut = False else: msg = self.notify("Copying ...", duration=0) self.ui.redraw() for f in self.env.copy: if isdir(f.path): try: shutil.copytree(f.path, join(self.env.pwd.path, f.basename)) except (shutil.Error, IOError) as x: self.notify(str(x), bad=True) else: try: shutil.copy(f.path, self.env.pwd.path) except (shutil.Error, IOError) as x: self.notify(str(x), bad=True) msg.delete() self.env.pwd.load_content() def delete(self): msg = self.notify("Deleting ...", duration=0) selected = self.env.get_selection() self.env.copy -= selected if selected: for f in selected: if os.path.isdir(f.path): try: shutil.rmtree(f.path) except OSError as err: self.notify(str(err), bad=True) else: try: os.remove(f.path) except OSError as err: self.notify(str(err), bad=True) msg.delete() def mkdir(self, name): try: os.mkdir(os.path.join(self.env.pwd.path, name)) except OSError as err: self.notify(str(err), bad=True) def notify(self, text, duration=4, bad=False): try: method = self.ui.display except AttributeError: pass else: return method(text, duration=duration, bad=bad) def mark(self, all=False, toggle=False, val=None, movedown=None): """ A wrapper for the directory.mark_xyz functions. Arguments: all - change all files of the current directory at once? toggle - toggle the marked-status? val - mark or unmark? """ if self.env.pwd is None: return pwd = self.env.pwd if movedown is None: movedown = not all if val is None and toggle is False: return if all: if toggle: pwd.toggle_all_marks() else: pwd.mark_all(val) else: item = self.env.cf if item is not None: if toggle: pwd.toggle_mark(item) else: pwd.mark_item(item, val) if movedown: self.move_pointer(relative=1) # aliases: cd = enter_dir