From df05f593de129ffad590e075db0cbad8ae6b98e8 Mon Sep 17 00:00:00 2001 From: Arun Prakash Jana Date: Mon, 16 Jan 2023 00:15:54 +0530 Subject: [PATCH] Revert "Paging is achieved through shell command now" This reverts commit 243301603edb1bfc31087ee20fa6cf90bad8ff64. --- nnn.1 | 1 + plugins/README.md | 1 + src/nnn.c | 14 +++++++++----- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/nnn.1 b/nnn.1 index 983089c3..7b736a25 100644 --- a/nnn.1 +++ b/nnn.1 @@ -448,6 +448,7 @@ separated by \fI;\fR: add \fB|\fR (pipe) after \fB!\fR Note: This option is incompatible with \fB&\fR (terminal output is masked for GUI programs) and ignores \fB*\fR (output is already paged for user). + \fI$nnn\fR must be the last argument in this case as well. export NNN_PLUG='m:-!|mediainfo $nnn;t:-!|tree -ps;l:-!|ls -lah --group-directories-first' diff --git a/plugins/README.md b/plugins/README.md index e0e0ddf5..ca5af90b 100644 --- a/plugins/README.md +++ b/plugins/README.md @@ -180,6 +180,7 @@ export NNN_PLUG='m:-!|mediainfo $nnn;t:-!|tree -ps;l:-!|ls -lah --group-director ``` This option is incompatible with `&` (terminal output is masked for GUI programs) and ignores `*` (output is already paged for user). +`$nnn` must be the last argument in this case as well. Notes: diff --git a/src/nnn.c b/src/nnn.c index 1c7dfe4c..c70392bb 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -5192,23 +5192,27 @@ static void setexports(void) static void run_cmd_as_plugin(const char *file, char *runfile, uchar_t flags) { - size_t len = xstrsncpy(g_buf, file, PATH_MAX) - 1; + size_t len; + xstrsncpy(g_buf, file, PATH_MAX); + + len = xstrlen(g_buf); if (len > 1 && g_buf[len - 1] == '*') { flags &= ~F_CONFIRM; /* Skip user confirmation */ g_buf[len - 1] = '\0'; /* Get rid of trailing no confirmation symbol */ --len; } - if (flags & F_PAGE) - get_output(g_buf, NULL, NULL, -1, TRUE); - else if (flags & F_NOTRACE) { + if ((flags & F_PAGE) || (flags & F_NOTRACE)) { if (is_suffix(g_buf, " $nnn")) g_buf[len - 5] = '\0'; else runfile = NULL; - spawn(g_buf, runfile, NULL, NULL, flags); + if (flags & F_PAGE) + get_output(g_buf, runfile, NULL, -1, TRUE); + else // F_NOTRACE + spawn(g_buf, runfile, NULL, NULL, flags); } else spawn(utils[UTIL_SH_EXEC], g_buf, NULL, NULL, flags); }