[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 2/3 V14] bindings: hard-bind the bookmark functions to M-Ins and
From: |
Benno Schulenberg |
Subject: |
[PATCH 2/3 V14] bindings: hard-bind the bookmark functions to M-Ins and M-PgUp/M-PgDn |
Date: |
Sun, 5 Apr 2020 19:37:10 +0200 |
From: Marco Diego Aurélio Mesquita <address@hidden>
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 <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 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 0d1b7606..1c7f8102 100644
--- a/src/nano.c
+++ b/src/nano.c
@@ -2405,6 +2405,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 ec67a117..dda289f2 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 0506c132..0285207a 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) {
@@ -1108,6 +1123,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)
--
2.25.2