From 9fb0beca1d669c33b880f17703f940093232bc12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Diego=20Aur=C3=A9lio=20Mesquita?= Date: Mon, 3 Dec 2018 23:45:18 -0200 Subject: [PATCH] bindings: hard-bind the bookmark functions to M-Ins and M-PgUp/M-PgDn MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bind the toggling of a bookmark to , and the jumping to the previous and next bookmark to and , so that these functions are available by default. Signed-off-by: Marco Diego Aurélio Mesquita --- 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 14f3c315..874594e4 100644 --- a/src/global.c +++ b/src/global.c @@ -104,7 +104,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 @@ -1203,6 +1204,9 @@ void shortcut_init(void) add_to_sclist(MMAIN, "Sh-^Del", CONTROL_SHIFT_DELETE, chop_previous_word, 0); add_to_sclist(MMAIN, "^Del", CONTROL_DELETE, chop_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 2dbf3528..12698b40 100644 --- a/src/nano.c +++ b/src/nano.c @@ -2310,6 +2310,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 78e16e96..1984f73e 100644 --- a/src/nano.h +++ b/src/nano.h @@ -592,6 +592,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 724e93c8..da2e3a55 100644 --- a/src/proto.h +++ b/src/proto.h @@ -76,7 +76,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 e7dbba39..c3a80240 100644 --- a/src/winio.c +++ b/src/winio.c @@ -594,9 +594,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 + } else if (length > 5 && seq[3] == ';' && seq[5] == '~') /* Esc [ 2 n ; 2 ~ == F21...F24 on some terminals. */ *consumed = 6; @@ -670,6 +675,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; @@ -682,6 +689,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; @@ -1067,6 +1076,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) { @@ -1114,6 +1129,12 @@ int parse_kbinput(WINDOW *win) return ALT_UP; if (retval == KEY_DOWN) return ALT_DOWN; + if (retval == KEY_PPAGE) + return ALT_PAGEUP; + if (retval == KEY_NPAGE) + return ALT_PAGEDOWN; + if (retval == KEY_IC) + return ALT_INSERT; } #endif /* Is Ctrl being held? */