mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-09-04 22:51:42 +02:00
32435: improved quoting for ignore-line completion style
This commit is contained in:
parent
4149d0ab3e
commit
7d7242405a
3 changed files with 18 additions and 14 deletions
|
@ -1,3 +1,9 @@
|
|||
2014-02-26 Peter Stephenson <p.w.stephenson@ntlworld.com>
|
||||
|
||||
* Jun T: Completion/Base/Core/_description,
|
||||
Completion/Unix/Command/_rm: improved quoting for ignore-line
|
||||
style.
|
||||
|
||||
2014-02-24 Oliver Kiddle <opk@zsh.org>
|
||||
|
||||
* unposted: Doc/Zsh/compsys.yo: fix typo
|
||||
|
|
|
@ -47,17 +47,19 @@ if [[ -z "$_comp_no_ignore" ]]; then
|
|||
zstyle -a ":completion:${curcontext}:$1" ignored-patterns _comp_ignore ||
|
||||
_comp_ignore=()
|
||||
|
||||
zstyle -s ":completion:${curcontext}:$1" ignore-line hidden &&
|
||||
if zstyle -s ":completion:${curcontext}:$1" ignore-line hidden; then
|
||||
local -a qwords
|
||||
qwords=( ${words//(#m)[\[\]()\\*?#<>~\^\|]/\\$MATCH} )
|
||||
case "$hidden" in
|
||||
true|yes|on|1) _comp_ignore=( "$_comp_ignore[@]" ${(q)"${words[@]}"} );;
|
||||
current) _comp_ignore=( "$_comp_ignore[@]" "${(q)words[CURRENT]}" );;
|
||||
true|yes|on|1) _comp_ignore+=( $qwords );;
|
||||
current) _comp_ignore+=( $qwords[CURRENT] );;
|
||||
current-shown)
|
||||
[[ "$compstate[old_list]" = *shown* ]] &&
|
||||
_comp_ignore=( "$_comp_ignore[@]" "${(q)words[CURRENT]}" );;
|
||||
other) _comp_ignore=( "$_comp_ignore[@]"
|
||||
"${(@q)words[1,CURRENT-1]}"
|
||||
"${(@q)words[CURRENT+1,-1]}" );;
|
||||
_comp_ignore+=( $qwords[CURRENT] );;
|
||||
other) _comp_ignore+=( $qwords[1,CURRENT-1]
|
||||
$qwords[CURRENT+1,-1] );;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Ensure the ignore option is first so we can override it
|
||||
# for fake-always.
|
||||
|
|
|
@ -32,13 +32,9 @@ _arguments -C $opts \
|
|||
|
||||
case $state in
|
||||
(file)
|
||||
declare -a ignored
|
||||
ignored=()
|
||||
((CURRENT > 1)) &&
|
||||
ignored+=(${line[1,CURRENT-1]//(#m)[\[\]()\\*?#<>~\^]/\\$MATCH})
|
||||
((CURRENT < $#line)) &&
|
||||
ignored+=(${line[CURRENT+1,-1]//(#m)[\[\]()\\*?#<>~\^]/\\$MATCH})
|
||||
_files -F ignored && ret=0
|
||||
line[CURRENT]=()
|
||||
line=( ${line//(#m)[\[\]()\\*?#<>~\^\|]/\\$MATCH} )
|
||||
_files -F line && ret=0
|
||||
;;
|
||||
esac
|
||||
|
||||
|
|
Loading…
Reference in a new issue