aiorepl: Add tab completion support.#1081
Open
andrewleech wants to merge 1 commit intomicropython:masterfrom
Open
aiorepl: Add tab completion support.#1081andrewleech wants to merge 1 commit intomicropython:masterfrom
andrewleech wants to merge 1 commit intomicropython:masterfrom
Conversation
Use micropython.repl_autocomplete() to provide tab completion matching the native REPL behavior: single match inserts the completion, multiple matches prints candidates and redraws the prompt, tab after whitespace inserts 4 spaces for indentation. Falls back gracefully on ports without MICROPY_HELPER_REPL. Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds tab completion to aiorepl using the new
micropython.repl_autocomplete()function exposed in micropython/micropython#17011. Behaviour matches the native REPL: single match inserts the completion, multiple matches prints candidates and redraws the prompt, tab after whitespace inserts 4 spaces for indentation. Falls back gracefully on ports withoutMICROPY_HELPER_REPLby checking for the function withgetattrat startup.Also uses
micropython.stdio_mode_raw()when available (also from #17011) to switch terminal mode around code execution, matching how the native REPL toggles between raw mode for input and cooked mode during exec.Version bumped to 0.3.0.
Testing
test_autocomplete.py+.py.expadded covering the autocomplete API contract, multi-match via__main__globals injection, and the whitespace-before-cursor indentation logic.