diff options
author | hut <hut@lavabit.com> | 2012-12-04 21:20:09 +0100 |
---|---|---|
committer | hut <hut@lavabit.com> | 2012-12-04 21:20:09 +0100 |
commit | 972da7babcecbe47bd56a3d2d19157b4aba61e99 (patch) | |
tree | 4d3b5a9ecb992a80dd54e511bf00dd3bc3670a3d /examples/plugin_chmod_keybindings.py | |
parent | 6f7e47d6a91627fab3e08f42df5114db3c22841a (diff) | |
download | ranger-972da7babcecbe47bd56a3d2d19157b4aba61e99.tar.gz |
removed options.py, improved plugins. *UPDATE YOUR COMMANDS.PY*
Previously, you could change settings in both rc.conf and options.py. With this commit, options.py is deprecated and you are encouraged to use rc.conf to change settings. I chose to do this because it is more elegant to use a simple list of ranger commands for configuration rather than a python file with lots of magic around it and potential syntax errors for inexperienced users. The existing "set" command doesn't evaluate python objects anymore, instead it always takes strings and converts to the proper type automatically. This means that the old set command will not work anymore and you have to update your commands.py if it still uses the old definition of the "set" command. This is how to convert your options.py: old way, in options.py | new way, in rc.conf ---------------------------+------------------------ show_hidden = False | set show_hidden false sort = 'basename' | set sort basename column_ratios = (1, 5, 3) | set column_ratios 1,5,3 For backward compatibility, you still can use options.py, but you get a warning when you start ranger. You can pipe stderr to /dev/null to silence the warning, or just move your stuff from options.py to rc.conf and plugins and delete the options.py. Finally, to extend ranger, which you previously could do through monkey-patching in options.py, you should now use the plugin system. This was an experimental, undocumented feature of ranger for some time, but this and the following commits will imrpove and document it. You can simply move all the monkey-patching code from options.py to a *.py file in ~/.config/ranger/plugins/.
Diffstat (limited to 'examples/plugin_chmod_keybindings.py')
-rw-r--r-- | examples/plugin_chmod_keybindings.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/examples/plugin_chmod_keybindings.py b/examples/plugin_chmod_keybindings.py new file mode 100644 index 00000000..c04cc492 --- /dev/null +++ b/examples/plugin_chmod_keybindings.py @@ -0,0 +1,18 @@ +# This plugin serves as an example for adding key bindings through a plugin. +# It could replace the ten lines in the rc.conf that create the key bindings +# for the "chmod" command. + +import ranger.core.fm +old_init_hook = ranger.core.fm.init_hook + +def init_hook(fm): + old_init_hook(fm) + + # Generate key bindings for the chmod command + command = "map {0}{1}{2} shell -d chmod {1}{0}{2} %s" + for mode in list('ugoa') + '': + for perm in "rwxXst": + fm.execute_console(command.format('-', mode, perm)) + fm.execute_console(command.format('+', mode, perm)) + +ranger.core.fm.init_hook = init_hook |