nnn

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit dedf0554e5cb6a52ec6b529bb5e3b1c6b31a0129
parent b835cfcc2abf0503966dec1b9226b3a7c34d371a
Author: ANtlord <antlord@tutanota.com>
Date:   Sat, 22 Jul 2023 19:41:14 +0100

Jump to the next young file

Forward jumping to the next young file is implemented. The starting
position from which the next young file is searched is the next
position. If no young file has been found, the search starts from the
beginning. It stops at the initial position where the search has
started.

Diffstat:
Msrc/nnn.c | 18+++++++++++++++++-
Msrc/nnn.h | 2++
2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/src/nnn.c b/src/nnn.c @@ -5107,6 +5107,7 @@ static void show_help(const char *path) "a1-4 Context%11(Sh)Tab Cycle/new context\n" "62Esc ^Q Quit%20q Quit context\n" "b^G QuitCD%18Q Pick/err, quit\n" + "b^y Next young file\n" "0\n" "1FILTER & PROMPT\n" "c/ Filter%17^N Toggle type-to-nav\n" @@ -6115,6 +6116,20 @@ static void handle_screen_move(enum action sel) case SEL_END: move_cursor(ndents - 1, 1); break; + case SEL_YOUNG: + { + for (int r = cur;;) { + if (++r >= ndents) + r = 0; + if (r == cur) + break; + if (pdents[r].flags & FILE_YOUNG) { + move_cursor(r, 0); + break; + } + } + break; + } default: /* case SEL_FIRST */ { int c = get_input(messages[MSG_FIRST]); @@ -7196,7 +7211,8 @@ nochange: case SEL_HOME: // fallthrough case SEL_END: // fallthrough case SEL_FIRST: // fallthrough - case SEL_JUMP: + case SEL_JUMP: // fallthrough + case SEL_YOUNG: if (ndents) { g_state.move = 1; handle_screen_move(sel); diff --git a/src/nnn.h b/src/nnn.h @@ -58,6 +58,7 @@ enum action { SEL_END, SEL_FIRST, SEL_JUMP, + SEL_YOUNG, SEL_CDHOME, SEL_CDBEGIN, SEL_CDLAST, @@ -164,6 +165,7 @@ static struct key bindings[] = { { '\'', SEL_FIRST }, /* Jump to an entry number/offset */ { 'J', SEL_JUMP }, + { CONTROL('Y'), SEL_YOUNG }, /* HOME */ { '~', SEL_CDHOME }, /* Initial directory */