summaryrefslogtreecommitdiffstats
path: root/Completion/Base/_subscript
diff options
context:
space:
mode:
authorTanaka Akira <akr@users.sourceforge.net>1999-06-27 05:33:04 +0000
committerTanaka Akira <akr@users.sourceforge.net>1999-06-27 05:33:04 +0000
commit346825df86466cf151be61b9429ef2c1734e66ea (patch)
treebd3e1ccd947b47f974c62b4113c5276416de2c9f /Completion/Base/_subscript
parentzsh-3.1.5-pws-22 (diff)
downloadzsh-346825df86466cf151be61b9429ef2c1734e66ea.tar
zsh-346825df86466cf151be61b9429ef2c1734e66ea.tar.gz
zsh-346825df86466cf151be61b9429ef2c1734e66ea.tar.bz2
zsh-346825df86466cf151be61b9429ef2c1734e66ea.tar.lz
zsh-346825df86466cf151be61b9429ef2c1734e66ea.tar.xz
zsh-346825df86466cf151be61b9429ef2c1734e66ea.tar.zst
zsh-346825df86466cf151be61b9429ef2c1734e66ea.zip
zsh-3.1.5-pws-24zsh-3.1.5-pws-24
Diffstat (limited to 'Completion/Base/_subscript')
-rw-r--r--Completion/Base/_subscript22
1 files changed, 21 insertions, 1 deletions
diff --git a/Completion/Base/_subscript b/Completion/Base/_subscript
index abaabec8c..66d88b00c 100644
--- a/Completion/Base/_subscript
+++ b/Completion/Base/_subscript
@@ -1,7 +1,27 @@
#compdef -subscript-
if [[ ${(Pt)${compstate[parameter]}} = assoc* ]]; then
- compgen -S ']' -k "( ${(kP)${compstate[parameter]}} )"
+ if [[ "$RBUFFER" = \]* ]]; then
+ compadd -S '' - "${(@kP)${compstate[parameter]}}"
+ else
+ compadd -S ']' - "${(@kP)${compstate[parameter]}}"
+ fi
+elif [[ ${(Pt)${compstate[parameter]}} = array* ]]; then
+ local list i j
+
+ ind=( {1..${#${(P)${compstate[parameter]}}}} )
+ list=()
+ for i in "$ind[@]"; do
+ [[ "$i" = ${PREFIX}*${SUFFIX} ]] &&
+ list=( "$list[@]"
+ "${(r:4:: ::):)i} $(print -D ${(P)${compstate[parameter]}[$i]})" )
+ done
+
+ if [[ "$RBUFFER" = \]* ]]; then
+ compadd -S '' -V default -y list - "$ind[@]"
+ else
+ compadd -S ']' -V default -y list - "$ind[@]"
+ fi
else
_compalso -math-
fi