Skip to content

Commit

Permalink
py/repl: Filter private methods from tab completion.
Browse files Browse the repository at this point in the history
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.<tab> will no longer complete/list anything beginning with "_".

Originally at adafruit#1850

Signed-off-by: Kathryn Lingel <kathryn@lingel.net>
  • Loading branch information
katlings authored and dpgeorge committed May 2, 2021
1 parent aa061ae commit 1f1a54d
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 5 deletions.
5 changes: 5 additions & 0 deletions py/repl.c
Expand Up @@ -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) {
Expand Down
10 changes: 5 additions & 5 deletions tests/unix/extra_coverage.py.exp
Expand Up @@ -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)
Expand Down

0 comments on commit 1f1a54d

Please sign in to comment.