shared/readline: Make tab insert an indent when it follows whitespace.

Entering tab at the REPL will now make it insert an indent (4 spaces) in
the following cases:
- after any whitespace on a line
- at the start of a line that is not the first line

This changes the existing behaviour where a tab would insert an indent only
if there were no matches in the auto-complete search, and it was the start
of the line.  This means, if there were any symbols in the global
namespace, tab could never be used to indent.

Note that entering tab at the start of the first line will still do
auto-completion, but will now do nothing if there are no symbols in the
global namespace, which is more consistent than before.

Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
Damien George
2022-04-14 11:33:00 +10:00
parent caaff940a2
commit a8f23f6366
2 changed files with 17 additions and 5 deletions

View File

@@ -313,10 +313,7 @@ size_t mp_repl_autocomplete(const char *str, size_t len, const mp_print_t *print
return sizeof(import_str) - 1 - s_len;
}
}
if (q_first == 0) {
*compl_str = " ";
return s_len ? 0 : 4;
}
return 0;
}
// 1 match found, or multiple matches with a common prefix