mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-09-03 10:21:46 +02:00
28307: support new styles esp. vcs_info ones and allow quoted contexts again
This commit is contained in:
parent
5ca08eccd0
commit
30d6deb355
2 changed files with 124 additions and 10 deletions
|
@ -1,3 +1,8 @@
|
|||
2010-10-01 Oliver Kiddle <opk@zsh.org>
|
||||
|
||||
* 28307: Completion/Zsh/Command/_zstyle: support new styles
|
||||
especially vcs_info ones and allow quoted contexts again
|
||||
|
||||
2010-09-25 Peter Stephenson <p.w.stephenson@ntlworld.com>
|
||||
|
||||
* 28295 plus tweak for failure case: use lexer to split words
|
||||
|
@ -13677,5 +13682,5 @@
|
|||
|
||||
*****************************************************
|
||||
* This is used by the shell to define $ZSH_PATCHLEVEL
|
||||
* $Revision: 1.5087 $
|
||||
* $Revision: 1.5088 $
|
||||
*****************************************************
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#compdef zstyle
|
||||
|
||||
local state context ostate line expl ctop suf
|
||||
local nm=$compstate[nmatches] taglist patterns pstyles
|
||||
local nm=$compstate[nmatches] taglist patterns pstyles contexts
|
||||
typeset -A opt_args styles
|
||||
|
||||
(( $+functions[_completers] )) ||
|
||||
|
@ -9,7 +9,7 @@ _completers() {
|
|||
# option: -p - needs a `_' prefix
|
||||
local us
|
||||
local -a disp list expl
|
||||
|
||||
|
||||
list=( complete approximate correct match expand list menu oldlist
|
||||
ignored prefix history )
|
||||
zparseopts -D -K -E 'p=us'
|
||||
|
@ -25,6 +25,7 @@ _completers() {
|
|||
# c completion
|
||||
# d chpwd
|
||||
# e line editor
|
||||
# v vcs_info
|
||||
# z zftp
|
||||
# or any combination of the above,
|
||||
# followed by a colon, followed by a state to enter, empty if none.
|
||||
|
@ -41,14 +42,21 @@ styles=(
|
|||
cache-policy c:_functions
|
||||
call-command c:bool
|
||||
command c:command
|
||||
command-path c:_dir_list
|
||||
commands c:
|
||||
complete c:bool
|
||||
complete-options c:bool
|
||||
completer c:completer
|
||||
condition c:bool
|
||||
cursor c:cursor
|
||||
delimiters c:
|
||||
disabled c:bool
|
||||
domains c:
|
||||
environ c:environ
|
||||
expand c:
|
||||
extra-verbose c:bool
|
||||
fake c:
|
||||
fake-always c:
|
||||
fake-files c:fake-files
|
||||
fake-parameters c:fake-params
|
||||
file-list c:bool
|
||||
|
@ -94,11 +102,12 @@ styles=(
|
|||
numbers c:bool
|
||||
old-list c:bool
|
||||
old-matches c:oldmatches
|
||||
old-menu c:bool
|
||||
old-menu c:bool
|
||||
original c:bool
|
||||
packageset c:packageset
|
||||
path c:_directories
|
||||
pager c:_command_names
|
||||
path-completion c:bool
|
||||
pine-directory c:_directories
|
||||
ports c:_ports
|
||||
prefix-hidden c:bool
|
||||
|
@ -107,17 +116,18 @@ styles=(
|
|||
range c:
|
||||
recent-dirs-insert c:recent-dirs-insert
|
||||
regular c:bool
|
||||
rehash c:bool
|
||||
remote-access c:bool
|
||||
remove-all-dups c:bool
|
||||
select-prompt c:
|
||||
select-scroll c:
|
||||
separate-sections c:bool
|
||||
show-completer c:bool
|
||||
single-ignored c:single-ignored
|
||||
sort c:bool
|
||||
special-dirs c:sdirs
|
||||
squeeze-slashes c:bool
|
||||
stop c:stop
|
||||
stop-keys c:
|
||||
strip-comments c:bool
|
||||
subst-globs-only c:bool
|
||||
substitute c:bool
|
||||
|
@ -127,6 +137,8 @@ styles=(
|
|||
urls c:_urls
|
||||
use-cache c:bool
|
||||
use-compctl c:urgh
|
||||
use-ip c:bool
|
||||
use-perl c:bool
|
||||
users c:_users
|
||||
users-hosts c:user-host
|
||||
users-hosts-ports c:user-host-port
|
||||
|
@ -160,6 +172,24 @@ styles=(
|
|||
word-style e:word-style
|
||||
word-context e:
|
||||
|
||||
formats v:vcs-format
|
||||
actionformats v:vcs-format
|
||||
branchformat v:branch-format
|
||||
nvcsformats v:
|
||||
stgitformat v:stg-format
|
||||
max-exports v:
|
||||
enable v:vcs
|
||||
disable v:vcs
|
||||
disable-patterns v:
|
||||
check-for-changes v:bool
|
||||
stagedstr v:
|
||||
unstagedstr v:
|
||||
command v:_command_names
|
||||
use-server v:bool
|
||||
use-simple v:bool
|
||||
get-revision v:bool
|
||||
use-prompt-escapes v:bool
|
||||
|
||||
chpwd z:bool
|
||||
progress z:progress
|
||||
remote-glob z:bool
|
||||
|
@ -193,14 +223,19 @@ while (( $#state )); do
|
|||
case "$state[1]" in
|
||||
(contexts)
|
||||
if [[ ! -prefix :*: ]]; then
|
||||
_wanted contexts expl context compadd -P : -qS : completion zftp
|
||||
_wanted contexts expl context compadd -P : -qS : completion vcs_info zftp
|
||||
elif compset -P :completion:; then
|
||||
for ostate in functions _completers cmdorcont argument tag; do
|
||||
contexts=( functions _completers cmdorcont argument tag )
|
||||
elif compset -P :vcs_info:; then
|
||||
contexts=( vcs-string user-context repo-root-name )
|
||||
fi
|
||||
if (( $#contexts )); then
|
||||
for ostate in $contexts; do
|
||||
compset -P '[^:]#:' || break
|
||||
done
|
||||
suf=()
|
||||
compset -S ':*' || suf=( -qS: )
|
||||
[[ $ostate = tag ]] && suf=()
|
||||
[[ $ostate = $contexts[-1] ]] && suf=()
|
||||
if compset -P '(|\\)\((*\||)'; then # handle (x|y) patterns
|
||||
suf=()
|
||||
compset -S '(|\\)[)|]*' ||
|
||||
|
@ -222,7 +257,7 @@ while (( $#state )); do
|
|||
|
||||
(styles)
|
||||
# Get the top-level context we're completing for, if any.
|
||||
case $line[1] in
|
||||
case ${(Q)line[1]} in
|
||||
(:completion:*)
|
||||
ctop=c
|
||||
;;
|
||||
|
@ -235,6 +270,10 @@ while (( $#state )); do
|
|||
ctop=z
|
||||
;;
|
||||
|
||||
(:vcs_info:*)
|
||||
ctop=v
|
||||
;;
|
||||
|
||||
(:zle:*)
|
||||
ctop=e
|
||||
;;
|
||||
|
@ -248,7 +287,7 @@ while (( $#state )); do
|
|||
;;
|
||||
|
||||
(style-arg)
|
||||
state+=( "${styles[$line[2]]#*:}" )
|
||||
state+=( "${styles[${(Q)line[2]}]#*:}" )
|
||||
;;
|
||||
|
||||
(argument)
|
||||
|
@ -278,6 +317,18 @@ while (( $#state )); do
|
|||
_wanted values expl completer _completers -p
|
||||
;;
|
||||
|
||||
(environ)
|
||||
if [[ "$PREFIX" = *\=* ]]; then
|
||||
compstate[parameter]="${PREFIX%%\=*}"
|
||||
compset -P 1 '*='
|
||||
_value
|
||||
else
|
||||
suf=()
|
||||
compset -S '=*' || suf=(-S '=')
|
||||
_parameters -q $suf
|
||||
fi
|
||||
;;
|
||||
|
||||
(fsort)
|
||||
_wanted values expl 'how to sort files' \
|
||||
compadd name size links time date modification access inode change reverse
|
||||
|
@ -455,6 +506,64 @@ while (( $#state )); do
|
|||
_wanted word-styles expl 'word style' compadd normal shell space
|
||||
;;
|
||||
|
||||
(vcs-string)
|
||||
_wanted vcs expl vcs compadd $suf - \
|
||||
${${(f)"$(_call_program vcs vcs_info_printsys 2>/dev/null)"}:#\#*}
|
||||
;;
|
||||
|
||||
(vcs)
|
||||
_wanted vcs expl vcs compadd \
|
||||
${${(f)"$(_call_program vcs vcs_info_printsys 2>/dev/null)"}:#(\#|*-)*}
|
||||
;;
|
||||
|
||||
(user-context)
|
||||
_wanted user-contexts expl 'user context' compadd $suf default command
|
||||
;;
|
||||
|
||||
(repo-root-name)
|
||||
_message -e names 'repository root name'
|
||||
;;
|
||||
|
||||
(vcs-format)
|
||||
if [[ $PREFIX = *% ]]; then
|
||||
compset -P '*%'
|
||||
_values -s '' 'format replacement' \
|
||||
's[the vcs in use]' \
|
||||
'b[the current branch]' \
|
||||
'a[an identifier describing the action]' \
|
||||
'i[current revision no/id]' \
|
||||
'c[details of staged changes]' \
|
||||
'u[details of unstaged changes]' \
|
||||
'r[repository name]' \
|
||||
'S[subdirectory within repository]' \
|
||||
'm[misc replacement - backend specific]'
|
||||
else
|
||||
_message -e formats 'vcs format'
|
||||
fi
|
||||
;;
|
||||
|
||||
(branch-format)
|
||||
if [[ $PREFIX = *% ]]; then
|
||||
compset -P '*%'
|
||||
_values -s '' 'format replacement' \
|
||||
'b[the current branch]' \
|
||||
'r[current revision number]' \
|
||||
else
|
||||
_message -e formats 'vcs format'
|
||||
fi
|
||||
;;
|
||||
|
||||
(stg-format)
|
||||
if [[ $PREFIX = *% ]]; then
|
||||
compset -P '*%'
|
||||
_values -s '' 'format replacement' \
|
||||
'p[patch currently on top of the stack]' \
|
||||
'c[the number of unapplied patches]'
|
||||
else
|
||||
_message -e formats 'vcs format'
|
||||
fi
|
||||
;;
|
||||
|
||||
(_*)
|
||||
${=state[1]} $suf
|
||||
;;
|
||||
|
|
Loading…
Reference in a new issue