From 7ca5977e29fdac169bb8b401426156ac831fb9e0 Mon Sep 17 00:00:00 2001 From: Paul Ackersviller Date: Mon, 19 Nov 2007 03:09:39 +0000 Subject: 23186: Merge new completion onto the 4.2 branch. --- Completion/Base/Utility/_regex_words | 43 ++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 Completion/Base/Utility/_regex_words (limited to 'Completion/Base') diff --git a/Completion/Base/Utility/_regex_words b/Completion/Base/Utility/_regex_words new file mode 100644 index 000000000..77ba197a4 --- /dev/null +++ b/Completion/Base/Utility/_regex_words @@ -0,0 +1,43 @@ +#autoload + +local opt OPTARG +local term=$'\0' + +while getopts "t:" opt; do + case $opt in + (t) + term=$OPTARG + ;; + + (*) + return 1 + ;; + esac +done +shift $(( OPTIND - 1 )) + +local tag=$1 +local desc=$2 +shift 2 + +reply=(\() + +integer i +local -a wds + +for (( i = 1; i <= $#; i++ )); do + wds=(${(s.:.)argv[i]}) + reply+=(/${wds[1]//\**/"[^$term]#"}"$term"/) + if [[ $term = $'\0' ]]; then + reply+=(":${tag}:${desc}:(( ${wds[1]//\*}:${wds[2]//(#m)[: \(\)]/\\$MATCH} ))") + else + reply+=(":${tag}:${desc}:_values -s ${(q)term} ${(q)desc} \ +${(q)${${wds[1]//\*}//(#m)[:\[\]]/\\$MATCH}}\\[${(q)${wds[2]//(#m)[:\[\]]/\\$MATCH}}\\]") + fi + eval "reply+=($wds[3])" + if (( $i == $# )); then + reply+=(\)) + else + reply+=(\|) + fi +done -- cgit 1.4.1