Browse Source

Loop the command prompt

master
Arun Prakash Jana 3 years ago
parent
commit
2ec9103859
No known key found for this signature in database GPG Key ID: A75979F35C080412
1 changed files with 28 additions and 19 deletions
  1. +28
    -19
      src/nnn.c

+ 28
- 19
src/nnn.c View File

@@ -1966,12 +1966,6 @@ static int spawn(char *file, char *arg1, char *arg2, uchar flag)
return retstatus; return retstatus;
} }


static void prompt_run(char *cmd, const char *current)
{
setenv(envs[ENV_NCUR], current, 1);
spawn(shell, "-c", cmd, F_CLI | F_CONFIRM);
}

/* Get program name from env var, else return fallback program */ /* Get program name from env var, else return fallback program */
static char *xgetenv(const char * const name, char *fallback) static char *xgetenv(const char * const name, char *fallback)
{ {
@@ -3190,6 +3184,33 @@ static char *getreadline(const char *prompt)
} }
#endif #endif


/* Returns TRUE if at least command was run */
static bool prompt_run(const char *current)
{
bool ret = FALSE;
char *tmp;

setenv(envs[ENV_NCUR], current, 1);

while (1) {
#ifndef NORL
if (g_state.picker) {
#endif
tmp = xreadline(NULL, ">>> ");
#ifndef NORL
} else
tmp = getreadline("\n>>> ");
#endif
if (tmp && *tmp) { // NOLINT
ret = TRUE;
spawn(shell, "-c", tmp, F_CLI | F_CONFIRM);
} else
break;
}

return ret;
}

/* /*
* Create symbolic/hard link(s) to file(s) in selection list * Create symbolic/hard link(s) to file(s) in selection list
* Returns the number of links created, -1 on error * Returns the number of links created, -1 on error
@@ -7003,19 +7024,7 @@ nochange:
r = FALSE; r = FALSE;
break; break;
default: /* SEL_RUNCMD */ default: /* SEL_RUNCMD */
r = TRUE;
#ifndef NORL
if (g_state.picker) {
#endif
tmp = xreadline(NULL, ">>> ");
#ifndef NORL
} else
tmp = getreadline("\n>>> ");
#endif
if (tmp && *tmp) // NOLINT
prompt_run(tmp, (ndents ? pdents[cur].name : ""));
else
r = FALSE;
r = prompt_run(ndents ? pdents[cur].name : "");
} }


/* Continue in type-to-nav mode, if enabled */ /* Continue in type-to-nav mode, if enabled */


Loading…
Cancel
Save