diff options
Diffstat (limited to 'Completion/X/_xt_arguments')
-rw-r--r-- | Completion/X/_xt_arguments | 72 |
1 files changed, 49 insertions, 23 deletions
diff --git a/Completion/X/_xt_arguments b/Completion/X/_xt_arguments index 02f11e226..e8dafc60c 100644 --- a/Completion/X/_xt_arguments +++ b/Completion/X/_xt_arguments @@ -20,26 +20,52 @@ # cf. XrmParseCommand(3X11), X11R6.4/xc/lib/Xt/Initialize.c, X(5) -_arguments \ - '+rv' '-rv' '-reverse' \ - '+synchronous' '-synchronous' \ - '-background:background color:_colors' \ - '-background:background color:_colors' \ - '-bd:border color:_colors' \ - '-bg:background color:_colors' \ - '-bordercolor:border color:_colors' \ - '-borderwidth:border width:_x_borderwidth' \ - '-bw:border width:_x_borderwidth' \ - '-display:display:_x_display' \ - '-fg:foreground color:_colors' \ - '-fn:font:_x_font' \ - '-foreground:foreground color:_colors' \ - '-geometry:geometry:_x_geometry' \ - '-iconic' \ - '-name:name:_x_name' \ - '-selectionTimeout:selection timeout (milliseconds):_x_selection_timeout' \ - '-title:title:_x_title' \ - '-xnllanguage:locale:_x_locale' \ - '-xrm:resource:_x_resource' \ - '-xtsessionID:session ID:_xt_session_id' \ - "$@" +local ret long xargs opts rawret nm="$compstate[nmatches]" + +xargs=( + -+{rv,synchronous} + -{reverse,iconic} + '-background:background color:_x_color' + '-bd:border color:_x_color' + '-bg:background color:_x_color' + '-bordercolor:border color:_x_color' + '-borderwidth:border width:_x_borderwidth' + '-bw:border width:_x_borderwidth' + '-display:display:_x_display' + '-fg:foreground color:_x_color' + '-font:font:_x_font' + '-fn:font:_x_font' + '-foreground:foreground color:_x_color' + '-geometry:geometry:_x_geometry' + '-name:name:_x_name' + '-selectionTimeout:selection timeout (milliseconds):_x_selection_timeout' + '-title:title:_x_title' + '-xnllanguage:locale:_x_locale' + '*-xrm:resource:_x_resource' + '-xtsessionID:session ID:_xt_session_id' +) + +long=$argv[(I)--] +if (( long )); then + argv[long]=( "$xargs[@]" -- ) +else + set -- "$@" "$xargs[@]" +fi + +opts=() +while [[ $1 = -(O*|[CR]) ]]; do + opts=($opts $1) + [[ $1 = -R ]] && rawret=yes + shift +done + +_arguments -R "$opts[@]" "$@" + +ret=$? + +if [[ "$ret" = 300 ]]; then + compstate[restore]='' + [[ -z $rawret ]] && ret=$(( nm == $compstate[nmatches] )) +fi + +return ret |