]> Sergey Matveev's repositories - nnn.git/commitdiff
Handle '\b' at prompt in earlier curses (rhel25)
authorArun Prakash Jana <engineerarun@gmail.com>
Wed, 4 Jul 2018 13:18:43 +0000 (18:48 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Wed, 4 Jul 2018 13:18:43 +0000 (18:48 +0530)
nnn.c

diff --git a/nnn.c b/nnn.c
index c235e74e4a4208b29393da96a0b91c1b0238e359..b1366994762f031497dd048312d616d92d4d824c 100644 (file)
--- a/nnn.c
+++ b/nnn.c
@@ -1083,7 +1083,7 @@ filterentries(char *path)
        printprompt(ln);
 
        while ((r = get_wch(ch)) != ERR) {
-               if (*ch == 127 /* handle DEL */ || *ch == KEY_DC || *ch == KEY_BACKSPACE) {
+               if (*ch == 127 /* handle DEL */ || *ch == KEY_DC || *ch == KEY_BACKSPACE || *ch == '\b') {
                        if (len == 1) {
                                cur = oldcur;
                                *ch = CONTROL('L');
@@ -1216,6 +1216,14 @@ xreadline(char *fname, char *prompt)
                                if (*ch == KEY_ENTER || *ch == '\n' || *ch == '\r')
                                        break;
 
+                               if (*ch == '\b') {
+                                       if (pos > 0) {
+                                               memmove(buf + pos - 1, buf + pos, (len - pos) << 2);
+                                               --len, --pos;
+                                       }
+                                       continue;
+                               }
+
                                if (*ch == CONTROL('L')) {
                                        clearprompt();
                                        printprompt(prompt);
@@ -2408,7 +2416,7 @@ browse(char *ipath, char *ifilter)
        static char oldname[NAME_MAX + 1] __attribute__ ((aligned));
        char *dir, *tmp, *run = NULL, *env = NULL;
        struct stat sb;
-       int r, fd, presel, ncp, copystartid = 0, copyendid = 0;
+       int r, fd, presel, ncp = 0, copystartid = 0, copyendid = 0;
        enum action sel = SEL_RUNARG + 1;
        bool dir_changed = FALSE;