From 9e2a5668fd38db169d9d91b13089a99df4c9bd37 Mon Sep 17 00:00:00 2001 From: Ron Yorston Date: Tue, 21 Jan 2020 16:01:58 +0000 Subject: ash,hush: allow builtins to be tab-completed, closes 7532 function old new delta complete_cmd_dir_file 678 830 +152 get_builtin_name - 35 +35 optschanged 125 132 +7 hush_main 1069 1076 +7 save_command_ps_at_cur_history 76 78 +2 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 4/0 up/down: 203/0) Total: 203 bytes Signed-off-by: Ron Yorston Signed-off-by: Denys Vlasenko --- shell/hush.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'shell/hush.c') diff --git a/shell/hush.c b/shell/hush.c index 97202b953..6e44d4e11 100644 --- a/shell/hush.c +++ b/shell/hush.c @@ -7889,6 +7889,20 @@ static const struct built_in_command *find_builtin(const char *name) return find_builtin_helper(name, bltins2, &bltins2[ARRAY_SIZE(bltins2)]); } +#if EDITING_HAS_get_exe_name +static const char * FAST_FUNC get_builtin_name(int i) +{ + if (/*i >= 0 && */ i < ARRAY_SIZE(bltins1)) { + return bltins1[i].b_cmd; + } + i -= ARRAY_SIZE(bltins1); + if (i < ARRAY_SIZE(bltins2)) { + return bltins2[i].b_cmd; + } + return NULL; +} +#endif + static void remove_nested_vars(void) { struct variable *cur; @@ -10268,6 +10282,9 @@ int hush_main(int argc, char **argv) # if ENABLE_FEATURE_EDITING G.line_input_state = new_line_input_t(FOR_SHELL); +# if EDITING_HAS_get_exe_name + G.line_input_state->get_exe_name = get_builtin_name; +# endif # endif # if ENABLE_HUSH_SAVEHISTORY && MAX_HISTORY > 0 { -- cgit v1.2.3