mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-04-19 16:44:02 +02:00
51348: Fix subscript completion bugs inside ~[...]
When completing inside ~[...] (_with_ the trailing `]` present), the following bugs occured: - Subscript completion was skipped entirely when there were one or more slashes ('/') in the subscript, which is incorrect, since slashes are allowed there. - Instead of going through _complete, $_comps[-subscript-] was called immediately, causing _setup to be skipped. - If succesful, _main_complete was exited right after, causing menu-style, comppostfuncs and other essential completion features to be skipped.
This commit is contained in:
parent
9a5f213573
commit
caa1c38c6f
|
@ -1,5 +1,9 @@
|
|||
2023-05-21 Oliver Kiddle <opk@zsh.org>
|
||||
|
||||
* Marlon Richert: 51682: Completion/Base/Core/_main_complete,
|
||||
Test/Y01completion.ztst: Fix subscript completion bugs
|
||||
inside ~[...]
|
||||
|
||||
* Marlon Richert: 51759: Completion/Zsh/Type/_command_names:
|
||||
Show alias values in command completions
|
||||
|
||||
|
|
|
@ -93,19 +93,15 @@ fi
|
|||
if [[ -z "$compstate[quote]" ]]; then
|
||||
if [[ -o equals ]] && compset -P 1 '='; then
|
||||
compstate[context]=equal
|
||||
elif [[ "$PREFIX" != */* && "$PREFIX[1]" = '~' ]]; then
|
||||
if [[ "$PREFIX" = '~['[^\]]# ]]; then
|
||||
# Inside ~[...] should be treated as a subscript.
|
||||
compset -p 2
|
||||
# To be consistent, we ignore all but the contents of the square
|
||||
# brackets.
|
||||
compset -S '\]*'
|
||||
compstate[context]=subscript
|
||||
[[ -n $_comps[-subscript-] ]] && $_comps[-subscript-] && return
|
||||
else
|
||||
compset -p 1
|
||||
compstate[context]=tilde
|
||||
fi
|
||||
elif [[ "$PREFIX" = \~\[[^]]# ]]; then
|
||||
# Inside ~[...] should be treated as a subscript.
|
||||
compset -p 2
|
||||
# To be consistent, we ignore all but the contents of the square brackets.
|
||||
compset -S '\]*'
|
||||
compstate[context]=subscript
|
||||
elif [[ "$PREFIX" = \~[^/]# ]]; then
|
||||
compset -p 1
|
||||
compstate[context]=tilde
|
||||
fi
|
||||
fi
|
||||
|
||||
|
|
|
@ -75,17 +75,27 @@
|
|||
>line: {: ~user2}{}
|
||||
>line: {: ~user1}{}
|
||||
|
||||
comptesteval 'zsh_directory_name() { compadd "$expl[@]" -- name1 name2 }'
|
||||
comptesteval 'zsh_directory_name() { compadd "$expl[@]" -- name/1 name2 }'
|
||||
comptest $': ~[\t\t\t\t'
|
||||
0:dynamic directory names after ~[
|
||||
>line: {: ~[name}{}
|
||||
>line: {: ~[name}{}
|
||||
>DESCRIPTION:{dynamically named directory}
|
||||
>NO:{name1}
|
||||
>NO:{name/1}
|
||||
>NO:{name2}
|
||||
>line: {: ~[name1]}{}
|
||||
>line: {: ~[name/1]}{}
|
||||
>line: {: ~[name2]}{}
|
||||
|
||||
comptest $': ~[]\C-b\t\t\t\t'
|
||||
0:dynamic directory names inside ~[...]
|
||||
>line: {: ~[name}{]}
|
||||
>line: {: ~[name}{]}
|
||||
>DESCRIPTION:{dynamically named directory}
|
||||
>NO:{name/1}
|
||||
>NO:{name2}
|
||||
>line: {: ~[name/1}{]}
|
||||
>line: {: ~[name2}{]}
|
||||
|
||||
comptest $'echo ;:\C-b\C-b\t'
|
||||
0:directories and files before separator
|
||||
>line: {echo }{;:}
|
||||
|
|
Loading…
Reference in New Issue