nnn/patches
Luuk van Baal 910763441d
Fix checkpatches duplicate make
2022-07-18 18:28:15 +05:30
..
colemak Add colemak patch 2022-07-09 13:42:38 +02:00
gitstatus fix breaking patches 2022-06-30 01:04:25 +06:00
namefirst fix breaking patches 2022-06-30 01:04:25 +06:00
restorepreview Use the term auto-advance instead of auto-jump 2022-06-15 20:04:56 +05:30
README.md Update README 2022-07-10 21:36:56 +05:30
check-patches.sh Fix checkpatches duplicate make 2022-07-18 18:28:15 +05:30

README.md

User Patch Framework

This directory contains sizable user submitted patches that were rejected from mainline as they tend to be more subjective in nature.

The patches will be adapted on each release when necessary (v4.1 onwards). Each patch can be applied through its respective make variable during compilation. In case inter-patch merge conflicts occur, a compatability patch is provided and will automatically be applied.

List of patches

Patch (a-z) Description Make var
colemak Key bindings for Colemak-DH keyboard layout O_COLEMAK
gitstatus Add git status column to the detail view. Provides command line flag -G to show column in normal mode. O_GITSTATUS
namefirst Print filenames first in the detail view. Print user/group columns when a directory contains different users/groups. O_NAMEFIRST
restorepreview Add pipe to close and restore preview-tui for internal undetached edits (e key) O_RESTOREPREVIEW

To apply a patch, use the corresponding make variable, e.g.:

make O_NAMEFIRST=1

When contributing/adding a new patch, make sure to add the make variable to the patches array in ./misc/test/check-patches.sh as well so that patch failures can be easily tested.

Resolving patch conflicts

Patch conflicts can be checked locally by running make checkpatches or by running ./patches/check-patches.sh manually.

Whenever patch conflicts occur on the latest master, pull requests resolving them are welcome. Let's say a conflict occurs in the restorepreview patch. The best way to resolve this conflict would be something along the lines of:

  • Ensure you're on latest master and run cp src/nnn.c src/nnn.c.orig && PATCH_OPTS="--merge" make O_RESTOREPREVIEW=1. This will save a copy of the source from master in src/nnn.c.orig and generate conflict markers in src/nnn.c.
  • Next edit src.nnn, resolve all the conflicts around the conflict markers(<<<<<<<), and save.
  • Then run diff -u src/nnn.c.orig src/nnn.c > patch.diff to generate the new patch file and copy the contents to patches/restorepreview/mainline.diff (keeping the description comment at the start of the file).