summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--Completion/Base/Completer/_approximate7
-rw-r--r--Completion/Base/Utility/_describe8
-rw-r--r--Completion/Unix/Command/_dd30
4 files changed, 39 insertions, 14 deletions
diff --git a/ChangeLog b/ChangeLog
index 091f1a0fa..a86f71588 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2001-08-07 Sven Wischnowsky <wischnow@zsh.org>
+
+ * 15588: Completion/Base/Completer/_approximate,
+ Completion/Base/Utility/_describe, Completion/Unix/Command/_dd:
+ make _dd not use already used specs; fix for selecting stuff to
+ complete in _describe; fix for correction and _describe with
+ grouped lists
+
2001-08-07 Peter Stephenson <pws@csr.com>
* 15586: Src/subst.c, Doc/Zsh/expn.yo: remove =alias expansion,
diff --git a/Completion/Base/Completer/_approximate b/Completion/Base/Completer/_approximate
index 70c2c926f..a442c9a97 100644
--- a/Completion/Base/Completer/_approximate
+++ b/Completion/Base/Completer/_approximate
@@ -10,7 +10,7 @@
[[ _matcher_num -gt 1 || "${#:-$PREFIX$SUFFIX}" -le 1 ]] && return 1
-local _comp_correct _correct_expl comax cfgacc match
+local _comp_correct _correct_expl _correct_group comax cfgacc match
local oldcontext="${curcontext}" opm="$compstate[pattern_match]"
if [[ "$1" = -a* ]]; then
@@ -58,6 +58,9 @@ if (( ! $+functions[compadd] )); then
# else
PREFIX="(#a${_comp_correct})$PREFIX"
# fi
+
+ (( $_correct_group )) && _correct_expl[_correct_group]=${argv[(R)-*[JV]]}
+
builtin compadd "$_correct_expl[@]" "$@"
}
trap 'unfunction compadd' EXIT INT
@@ -73,6 +76,8 @@ while [[ _comp_correct -le comax ]]; do
_description corrections _correct_expl corrections \
"e:$_comp_correct" "o:$PREFIX$SUFFIX"
+ _correct_group="$_correct_expl[(I)-*[JV]]"
+
if _complete; then
if zstyle -t ":completion:${curcontext}:" insert-unambiguous &&
[[ "${#compstate[unambiguous]}" -ge "${#:-$PREFIX$SUFFIX}" ]]; then
diff --git a/Completion/Base/Utility/_describe b/Completion/Base/Utility/_describe
index cd891368a..9ad04c224 100644
--- a/Completion/Base/Utility/_describe
+++ b/Completion/Base/Utility/_describe
@@ -78,9 +78,13 @@ while _tags; do
fi
if [[ -n $_mats ]]; then
- compadd "$_opts[@]" "${(@)_expl:/-J/-2V}" -O $_strs -D $_mats -s $_strs
+ compadd "$_opts[@]" "${(@)_expl:/-J/-2V}" -D $_strs - \
+ "${(@M)${(@P)_strs}##([^:\\]|\\?)##}"
+ compadd "$_opts[@]" "${(@)_expl:/-J/-2V}" -D $_mats - \
+ "${(@M)${(@P)_strs}##([^:\\]|\\?)##}"
else
- compadd "$_opts[@]" "${(@)_expl:/-J/-2V}" -O $_strs -a $_strs
+ compadd "$_opts[@]" "${(@)_expl:/-J/-2V}" -D $_strs - \
+ "${(@M)${(@P)_strs}##([^:\\]|\\?)##}"
fi
done
set - "$_argv[@]"
diff --git a/Completion/Unix/Command/_dd b/Completion/Unix/Command/_dd
index 27cff1198..64b8275e8 100644
--- a/Completion/Unix/Command/_dd
+++ b/Completion/Unix/Command/_dd
@@ -1,14 +1,22 @@
#compdef dd
-_values -S '=' 'option' \
- 'if[specify input file]:input file:_tilde_files' \
- 'of[specify output file]:output file:_tilde_files' \
- 'ibs[input block size]:block size (bytes)' \
- 'obs[output block size]:block size (bytes)' \
- 'bs[block size]:block size (bytes)' \
- 'cbs[conversion buffer size]:buffer size (bytes)' \
- 'skip[input blocks initially skipped]:blocks' \
- 'seek[output blocks initially skipped]:blocks' \
- 'files[specify number of input files to copy and concatenate]:number of files' \
- 'count[number of input blocks to copy]:blocks' \
+local opts
+
+opts=(
+ 'if[specify input file]:input file:_tilde_files'
+ 'of[specify output file]:output file:_tilde_files'
+ 'ibs[input block size]:block size (bytes)'
+ 'obs[output block size]:block size (bytes)'
+ 'bs[block size]:block size (bytes)'
+ 'cbs[conversion buffer size]:buffer size (bytes)'
+ 'skip[input blocks initially skipped]:blocks'
+ 'seek[output blocks initially skipped]:blocks'
+ 'files[specify number of input files to copy and concatenate]:number of files'
+ 'count[number of input blocks to copy]:blocks'
'conv[specify conversions to apply]:conversion:_values -s , "conversion" ascii ebcdic ibm block unblock lcase ucase swab noerror sync'
+)
+
+[[ "$PREFIX$SUFFIX" != *\=* ]] &&
+ opts=( "${(@)opts:#(${(j:|:)~words[2,-1]%%\=*})\[*}" )
+
+_values -S '=' 'option' "$opts[@]"