From 7c670f1e6a0e154f0b1a2d4b6eed0e71c9404b56 Mon Sep 17 00:00:00 2001 From: Tanaka Akira Date: Sat, 3 Jul 1999 13:16:46 +0000 Subject: zsh-3.1.5-pws-25 --- Completion/Base/_first | 72 +++++++++++++++++++++++++++++++++++++++------- Completion/Base/_subscript | 19 ++++++------ 2 files changed, 73 insertions(+), 18 deletions(-) (limited to 'Completion/Base') diff --git a/Completion/Base/_first b/Completion/Base/_first index 655e3569f..8b4da019d 100644 --- a/Completion/Base/_first +++ b/Completion/Base/_first @@ -1,11 +1,63 @@ -#compdef -subscript- +#compdef -first- -if [[ ${(Pt)${compstate[parameter]}} = assoc* ]]; then - if [[ "$RBUFFER" = \]* ]]; then - compadd -S '' - "${(@kP)${compstate[parameter]}}" - else - compadd -S ']' - "${(@kP)${compstate[parameter]}}" - fi -else - _compalso -math- -fi +# This function is called at the very beginning before any other +# function for a specific context. +# +# This just gives some examples of things you might want to do here. +# +# +# If you use the vared builtin and want completion in there to act the +# way completion on the right hand side of assignments is done, add +# (or un-comment) this code: +# +# if [[ -n $compstate[vared] ]]; then +# if [[ $compstate[vared] = *\[* ]]; then +# # vared on an array-element +# compstate[parameter]=${compstate[vared]%%\[*} +# compstate[context]=value +# else +# # vared on a parameter, let's see if it is an array +# compstate[parameter]=$compstate[vared] +# if [[ ${(tP)compstate[vared]} = *(array|assoc)* ]]; then +# compstate[context]=array_value +# else +# compstate[context]=value +# fi +# fi +# return +# fi +# +# +# +# Other things you can do here is to complete different things if the +# word on the line matches a certain pattern. This example allows +# completion of words from the history by adding two commas at the end +# and hitting TAB. +# +# if [[ "$PREFIX" = *,, ]]; then +# local max i=1 +# +# PREFIX="$PREFIX[1,-2]" +# # If a numeric prefix is given, we use it as the number of +# # lines (multiplied by ten below) in the history to search. +# if [[ ${NUMERIC:-1} -gt 1 ]]; then +# max=$NUMERIC +# unset NUMERIC +# else +# # The default is to search the last 100 lines. +# max=10 +# fi +# # We first search in the last ten lines, then in the last +# # twenty lines, and so on... +# while [[ i -le max ]]; do +# if compgen -X "%Bhistory ($n):%b" -Q -H $(( i*10 )) ''; then +# # We have found at least one matching word, so we switch +# # on menu-completion and make sure that no other +# # completion function is called by setting _comp_skip. +# compstate[insert]=menu +# _comp_skip=1 +# return +# fi +# (( i++ )) +# done +# fi diff --git a/Completion/Base/_subscript b/Completion/Base/_subscript index 00b2b6506..be5f08f62 100644 --- a/Completion/Base/_subscript +++ b/Completion/Base/_subscript @@ -1,6 +1,9 @@ #compdef -subscript- -if [[ ${(Pt)${compstate[parameter]}} = assoc* ]]; then +if [[ "$PREFIX" = :* ]]; then + compadd -p: -S ':]' alnum alpha blank cntrl digit graph lower print punct \ + space upper xdigit +elif [[ ${(Pt)${compstate[parameter]}} = assoc* ]]; then if [[ "$RBUFFER" = \]* ]]; then compadd -S '' - "${(@kP)${compstate[parameter]}}" else @@ -13,15 +16,15 @@ elif [[ ${(Pt)${compstate[parameter]}} = array* ]]; then list=() for i in "$ind[@]"; do [[ "$i" = ${PREFIX}*${SUFFIX} ]] && - list=( "$list[@]" "${(r:4:: ::):)i} ${(P)${compstate[parameter]}[$i]} -) + list=( "$list[@]" + "${(r:4:: ::):)i} $(print -D ${(P)${compstate[parameter]}[$i]})" ) done - if [[ "$RBUFFER" = \]* ]]; then - compadd -S '' -y list - "$ind[@]" - else - compadd -S ']' -y list - "$ind[@]" - fi + if [[ "$RBUFFER" = \]* ]]; then + compadd -S '' -V default -y list - "$ind[@]" + else + compadd -S ']' -V default -y list - "$ind[@]" + fi else _compalso -math- fi -- cgit 1.4.1