From: David Lawrence Ramsey Date: Fri, 28 Apr 2006 19:27:41 +0000 (+0000) Subject: handle NANO_CONTROL_8 even better by doing it in parse_kbinput() X-Git-Tag: v1.3.12~228 X-Git-Url: https://git.wh0rd.org/?a=commitdiff_plain;h=5f274c4b49313d8d3be7662eccf786020f795ca0;p=nano.git handle NANO_CONTROL_8 even better by doing it in parse_kbinput() git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3452 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- diff --git a/ChangeLog b/ChangeLog index 2eaf100f..9e7f2a95 100644 --- a/ChangeLog +++ b/ChangeLog @@ -133,16 +133,10 @@ CVS code - - nano.c: renumber() - Remove invalid assert. (DLR, found by Filipe Moreira) - do_input() - - If we get NANO_CONTROL_8, handle it instead of ignoring it, - for consistency. (DLR) - nano.h: - Reorder the toggle #defines to match their corresponding order in toggle_init(). (DLR) - prompt.c: - do_statusbar_input() - - If we get NANO_CONTROL_8, handle it instead of ignoring it, - for consistency. (DLR) get_prompt_string() - Include the handling of the help key even when help is disabled, so that we aren't erroneously kicked out of the @@ -174,6 +168,9 @@ CVS code - - Change all rcfile error messages to refer to commands instead of directives, for consistency with nanorc.5. (DLR) - winio.c: + parse_kbinput() + - If we get NANO_CONTROL_8, properly handle it in all cases. + (DLR) get_control_kbinput() - Add Ctrl-/ as an alias for Ctrl-_. (DLR, found by Benno Schulenberg) diff --git a/src/nano.c b/src/nano.c index a8dc9a04..02c4c2bf 100644 --- a/src/nano.c +++ b/src/nano.c @@ -1281,20 +1281,15 @@ int do_input(bool *meta_key, bool *func_key, bool *s_or_t, bool /* Read in a character. */ input = get_kbinput(edit, meta_key, func_key); - if (allow_funcs) { #ifndef DISABLE_MOUSE - /* If we got a mouse click and it was on a shortcut, read in the - * shortcut character. */ - if (*func_key == TRUE && input == KEY_MOUSE) - input = do_mouse() ? get_kbinput(edit, meta_key, func_key) : + if (allow_funcs) { + /* If we got a mouse click and it was on a shortcut, read in the + * shortcut character. */ + if (allow_funcs && *func_key == TRUE && input == KEY_MOUSE) + input = do_mouse() ? get_kbinput(edit, meta_key, func_key) : ERR; - else +} #endif - if (input == NANO_CONTROL_8 && *meta_key == FALSE && - *func_key == FALSE) - input = ISSET(REBIND_DELETE) ? NANO_BACKSPACE_KEY : - NANO_DELETE_KEY; - } /* Check for a shortcut in the main list. */ s = get_shortcut(main_list, &input, meta_key, func_key); diff --git a/src/prompt.c b/src/prompt.c index c153d4b5..15107134 100644 --- a/src/prompt.c +++ b/src/prompt.c @@ -68,20 +68,15 @@ int do_statusbar_input(bool *meta_key, bool *func_key, bool *s_or_t, /* Read in a character. */ input = get_kbinput(bottomwin, meta_key, func_key); - if (allow_funcs) { #ifndef DISABLE_MOUSE - /* If we got a mouse click and it was on a shortcut, read in the - * shortcut character. */ - if (*func_key == TRUE && input == KEY_MOUSE) - input = do_statusbar_mouse() ? get_kbinput(bottomwin, - meta_key, func_key) : ERR; - else + if (allow_funcs) { + /* If we got a mouse click and it was on a shortcut, read in the + * shortcut character. */ + if (allow_funcs && *func_key == TRUE && input == KEY_MOUSE) + input = do_statusbar_mouse() ? get_kbinput(bottomwin, meta_key, + func_key) : ERR; +} #endif - if (input == NANO_CONTROL_8 && *meta_key == FALSE && - *func_key == FALSE) - input = ISSET(REBIND_DELETE) ? NANO_BACKSPACE_KEY : - NANO_DELETE_KEY; - } /* Check for a shortcut in the current list. */ s = get_shortcut(currshortcut, &input, meta_key, func_key); diff --git a/src/winio.c b/src/winio.c index fe1b63f5..a627d104 100644 --- a/src/winio.c +++ b/src/winio.c @@ -402,10 +402,6 @@ int parse_kbinput(WINDOW *win, bool *meta_key, bool *func_key switch (escapes) { case 0: switch (*kbinput) { - case NANO_CONTROL_8: - retval = ISSET(REBIND_DELETE) ? - NANO_DELETE_KEY : NANO_BACKSPACE_KEY; - break; case KEY_DOWN: retval = NANO_NEXTLINE_KEY; break; @@ -647,10 +643,18 @@ int parse_kbinput(WINDOW *win, bool *meta_key, bool *func_key } } - /* If we have a result and it's an extended keypad value (i.e, a - * value outside of byte range), set func_key to TRUE. */ - if (retval != ERR) + if (retval != ERR) { + /* If our result is NANO_CONTROL_8, translate it to either + * Backspace or Delete, depending on whether REBIND_DELETE is + * TRUE or FALSE. */ + if (retval == NANO_CONTROL_8) + retval = ISSET(REBIND_DELETE) ? NANO_BACKSPACE_KEY : + NANO_DELETE_KEY; + + /* If our result is an extended keypad value (i.e, a value + * outside of byte range), set func_key to TRUE. */ *func_key = !is_byte(retval); + } #ifdef DEBUG fprintf(stderr, "parse_kbinput(): kbinput = %d, meta_key = %d, func_key = %d, escapes = %d, byte_digits = %d, retval = %d\n", *kbinput, (int)*meta_key, (int)*func_key, escapes, byte_digits, retval);