nano

nano with my custom patches
git clone git://bsandro.tech/nano
Log | Files | Refs | README | LICENSE

commit 9fb0beca1d669c33b880f17703f940093232bc12
parent f091c34bac4b2748aa032455a9498a2a6f29c80e
Author: Marco Diego Aurélio Mesquita <marcodiegomesquita@gmail.com>
Date:   Mon,  3 Dec 2018 23:45:18 -0200

bindings: hard-bind the bookmark functions to M-Ins and M-PgUp/M-PgDn

Bind the toggling of a bookmark to <Alt+Insert>, and the jumping to the
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 <marcodiegomesquita@gmail.com>

Diffstat:
Msrc/global.c | 6+++++-
Msrc/nano.c | 4++++
Msrc/nano.h | 3+++
Msrc/proto.h | 3++-
Msrc/winio.c | 23++++++++++++++++++++++-
5 files changed, 36 insertions(+), 3 deletions(-)

diff --git 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 @@ -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 @@ -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 @@ -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 @@ -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? */