aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md8
-rw-r--r--nnn.c142
2 files changed, 80 insertions, 70 deletions
diff --git a/README.md b/README.md
index 5638f99..513f76d 100644
--- a/README.md
+++ b/README.md
@@ -51,7 +51,7 @@ Have fun with it! Missing a feature? Want to contribute? Head to the rolling [To
- [Keyboard shortcuts](#keyboard-shortcuts)
- [Filters](#filters)
- [Navigate-as-you-type mode](#navigate-as-you-type-mode)
- - [File type abbreviations](#file-type-abbreviations)
+ - [File indicators](#file-indicators)
- [File handling](#file-handling)
- [Help](#help)
- [Quickstart](#quickstart)
@@ -276,11 +276,11 @@ If `nnn` is invoked as root or the environment variable `NNN_SHOW_HIDDEN` is set
In this mode directories are opened in filter mode, allowing continuous navigation. Works best with the **arrow keys**.
-#### File type abbreviations
+#### File indicators
-The following abbreviations are used in the detail view:
+The following indicators are used in the detail view:
-| Symbol | File Type |
+| Indicator | File Type |
| --- | --- |
| `/` | Directory |
| `*` | Executable |
diff --git a/nnn.c b/nnn.c
index 1f68a29..af1d7b6 100644
--- a/nnn.c
+++ b/nnn.c
@@ -1210,7 +1210,8 @@ xreadline(char *fname, char *prompt)
mvaddnwstr(y, x, buf, len + 1);
move(y, x + wcswidth(buf, pos));
- if ((r = get_wch(ch)) != ERR) {
+ r = get_wch(ch);
+ if (r != ERR) {
if (r == OK) {
switch (*ch) {
case KEY_ENTER: //fallthrough
@@ -2982,82 +2983,91 @@ nochange:
copycurname();
goto begin;
case SEL_COPY:
- if (!(cfg.noxdisplay || copier))
+ if (!(cfg.noxdisplay || copier)) {
printmsg(messages[STR_COPY_ID]);
- else if (ndents) {
- if (cfg.copymode) {
- r = mkpath(path, dents[cur].name, newpath, PATH_MAX);
- if (!appendfpath(newpath, r))
- goto nochange;
- ++ncp;
- printmsg(newpath);
- } else if (cfg.quote) {
- g_buf[0] = '\'';
- r = mkpath(path, dents[cur].name, g_buf + 1, PATH_MAX);
- g_buf[r] = '\'';
- g_buf[r + 1] = '\0';
-
- if (cfg.noxdisplay)
- writecp(g_buf, r + 1); /* Truncate NULL from end */
- else
- spawn(copier, g_buf, NULL, NULL, F_NOTRACE);
+ goto nochange;
+ }
- g_buf[r] = '\0';
- printmsg(g_buf + 1);
- } else {
- r = mkpath(path, dents[cur].name, newpath, PATH_MAX);
- if (cfg.noxdisplay)
- writecp(newpath, r - 1); /* Truncate NULL from end */
- else
- spawn(copier, newpath, NULL, NULL, F_NOTRACE);
- printmsg(newpath);
- }
+ if (!ndents)
+ goto nochange;
+
+ if (cfg.copymode) {
+ r = mkpath(path, dents[cur].name, newpath, PATH_MAX);
+ if (!appendfpath(newpath, r))
+ goto nochange;
+ ++ncp;
+ printmsg(newpath);
+ } else if (cfg.quote) {
+ g_buf[0] = '\'';
+ r = mkpath(path, dents[cur].name, g_buf + 1, PATH_MAX);
+ g_buf[r] = '\'';
+ g_buf[r + 1] = '\0';
+
+ if (cfg.noxdisplay)
+ writecp(g_buf, r + 1); /* Truncate NULL from end */
+ else
+ spawn(copier, g_buf, NULL, NULL, F_NOTRACE);
+
+ g_buf[r] = '\0';
+ printmsg(g_buf + 1);
+ } else {
+ r = mkpath(path, dents[cur].name, newpath, PATH_MAX);
+ if (cfg.noxdisplay)
+ writecp(newpath, r - 1); /* Truncate NULL from end */
+ else
+ spawn(copier, newpath, NULL, NULL, F_NOTRACE);
+ printmsg(newpath);
}
goto nochange;
case SEL_COPYMUL:
- if (!(cfg.noxdisplay || copier))
+ if (!(cfg.noxdisplay || copier)) {
printmsg(messages[STR_COPY_ID]);
- else if (ndents) {
- cfg.copymode ^= 1;
- if (cfg.copymode) {
- g_crc = crc8fast((uchar *)dents, ndents * sizeof(struct entry));
+ goto nochange;
+ }
+
+ if (!ndents)
+ goto nochange;
+
+ cfg.copymode ^= 1;
+ if (cfg.copymode) {
+ g_crc = crc8fast((uchar *)dents, ndents * sizeof(struct entry));
+ copystartid = cur;
+ copybufpos = 0;
+ ncp = 0;
+ printmsg("multi-copy on");
+ DPRINTF_S("copymode on");
+ goto nochange;
+ }
+
+ if (!ncp) { /* Handle range selection */
+ if (cur < copystartid) {
+ copyendid = copystartid;
copystartid = cur;
- copybufpos = 0;
- ncp = 0;
- printmsg("multi-copy on");
- DPRINTF_S("copymode on");
- } else {
- if (!ncp) { /* Handle range selection */
- if (cur < copystartid) {
- copyendid = copystartid;
- copystartid = cur;
- } else
- copyendid = cur;
-
- if (copystartid < copyendid) {
- for (r = copystartid; r <= copyendid; ++r)
- if (!appendfpath(newpath, mkpath(path, dents[r].name, newpath, PATH_MAX)))
- goto nochange;
-
- snprintf(newpath, PATH_MAX, "%d files copied", copyendid - copystartid + 1);
- printmsg(newpath);
- }
- }
+ } else
+ copyendid = cur;
- if (copybufpos) { /* File path(s) written to the buffer */
- if (cfg.noxdisplay)
- writecp(pcopybuf, copybufpos - 1); /* Truncate NULL from end */
- else
- spawn(copier, pcopybuf, NULL, NULL, F_NOTRACE);
+ if (copystartid < copyendid) {
+ for (r = copystartid; r <= copyendid; ++r)
+ if (!appendfpath(newpath, mkpath(path, dents[r].name, newpath, PATH_MAX)))
+ goto nochange;
- if (ncp) { /* Some files cherry picked */
- snprintf(newpath, PATH_MAX, "%d files copied", ncp);
- printmsg(newpath);
- }
- } else
- printmsg("multi-copy off");
+ snprintf(newpath, PATH_MAX, "%d files copied", copyendid - copystartid + 1);
+ printmsg(newpath);
}
}
+
+ if (copybufpos) { /* File path(s) written to the buffer */
+ if (cfg.noxdisplay)
+ writecp(pcopybuf, copybufpos - 1); /* Truncate NULL from end */
+ else
+ spawn(copier, pcopybuf, NULL, NULL, F_NOTRACE);
+
+ if (ncp) { /* Some files cherry picked */
+ snprintf(newpath, PATH_MAX, "%d files copied", ncp);
+ printmsg(newpath);
+ }
+ } else
+ printmsg("multi-copy off");
goto nochange;
case SEL_QUOTE:
cfg.quote ^= 1;