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.
This commit is contained in:
ANtlord 2023-07-22 19:41:14 +01:00 committed by NRK
parent b835cfcc2a
commit dedf0554e5
2 changed files with 19 additions and 1 deletions

View File

@ -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);

View File

@ -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 */