mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-02-24 11:51:19 +01:00
moved from Completion/X/_xt_arguments
This commit is contained in:
parent
8352dd4b62
commit
685b443c94
1 changed files with 71 additions and 0 deletions
71
Completion/X/Utility/_xt_arguments
Normal file
71
Completion/X/Utility/_xt_arguments
Normal file
|
@ -0,0 +1,71 @@
|
|||
#autoload
|
||||
|
||||
# How to convert XrmOptionDescRec:
|
||||
|
||||
# XrmOptionDescRec optionDescList[] = {
|
||||
# ...
|
||||
# {option, specifier, argKind, value},
|
||||
# ...
|
||||
# };
|
||||
|
||||
# argKind argument for _xt_arguments
|
||||
# XrmoptionNoArg option
|
||||
# XrmoptionIsArg option
|
||||
# XrmoptionStickyArg option-:message:action
|
||||
# XrmoptionSepArg option:message:action
|
||||
# XrmoptionResArg option:message:_x_resource
|
||||
# XrmoptionSkipArg option:message:action
|
||||
# XrmoptionSkipLine option:*::message:action
|
||||
# XrmoptionSkipNArgs option:message[1]:action[1]:...:message[value]:action[value]
|
||||
|
||||
# cf. XrmParseCommand(3X11), X11R6.4/xc/lib/Xt/Initialize.c, X(5)
|
||||
|
||||
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
|
Loading…
Reference in a new issue