nano-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Nano-devel] [PATCH 2/3 V13] bindings: hard-bind the bookmark functions


From: Benno Schulenberg
Subject: [Nano-devel] [PATCH 2/3 V13] bindings: hard-bind the bookmark functions to M-Ins and M-PgUp/M-PgDn
Date: Mon, 17 Dec 2018 15:12:27 +0100

From: Marco Diego Aurélio Mesquita <address@hidden>

Bind the toggling of a bookmark to <Alt+Insert>, and the jumping to
previous and next bookmark to <Alt+PageUp> and <Alt+PageDown>, so that
these functions are available by default.

Signed-off-by: Marco Diego Aurélio Mesquita <address@hidden>
---
 src/global.c |  6 +++++-
 src/nano.c   |  4 ++++
 src/nano.h   |  3 +++
 src/proto.h  |  3 ++-
 src/winio.c  | 23 ++++++++++++++++++++++-
 5 files changed, 36 insertions(+), 3 deletions(-)

diff --git a/src/global.c b/src/global.c
index d8b4ecd9..a42320c6 100644
--- a/src/global.c
+++ b/src/global.c
@@ -76,7 +76,8 @@ int shiftleft, shiftright, shiftup, shiftdown;
 int shiftcontrolleft, shiftcontrolright, shiftcontrolup, shiftcontroldown;
 int shiftcontrolhome, shiftcontrolend;
 int altleft, altright, altup, altdown;
-int altdelete;
+int altpageup, altpagedown;
+int altinsert, altdelete;
 int shiftaltleft, shiftaltright, shiftaltup, shiftaltdown;
 #endif
 
@@ -1158,6 +1159,9 @@ void shortcut_init(void)
        add_to_sclist(MMAIN, "Sh-^Del", CONTROL_SHIFT_DELETE, do_cut_prev_word, 
0);
        add_to_sclist(MMAIN, "^Del", CONTROL_DELETE, do_cut_next_word, 0);
        add_to_sclist(MMAIN, "M-Del", ALT_DELETE, zap_text, 0);
+       add_to_sclist(MMAIN, "M-Ins", ALT_INSERT, bookmark, 0);
+       add_to_sclist(MMAIN, "M-PgUp", ALT_PAGEUP, to_prev_bookmark, 0);
+       add_to_sclist(MMAIN, "M-PgDn", ALT_PAGEDOWN, to_next_bookmark, 0);
 #endif
 #ifdef ENABLE_WORDCOMPLETION
        add_to_sclist(MMAIN, "^]", 0, complete_a_word, 0);
diff --git a/src/nano.c b/src/nano.c
index f42044cf..4362603b 100644
--- a/src/nano.c
+++ b/src/nano.c
@@ -2602,6 +2602,10 @@ int main(int argc, char **argv)
        altright = get_keycode("kRIT3", ALT_RIGHT);
        altup = get_keycode("kUP3", ALT_UP);
        altdown = get_keycode("kDN3", ALT_DOWN);
+
+       altpageup = get_keycode("kPRV3", ALT_PAGEUP);
+       altpagedown = get_keycode("kNXT3", ALT_PAGEDOWN);
+       altinsert = get_keycode("kIC3", ALT_INSERT);
        altdelete = get_keycode("kDC3", ALT_DELETE);
 
        shiftaltleft = get_keycode("kLFT4", SHIFT_ALT_LEFT);
diff --git a/src/nano.h b/src/nano.h
index 2237a5fd..2f242d31 100644
--- a/src/nano.h
+++ b/src/nano.h
@@ -598,6 +598,9 @@ enum
 #define ALT_RIGHT 0x422
 #define ALT_UP 0x423
 #define ALT_DOWN 0x424
+#define ALT_PAGEUP 0x427
+#define ALT_PAGEDOWN 0x428
+#define ALT_INSERT 0x42C
 #define ALT_DELETE 0x42D
 #define SHIFT_ALT_LEFT 0x431
 #define SHIFT_ALT_RIGHT 0x432
diff --git a/src/proto.h b/src/proto.h
index ab6034a3..c7c7ad6b 100644
--- a/src/proto.h
+++ b/src/proto.h
@@ -67,7 +67,8 @@ extern int shiftcontrolup, shiftcontroldown;
 extern int shiftcontrolhome, shiftcontrolend;
 extern int altleft, altright;
 extern int altup, altdown;
-extern int altdelete;
+extern int altpageup, altpagedown;
+extern int altinsert, altdelete;
 extern int shiftaltleft, shiftaltright;
 extern int shiftaltup, shiftaltdown;
 #endif
diff --git a/src/winio.c b/src/winio.c
index a4a3df77..81c95e2b 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -570,6 +570,12 @@ int parse_kbinput(WINDOW *win)
                return ALT_UP;
        else if (retval == altdown)
                return ALT_DOWN;
+       else if (retval == altpageup)
+               return ALT_PAGEUP;
+       else if (retval == altpagedown)
+               return ALT_PAGEDOWN;
+       else if (retval == altinsert)
+               return ALT_INSERT;
        else if (retval == altdelete)
                return ALT_DELETE;
        else if (retval == shiftaltleft) {
@@ -610,6 +616,12 @@ int parse_kbinput(WINDOW *win)
                }
                /* Is Alt being held? */
                if (modifiers == 0x08) {
+                       if (retval == KEY_PPAGE)
+                               return ALT_PAGEUP;
+                       if (retval == KEY_NPAGE)
+                               return ALT_PAGEDOWN;
+                       if (retval == KEY_IC)
+                               return ALT_INSERT;
                        if (retval == KEY_DC)
                                return ALT_DELETE;
                        if (retval == KEY_UP)
@@ -1101,9 +1113,14 @@ int convert_sequence(const int *seq, size_t length, int 
*consumed)
                                                        /* Esc [ 2 ~ == Insert 
on VT220/VT320/
                                                         * Linux 
console/xterm/Terminal. */
                                                        return KEY_IC;
-                                               else if (length > 4 && seq[2] 
== ';' && seq[4] == '~')
+                                               else if (length > 4 && seq[2] 
== ';' && seq[4] == '~') {
                                                        /* Esc [ 2 ; x ~ == 
modified Insert on xterm. */
                                                        *consumed = 5;
+#ifndef NANO_TINY
+                                                       if (seq[3] == '3')
+                                                               return 
ALT_INSERT;
+#endif
+                                               }
                                                break;
                                        case '3': /* Esc [ 3 ~ == Delete on 
VT220/VT320/
                                                           * Linux 
console/xterm/Terminal. */
@@ -1153,6 +1170,8 @@ int convert_sequence(const int *seq, size_t length, int 
*consumed)
 #ifndef NANO_TINY
                                                        if (seq[3] == '2')
                                                                return 
shiftaltup;
+                                                       if (seq[3] == '3')
+                                                               return 
ALT_PAGEUP;
 #endif
                                                }
                                                break;
@@ -1166,6 +1185,8 @@ int convert_sequence(const int *seq, size_t length, int 
*consumed)
 #ifndef NANO_TINY
                                                        if (seq[3] == '2')
                                                                return 
shiftaltdown;
+                                                       if (seq[3] == '3')
+                                                               return 
ALT_PAGEDOWN;
 #endif
                                                }
                                                break;
-- 
2.19.2




reply via email to

[Prev in Thread] Current Thread [Next in Thread]