summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSven Wischnowsky <wischnow@users.sourceforge.net>2001-04-02 11:34:11 +0000
committerSven Wischnowsky <wischnow@users.sourceforge.net>2001-04-02 11:34:11 +0000
commit673bb10096da977d172e82bbf383d5d3d02d7ca5 (patch)
tree34c7d0a9465ca3324d1699167b81785f91e3ecaf
parentcdcc5022e2b00b239a93c03d4657a26d12c0ca58 (diff)
downloadzsh-673bb10096da977d172e82bbf383d5d3d02d7ca5.tar.gz
zsh-673bb10096da977d172e82bbf383d5d3d02d7ca5.zip
moved from Completion/Builtins/_zstyle
-rw-r--r--Completion/Zsh/Command/_zstyle320
1 files changed, 320 insertions, 0 deletions
diff --git a/Completion/Zsh/Command/_zstyle b/Completion/Zsh/Command/_zstyle
new file mode 100644
index 000000000..003ec4d9f
--- /dev/null
+++ b/Completion/Zsh/Command/_zstyle
@@ -0,0 +1,320 @@
+#compdef zstyle
+
+local curcontext="$curcontext" state context ostate line expl ctop
+local nm=$compstate[nmatches] mesg
+typeset -A opt_args
+
+typeset -A styles
+# Assoc array of styles; the values give the possible top-level
+# contexts (currently c for completion, z for zftp or cz for both),
+# followed by a colon, followed by a state to enter, empty if none.
+styles=(
+ accept-exact c:bool
+ add-space c:bool
+ ambiguous c:bool
+ assign-list c:
+ auto-description c:
+ avoid-completer c:
+ break-keys c:
+ cache-path 'c:_wanted directories expl directory _path_files -/'
+ cache-policy c:_functions
+ call-command c:bool
+ command c:command
+ commands c:
+ complete c:bool
+ completer c:completer
+ completions c:bool
+ condition c:bool
+ cursor c:cursor
+ disable-stat c:bool
+ disabled c:bool
+ domains c:
+ expand c:
+ fake-files c:fake-files
+ fake-parameters c:fake-params
+ file-patterns c:filepat
+ file-sort c:fsort
+ force-list c:
+ format c:
+ glob c:bool
+ global c:bool
+ group-name c:
+ group-order c:tag
+ groups c:_groups
+ hidden c:bool
+ hosts c:_hosts
+ hosts-ports c:host-port
+ users-hosts-ports c:user-host-port
+ ignore-line c:ignline
+ ignore-parents c:ignorepar
+ ignored-patterns c:
+ insert-ids c:insert-ids
+ insert-tab c:bool
+ insert-unambiguous c:insunambig
+ keep-prefix c:keep-prefix
+ last-prompt c:bool
+ list c:listwhen
+ list-colors c:
+ list-packed c:bool
+ list-prompt c:
+ list-rows-first c:bool
+ list-suffixes c:bool
+ local c:
+ match-original c:match-orig
+ matcher c:
+ matcher-list c:
+ max-errors c:
+ menu c:boolauto
+ numbers c:bool
+ old-list c:bool
+ old-matches c:oldmatches
+ old-menu c:bool
+ original c:bool
+ packageset c:packageset
+ path 'c:_wanted directories expl directory _path_files -/'
+ ports c:_ports
+ prefix-hidden c:bool
+ prefix-needed c:bool
+ range c:
+ regular c:bool
+ remote-access c:bool
+ remove-all-dups c:bool
+ select-prompt c:
+ select-scroll c:
+ single-ignored c:single-ignored
+ sort c:bool
+ special-dirs c:sdirs
+ squeeze-slashes c:bool
+ stop c:stop
+ stop-keys c:
+ subst-globs-only c:bool
+ substitute c:bool
+ suffix c:bool
+ tag-order c:tag
+ try-to-use-pminst c:bool
+ use-cache c:bool
+ use-compctl c:urgh
+ users c:_users
+ users-hosts c:user-host
+ verbose c:bool
+ word c:bool
+
+ chpwd z:bool
+ progress z:progress
+ remote_glob z:bool
+ titlebar z:bool
+ update z:
+)
+
+local taglist
+taglist=(accounts all-files all-expansions arguments arrays
+association-keys bookmarks builtins characters colors commands corrections
+cursors cvs default descriptions devices directories directory-stack
+displays expansions extensions files fonts functions globbed-files groups
+history-words hosts indexes jobs keymaps keysyms local-directories
+libraries limits manuals maps messages modifiers modules my-accounts
+named-directories names nicknames options original other-accounts packages
+parameters path-directories paths pods ports prefixes processes
+processes-names ps regex sequences sessions signals strings tags targets
+types urls users values warnings widgets windows zsh-options)
+
+_arguments -C ':context:->contexts' ':style:->styles' '*:argument:->style-arg'
+
+while [[ -n $state ]]; do
+ ostate=$state
+ state=
+
+ case "$ostate" in
+ contexts)
+ if [[ $PREFIX != :*: ]]; then
+ _wanted contexts expl context compadd -P : -S : completion zftp
+ elif [[ $PREFIX = :completion:* ]] && _tags contexts; then
+ mesg=''
+ case "$PREFIX" in
+ :completion:[^:]#) mesg=function ;;
+ :completion:[^:]#:[^:]#) mesg=completer ;;
+ :completion:[^:]#:[^:]#:[^:]#) mesg='command or context' ;;
+ :completion:[^:]#:[^:]#:[^:]#:[^:]#) mesg=argument ;;
+ :completion:[^:]#:[^:]#:[^:]#:[^:]#:[^:]#) mesg=tag ;;
+ esac
+ [[ -n "$mesg" ]] && _message "$mesg"
+ fi
+ ;;
+
+ styles)
+ # Get the top-level context we're completing for, if any.
+ if [[ $words[2] = :(completion|zftp):* ]]; then
+ ctop=${words[2][2]}
+ else
+ ctop=cz
+ fi
+ _wanted styles expl style \
+ compadd -M 'r:|-=* r:|=*' -k "styles[(R)[^:]#[$ctop][^:]#:*]"
+ ;;
+
+ style-arg)
+ state="${styles[$words[3]]#*:}"
+ ;;
+
+ bool)
+ _wanted values expl boolean compadd true false
+ ;;
+
+ boolauto)
+ _wanted values expl boolean compadd true false auto select
+ ;;
+
+ cursor)
+ _wanted values expl 'cursor positioning' compadd complete key default
+ ;;
+
+ completer)
+ _wanted values expl completer \
+ compadd _complete _approximate _correct _match \
+ _expand _list _menu _oldlist _ignored _prefix _history
+ ;;
+
+ fsort)
+ _wanted values expl 'how to sort files' \
+ compadd name size links time date modification access inode change reverse
+ ;;
+
+ user-host-port)
+ if [[ $PREFIX != *[@:]* ]]; then
+ _users -S @
+ elif [[ $PREFIX = *[@:]*[[@:]* ]]; then
+ compset -P 2 '*[:@]'
+ _ports
+ else
+ compset -P 1 '*[:@]'
+ _hosts -S :
+ fi
+ ;;
+
+ host-port)
+ if [[ $PREFIX != *:* ]]; then
+ _hosts -S :
+ else
+ compset -P 1 '*:'
+ _ports
+ fi
+ ;;
+
+ listwhen)
+ _wanted values expl 'when to list completions' \
+ compadd always never sometimes
+ ;;
+
+ packageset)
+ _wanted values expl 'default package set' \
+ compadd available installed uninstalled
+ ;;
+
+ progress)
+ _wanted values expl 'progress meter style' \
+ compadd none bar percent
+ ;;
+
+ sdirs)
+ _wanted values expl 'whether to complete . or ..' \
+ compadd true false ..
+ ;;
+
+ stop)
+ _wanted values expl 'when to insert matches' \
+ compadd true false verbose
+ ;;
+
+ tag)
+ compset -q
+ if compset -P '*:*:'; then
+ _message description
+ elif compset -P '*:'; then
+ _message 'tag alias'
+ else
+ _wanted tags expl tag compadd -a taglist
+ fi
+ ;;
+
+ filepat)
+ if compset -P '*:*:'; then
+ _message description
+ elif compset -P '*:'; then
+ _message tag
+ else
+ _message 'glob patterns'
+ fi
+ ;;
+
+ user-host)
+ if [[ $PREFIX = *[@:]* ]]; then
+ compset -P '*[@:]'
+ _hosts
+ else
+ _users -S @
+ fi
+ ;;
+
+ ignorepar)
+ _wanted values expl 'which parents to ignore' \
+ compadd parent pwd .. directory
+ ;;
+
+ single-ignored)
+ _wanted values expl 'how to handle a single ignored match' \
+ compadd - show menu
+ ;;
+
+ command)
+ shift 3 words
+ (( CURRENT -= 3 ))
+ _normal
+ ;;
+
+ insert-ids)
+ _wanted values expl 'when to insert process IDs' \
+ compadd - menu single longer
+ ;;
+
+ fake-files)
+ _message 'prefix and names'
+ ;;
+
+ fake-params)
+ _message 'name and optional type'
+ ;;
+
+ ignline)
+ _wanted values expl 'ignore strings on the line' compadd true false current current-shown other
+ ;;
+
+ keep-prefix)
+ _wanted values expl 'keep prefix' compadd true false changed
+ ;;
+
+ match-orig)
+ _wanted values expl "match without inserting \`*'" compadd only both
+ ;;
+
+ oldmatches)
+ _wanted values expl 'use list of old matches' compadd true false only
+ ;;
+
+ insunambig)
+ _wanted values expl 'insert unambiguous string' compadd true false pattern
+ ;;
+
+ urgh)
+ _wanted values expl no compadd no false off 0
+ ;;
+
+ _*)
+ ${=ostate}
+ ;;
+
+ *)
+ ;;
+ esac
+done
+
+[[ $compstate[nmatches] != $nm ]]