nano

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

commit 1c528db8dace5c25f444392d52e455bd25954d23
parent 1c9ab8bf16476e1c2efd06039f3fb9f284b0c7b1
Author: Benno Schulenberg <bensberg@justemail.net>
Date:   Mon, 25 Jul 2016 09:33:43 +0200

tweaks: condense three asserts into a single one

Also, when a key string does not denote a Ctrl nor Meta nor Function key,
there is no point in assigning a keycode, because plain characters cannot
be used as a function shortcut.

Diffstat:
Msrc/global.c | 15++++++---------
1 file changed, 6 insertions(+), 9 deletions(-)

diff --git a/src/global.c b/src/global.c @@ -404,19 +404,16 @@ void assign_keyinfo(sc *s, const char *keystring) s->keystr = (char *)keystring; s->meta = (keystring[0] == 'M'); - if (s->keystr[0] == '^') { - assert(strlen(s->keystr) > 1); + assert(strlen(keystring) > 1 && (!s->meta || strlen(keystring) > 2)); + + if (keystring[0] == '^') s->keycode = s->keystr[1] - 64; - } else if (s->meta) { - assert(strlen(s->keystr) > 2); + else if (s->meta) s->keycode = tolower((int) s->keystr[2]); - } else if (s->keystr[0] == 'F') { - assert(strlen(s->keystr) > 1); + else if (keystring[0] == 'F') s->keycode = KEY_F0 + atoi(&s->keystr[1]); - } else /* RAWINPUT */ - s->keycode = (int) s->keystr[0]; - /* Override some keys which don't bind as easily as we'd like. */ + /* Catch the strings that don't bind as easily as we'd like. */ if (strcasecmp(s->keystr, "^Space") == 0) s->keycode = 0; else if (strcasecmp(s->keystr, "M-Space") == 0)