dotfiles

My personal shell configs and stuff
git clone git://git.alex.balgavy.eu/dotfiles.git
Log | Files | Refs | Submodules | README | LICENSE

commands.py (2763B)


      1 # This is a sample commands.py.  You can add your own commands here.
      2 #
      3 # Please refer to commands_full.py for all the default commands and a complete
      4 # documentation.  Do NOT add them all here, or you may end up with defunct
      5 # commands when upgrading ranger.
      6 
      7 # A simple command for demonstration purposes follows.
      8 # -----------------------------------------------------------------------------
      9 
     10 from __future__ import (absolute_import, division, print_function)
     11 
     12 # You can import any python module as needed.
     13 import os
     14 
     15 # You always need to import ranger.api.commands here to get the Command class:
     16 from ranger.api.commands import Command
     17 
     18 
     19 # Any class that is a subclass of "Command" will be integrated into ranger as a
     20 # command.  Try typing ":my_edit<ENTER>" in ranger!
     21 class my_edit(Command):
     22     # The so-called doc-string of the class will be visible in the built-in
     23     # help that is accessible by typing "?c" inside ranger.
     24     """:my_edit <filename>
     25 
     26     A sample command for demonstration purposes that opens a file in an editor.
     27     """
     28 
     29     # The execute method is called when you run this command in ranger.
     30     def execute(self):
     31         # self.arg(1) is the first (space-separated) argument to the function.
     32         # This way you can write ":my_edit somefilename<ENTER>".
     33         if self.arg(1):
     34             # self.rest(1) contains self.arg(1) and everything that follows
     35             target_filename = self.rest(1)
     36         else:
     37             # self.fm is a ranger.core.filemanager.FileManager object and gives
     38             # you access to internals of ranger.
     39             # self.fm.thisfile is a ranger.container.file.File object and is a
     40             # reference to the currently selected file.
     41             target_filename = self.fm.thisfile.path
     42 
     43         # This is a generic function to print text in ranger.
     44         self.fm.notify("Let's edit the file " + target_filename + "!")
     45 
     46         # Using bad=True in fm.notify allows you to print error messages:
     47         if not os.path.exists(target_filename):
     48             self.fm.notify("The given file does not exist!", bad=True)
     49             return
     50 
     51         # This executes a function from ranger.core.acitons, a module with a
     52         # variety of subroutines that can help you construct commands.
     53         # Check out the source, or run "pydoc ranger.core.actions" for a list.
     54         self.fm.edit_file(target_filename)
     55 
     56     # The tab method is called when you press tab, and should return a list of
     57     # suggestions that the user will tab through.
     58     # tabnum is 1 for <TAB> and -1 for <S-TAB> by default
     59     def tab(self, tabnum):
     60         # This is a generic tab-completion function that iterates through the
     61         # content of the current directory.
     62         return self._tab_directory_content()