From 1f1a54d0b1371efcfec6ca1b03d21b07a908c70d Mon Sep 17 00:00:00 2001 From: Kathryn Lingel Date: Mon, 6 May 2019 12:16:29 -0700 Subject: [PATCH] py/repl: Filter private methods from tab completion. Anything beginning with "_" will now only be tab-completed if there is already a partial match for such an entry. In other words, entering foo. will no longer complete/list anything beginning with "_". Originally at adafruit#1850 Signed-off-by: Kathryn Lingel --- py/repl.c | 5 +++++ tests/unix/extra_coverage.py.exp | 10 +++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/py/repl.c b/py/repl.c index c758fc067b2e..3b1837031b59 100644 --- a/py/repl.c +++ b/py/repl.c @@ -197,6 +197,11 @@ size_t mp_repl_autocomplete(const char *str, size_t len, const mp_print_t *print for (qstr q = MP_QSTR_ + 1; q < nqstr; ++q) { size_t d_len; const char *d_str = (const char *)qstr_data(q, &d_len); + // special case; filter out words that begin with underscore + // unless there's already a partial match + if (s_len == 0 && d_str[0] == '_') { + continue; + } if (s_len <= d_len && strncmp(s_start, d_str, s_len) == 0) { mp_load_method_protected(obj, q, dest, true); if (dest[0] != MP_OBJ_NULL) { diff --git a/tests/unix/extra_coverage.py.exp b/tests/unix/extra_coverage.py.exp index d97de2c0ef8b..ab4d97774112 100644 --- a/tests/unix/extra_coverage.py.exp +++ b/tests/unix/extra_coverage.py.exp @@ -28,11 +28,11 @@ RuntimeError: # repl ame__ -__class__ __name__ argv atexit -byteorder exc_info exit getsizeof -implementation maxsize modules path -platform print_exception stderr -stdin stdout version version_info +argv atexit byteorder exc_info +exit getsizeof implementation maxsize +modules path platform print_exception +stderr stdin stdout version +version_info ementation # attrtuple (start=1, stop=2, step=3)