Repository navigation
bash: restore native variable completion fallback - #260
Open
kudala-bharani wants to merge 2 commits into
Open
kudala-bharani wants to merge 2 commits into
kudala-bharani wants to merge 2 commits into
Conversation
Author
|
Found the Linux failure: filename mode stayed enabled when no files matched, which made Bash escape |
This branch has not been deployed
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.
Fixes #172.
Once shtab's completion function is registered, Bash stops completing variable names such as
$BASH_V. Adding-o bashdefaultlets Bash try its native completion when the generated function has no matches. This handles$VAR,${VAR, and double-quoted forms without duplicating Bash's variable parsing. It also restores native tilde-user completion, but doesn't enable the separate filename fallback (-o default).When file completion produces no candidates, the generated function also clears
filenamesmode before native fallback. Otherwise Bash 4+ escapes$inside quoted variable names. Filename handling stays enabled when there are actual file candidates.The tests press Tab in a real Bash session. The 24 variable cases cover positional arguments,
--pid, file and directory options,--, and redirection. There's also a check that an ordinary filename prefix isn't completed as an option value. Removing the filename-mode reset reproduces six quoted-variable failures on Bash 5.2.Validation:
pre-commit run --all-files: passed.The generated Bash examples intentionally change to include the native fallback and filename-mode guard; other shell generators are unchanged.