]> Sergey Matveev's repositories - nnn.git/commitdiff
Differentiate half-page Ctrl+U/D and pageful PageDN/UP movement keys
authorelig0n <eliran.gonen@gmail.com>
Sat, 20 Apr 2019 20:25:15 +0000 (23:25 +0300)
committerelig0n <eliran.gonen@gmail.com>
Sat, 20 Apr 2019 20:25:15 +0000 (23:25 +0300)
src/nnn.c
src/nnn.h

index 05d1a266dd3cdb24b22a2b21eeb69a6cb63a57a4..54d1c66498d657e4f88d3ef7bf32ec89238fd363 100644 (file)
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -3062,9 +3062,17 @@ nochange:
                        break;
                case SEL_PGDN:
                        if (cur < ndents - 1)
-                               cur += MIN((xlines - 4) / 2, ndents - 1 - cur);
+                               cur += MIN((xlines - 4), ndents - 1 - cur);
                        break;
                case SEL_PGUP:
+                       if (cur > 0)
+                               cur -= MIN((xlines - 4), cur);
+                       break;
+               case SEL_CTRL_D:
+                       if (cur < ndents - 1)
+                               cur += MIN((xlines - 4) / 2, ndents - 1 - cur);
+                       break;
+               case SEL_CTRL_U:
                        if (cur > 0)
                                cur -= MIN((xlines - 4) / 2, cur);
                        break;
index dd21ef5b419a2e6217447c6b751c9209d74984cd..bc0561ddb7935df9b4c5283f80ce9750e46783e5 100644 (file)
--- a/src/nnn.h
+++ b/src/nnn.h
@@ -43,6 +43,8 @@ enum action {
        SEL_PREV,
        SEL_PGDN,
        SEL_PGUP,
+       SEL_CTRL_D,
+       SEL_CTRL_U,
        SEL_HOME,
        SEL_END,
        SEL_CDHOME,
@@ -124,10 +126,12 @@ static struct key bindings[] = {
        { KEY_UP,         SEL_PREV },
        /* Page down */
        { KEY_NPAGE,      SEL_PGDN },
-       { CONTROL('D'),   SEL_PGDN },
        /* Page up */
        { KEY_PPAGE,      SEL_PGUP },
-       { CONTROL('U'),   SEL_PGUP },
+       /* Ctrl+D */
+       { CONTROL('D'),   SEL_CTRL_D },
+       /* Ctrl+U */
+       { CONTROL('U'),   SEL_CTRL_U },
        /* First entry */
        { KEY_HOME,       SEL_HOME },
        { 'g',            SEL_HOME },