diff --git a/src/global.c b/src/global.c index 6209d119..7909bdbd 100644 --- a/src/global.c +++ b/src/global.c @@ -318,11 +318,6 @@ void flip_newbuffer(void) void discard_buffer(void) { } -#ifdef ENABLE_NANORC -void implant(void) -{ -} -#endif /* Add a function to the function list. */ void add_to_funcs(void (*func)(void), int menus, const char *desc, const char *help, @@ -1386,19 +1381,6 @@ void set_spell_shortcuts(void) } #endif /* ENABLE_COLOR && ENABLE_SPELLER */ -/* Execute the function of the given shortcut. */ -void execute(const sc *shortcut) -{ -#ifdef ENABLE_NANORC - if (shortcut->func == implant) - /* Insert the corresponding string into the keyboard buffer. */ - for (int i = strlen(shortcut->expansion); i > 0; i--) - put_back(shortcut->expansion[i - 1]); - else -#endif - shortcut->func(); -} - const subnfunc *sctofunc(const sc *s) { subnfunc *f = allfuncs; diff --git a/src/nano.c b/src/nano.c index fcb0c1ba..ebff9675 100644 --- a/src/nano.c +++ b/src/nano.c @@ -1728,8 +1728,8 @@ int do_input(bool allow_funcs) pletion_line = NULL; #endif #ifdef ENABLE_NANORC - if (shortcut->func == implant) { - execute(shortcut); + if (shortcut->func == (void *)implant) { + implant(shortcut->expansion); return 42; } #endif @@ -1756,7 +1756,7 @@ int do_input(bool allow_funcs) } #endif /* Execute the function of the shortcut. */ - execute(shortcut); + shortcut->func(); #ifndef NANO_TINY /* When the marked region changes without Shift being held, diff --git a/src/prompt.c b/src/prompt.c index edb23fec..e8fbbc0d 100644 --- a/src/prompt.c +++ b/src/prompt.c @@ -153,8 +153,8 @@ int do_statusbar_input(bool *finished) shortcut->func == do_backspace)) ; #ifdef ENABLE_NANORC - else if (shortcut->func == implant) - execute(shortcut); + else if (shortcut->func == (void *)implant) + implant(shortcut->expansion); #endif else if (shortcut->func == do_verbatim_input) do_statusbar_verbatim_input(); @@ -172,7 +172,7 @@ int do_statusbar_input(bool *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) - execute(shortcut); + shortcut->func(); *finished = TRUE; } } diff --git a/src/proto.h b/src/proto.h index 26f7d6d8..a19c5148 100644 --- a/src/proto.h +++ b/src/proto.h @@ -318,7 +318,6 @@ char *input_tab(char *buf, bool allow_files, size_t *place, /* Some functions in global.c. */ size_t length_of_list(int menu); -void implant(void); const sc *first_sc_for(int menu, void (*func)(void)); int the_code_for(void (*func)(void), int defaultval); functionptrtype func_from_key(int *kbinput); @@ -330,7 +329,6 @@ void shortcut_init(void); void set_lint_or_format_shortcuts(void); void set_spell_shortcuts(void); #endif -void execute(const sc *shortcut); const subnfunc *sctofunc(const sc *s); const char *flagtostr(int flag); sc *strtosc(const char *input); @@ -624,6 +622,9 @@ void run_macro(void); size_t get_key_buffer_len(void); void put_back(int keycode); void unget_kbinput(int kbinput, bool metakey); +#ifdef ENABLE_NANORC +void implant(const char *string); +#endif int get_kbinput(WINDOW *win, bool showcursor); int parse_kbinput(WINDOW *win); int arrow_from_abcd(int kbinput); diff --git a/src/rcfile.c b/src/rcfile.c index d064a267..362f3c8e 100644 --- a/src/rcfile.c +++ b/src/rcfile.c @@ -338,7 +338,7 @@ bool is_universal(void (*func)(void)) func == do_prev_word_void || func == do_next_word_void || #endif #ifdef ENABLE_NANORC - func == implant || + func == (void *)implant || #endif func == do_delete || func == do_backspace || func == do_cut_text_void || func == do_uncut_text || @@ -421,7 +421,7 @@ void parse_binding(char *ptr, bool dobind) * otherwise it is the name of a function. */ if (*funcptr == '"') { newsc = nmalloc(sizeof(sc)); - newsc->func = implant; + newsc->func = (void *)implant; newsc->expansion = mallocstrcpy(NULL, funcptr + 1); #ifndef NANO_TINY newsc->toggle = 0; diff --git a/src/winio.c b/src/winio.c index 9eab1756..a4803ce0 100644 --- a/src/winio.c +++ b/src/winio.c @@ -286,6 +286,15 @@ void unget_kbinput(int kbinput, bool metakey) put_back(ESC_CODE); } +#ifdef ENABLE_NANORC +/* Insert the given string into the keyboard buffer. */ +void implant(const char *string) +{ + for (int i = strlen(string); i > 0; i--) + put_back(string[i - 1]); +} +#endif + /* Try to read input_len codes from the keystroke buffer. If the * keystroke buffer is empty and win isn't NULL, try to read in more * codes from win and add them to the keystroke buffer before doing