blob: e00e7d60a9366de88f8b475e29e8b3b7ddafcdd4 (
plain) (
tree)
|
|
Guidelines for Code Modification
================================
Coding Style
------------
* Use syntax compatible with Python `2.6+` and `3.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` and `shellcheck` need to be installed. (If you don't
change any shell scripts you can run `make test_py` and you don't need the
`shellcheck` 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 word `COMPAT`. :)
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 rewrite
* `B` changes when major configuration incompatibilities occur
* `C` 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 file
`ranger/container/settings.py` in alphabetical order.
* Add an entry in the man page by editing `doc/ranger.pod`, then rebuild the man
page by running `make 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` to `ranger/colorschemes/myscheme.py`
and modify it according to your needs. Alternatively, create a subclass of
`ranger.colorschemes.default.Default` and override the `use` method, as it is
done in the `Jungle` 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`
|