diff --git a/src/nano.c b/src/nano.c index 678dc987d4e0a98ae7cc2d9cb76eb7766d818bb1..53adf1b399e93546af9d6b8142d8b044b53e5b84 100644 --- a/src/nano.c +++ b/src/nano.c @@ -1636,6 +1636,14 @@ bool wanted_to_move(void (*func)(void)) func == to_first_line || func == to_last_line; } +/* Return TRUE when the given shortcut is valid in view mode. */ +bool okay_for_view(const sc *shortcut) +{ + const subnfunc *func = sctofunc(shortcut); + + return (func && func->viewok); +} + /* Read in a keystroke. Act on the keystroke if it is a shortcut or a toggle; * otherwise, insert it into the edit buffer. If allow_funcs is FALSE, don't * do anything with the keystroke -- just return it. */ @@ -1727,12 +1735,9 @@ int do_input(bool allow_funcs) if (shortcut == NULL) pletion_line = NULL; else { - if (ISSET(VIEW_MODE)) { - const subnfunc *f = sctofunc(shortcut); - if (f && !f->viewok) { - print_view_warning(); - return ERR; - } + if (ISSET(VIEW_MODE) && !okay_for_view(shortcut)) { + print_view_warning(); + return ERR; } /* If the function associated with this shortcut is @@ -1804,11 +1809,8 @@ int do_input(bool allow_funcs) wrap_reset(); #endif #ifdef ENABLE_COLOR - if (!refresh_needed) { - const subnfunc *f = sctofunc(shortcut); - if (f && !f->viewok) - check_the_multis(openfile->current); - } + if (!refresh_needed && !okay_for_view(shortcut)) + check_the_multis(openfile->current); #endif if (!refresh_needed && (shortcut->func == do_delete || shortcut->func == do_backspace)) diff --git a/src/prompt.c b/src/prompt.c index 2c612c6e5043daa854e16674760d8a7f1e8aa514..f4585eb20c503fbd12b2f09add1d4805d829eecc 100644 --- a/src/prompt.c +++ b/src/prompt.c @@ -171,7 +171,7 @@ int do_statusbar_input(bool *finished) /* Handle any other shortcut in the current menu, setting finished * to TRUE to indicate that we're done after running or trying to * run its associated function. */ - if (!ISSET(VIEW_MODE) || sctofunc(shortcut)->viewok) + if (!ISSET(VIEW_MODE) || okay_for_view(shortcut)) shortcut->func(); *finished = TRUE; } diff --git a/src/proto.h b/src/proto.h index 9b151798ce4eef04295fd5c151d989517d2b0bdc..d131f995b94515e59a8c2f2135c86dec090e437e 100644 --- a/src/proto.h +++ b/src/proto.h @@ -439,6 +439,7 @@ void disable_flow_control(void); void enable_flow_control(void); void terminal_init(void); void unbound_key(int code); +bool okay_for_view(const sc *shortcut); int do_input(bool allow_funcs); void do_output(char *output, size_t output_len, bool allow_cntrls);