|
31 | 31 | #include "py/runtime.h" |
32 | 32 | #include "py/gc.h" |
33 | 33 | #include "py/mphal.h" |
| 34 | +#include "py/repl.h" |
34 | 35 |
|
35 | 36 | #if MICROPY_PY_MICROPYTHON |
36 | 37 |
|
@@ -166,6 +167,18 @@ static mp_obj_t mp_micropython_schedule(mp_obj_t function, mp_obj_t arg) { |
166 | 167 | static MP_DEFINE_CONST_FUN_OBJ_2(mp_micropython_schedule_obj, mp_micropython_schedule); |
167 | 168 | #endif |
168 | 169 |
|
| 170 | +#if MICROPY_HELPER_REPL |
| 171 | +static mp_obj_t mp_micropython_repl_autocomplete(mp_obj_t cur_line) { |
| 172 | + const char *compl_str; |
| 173 | + size_t str_len = 0; |
| 174 | + const char *str = mp_obj_str_get_data(cur_line, &str_len); |
| 175 | + |
| 176 | + ssize_t compl_len = mp_repl_autocomplete(str, str_len, &mp_plat_print, &compl_str); |
| 177 | + return (compl_len <= 0) ? mp_const_none : mp_obj_new_str_via_qstr(compl_str, compl_len); |
| 178 | +} |
| 179 | +static MP_DEFINE_CONST_FUN_OBJ_1(mp_micropython_repl_autocomplete_obj, mp_micropython_repl_autocomplete); |
| 180 | +#endif |
| 181 | + |
169 | 182 | static const mp_rom_map_elem_t mp_module_micropython_globals_table[] = { |
170 | 183 | { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_micropython) }, |
171 | 184 | { MP_ROM_QSTR(MP_QSTR_const), MP_ROM_PTR(&mp_identity_obj) }, |
@@ -206,6 +219,9 @@ static const mp_rom_map_elem_t mp_module_micropython_globals_table[] = { |
206 | 219 | #if MICROPY_ENABLE_SCHEDULER |
207 | 220 | { MP_ROM_QSTR(MP_QSTR_schedule), MP_ROM_PTR(&mp_micropython_schedule_obj) }, |
208 | 221 | #endif |
| 222 | + #if MICROPY_HELPER_REPL |
| 223 | + { MP_ROM_QSTR(MP_QSTR_repl_autocomplete), MP_ROM_PTR(&mp_micropython_repl_autocomplete_obj) }, |
| 224 | + #endif |
209 | 225 | }; |
210 | 226 |
|
211 | 227 | static MP_DEFINE_CONST_DICT(mp_module_micropython_globals, mp_module_micropython_globals_table); |
|
0 commit comments