Implement TreeMenu, an interactive REPL folding-tree menu #3
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.
This allows one to use a folding tree interactively. As described in the modified README (preview), on suitable Julia versions you can now display a folding tree, scroll through its options with the arrow keys, and collapse entire branches by toggling folding with the spacebar. Being able to implement this was my primary motivation for JuliaLang/julia#35915.
A couple of noteworthy points for any reviewers:
writeoption
(see the code) is of sufficiently general interest that I should put it inREPL.Terminals
aswritemaxchars
or something. I am not sure how often people want to restrict text output to a single line, but I've found that when coupled withprintstyled
coloration, the obvious solution of just truncating a string has significant problems: you can leave the terminal in an unexpected mode, or even truncate in the middle of an ANSI terminal escape sequence. In contrast, this implementation seems quite robust so far.