3.1 KiB
Guidelines for Code Modification
Coding Style
- Use syntax compatible with Python
2.6+
and3.1+
. - Use docstrings with
pydoc
in mind - Follow the PEP8 style guide: https://www.python.org/dev/peps/pep-0008/
- Always run
make test
before submitting a new PR.pylint
,flake8
,pytest
,doctest
andshellcheck
need to be installed. (If you don't change any shell scripts you can runmake test_py
and you don't need theshellcheck
dependency but it's an awesome tool, so check it out : ) - When breaking backward compatibility with old configuration files or plugins,
please include a temporary workaround code that provides a compatibility
layer and mark it with a comment that includes the word
COMPAT
. For examples, grep the code for the wordCOMPAT
. :)
Patches
Send patches, created with git format-patch
, to the email address
ranger-users@nongnu.org
or open a pull request on GitHub.
Please use PGP-encryption for security-relevant patches or messages. PGP key IDs are shared along with releases on https://ranger.github.io and can be attempted in reverse chronological order in case a maintainer is unresponsive.
Version Numbering
Three numbers, A.B.C
, where
A
changes on a rewriteB
changes when major configuration incompatibilities occurC
changes with each release
Starting Points
Good places to read about ranger internals are:
ranger/core/actions.py
ranger/container/fsobject.py
About the UI:
ranger/gui/widgets/browsercolumn.py
ranger/gui/widgets/view_miller.py
ranger/gui/ui.py
Common Changes
Adding options
- Add a default value in
rc.conf
, along with a comment that describes the option. - Add the option to the
ALLOWED_SETTINGS
dictionary in the fileranger/container/settings.py
in alphabetical order. - Add an entry in the man page by editing
doc/ranger.pod
, then rebuild the man page by runningmake man
in the ranger root directory
The setting is now accessible with self.settings.my_option
, assuming self is a
subclass of ranger.core.shared.SettingsAware
.
Adding colorschemes
-
Copy
ranger/colorschemes/default.py
toranger/colorschemes/myscheme.py
and modify it according to your needs. Alternatively, create a subclass ofranger.colorschemes.default.Default
and override theuse
method, as it is done in theJungle
colorscheme. -
Add this line to your
~/.config/ranger/rc.conf
:set colorscheme myscheme
Change which programs start which file types
Edit the configuration file ~/.config/ranger/rifle.conf
. The default one can
be obtained by running ranger --copy-config rifle
.
Change which file extensions have which mime type
Modify ranger/data/mime.types
. You may also add your own entries to ~/.mime.types
Change which files are previewed in the auto preview
In ranger/container/file.py
, change the constant PREVIEW_BLACKLIST