1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-09-02 10:01:11 +02:00

unposted: Completion/Unix/Command/_git: Update git-add completion to not

complete already given file arguments and also to not list file completions if
an option is being completed.
This commit is contained in:
Nikolai Weibull 2011-07-21 10:03:09 +00:00
parent d37eda52f3
commit 3eb0846645
2 changed files with 15 additions and 8 deletions

View file

@ -9,6 +9,10 @@
* unposted: Completion/Unix/Command/_git: Fix bug in git-add completion
that prevented -f option from being used correctly.
* unposted: Completion/Unix/Command/_git: Update git-add completion to
not complete already given file arguments and also to not list file
completions if an option is being completed.
2011-07-19 Peter Stephenson <pws@csr.com>
* 29555: Src/exec.c: fix problem that shell failed to use file
@ -15131,5 +15135,5 @@
*****************************************************
* This is used by the shell to define $ZSH_PATCHLEVEL
* $Revision: 1.5401 $
* $Revision: 1.5402 $
*****************************************************

View file

@ -57,21 +57,20 @@ _git-add () {
'--refresh[do not add files, but refresh their stat() info in index]' \
'--ignore-errors[continue adding if an error occurs]' \
$ignore_missing \
'*:: :->file' && ret=0
'*:: :->file' && return
case $state in
(file)
# TODO: Use __git_ignore_line_inside_arguments.
declare -a ignored_files_alternatives
if [[ -n ${opt_args[(I)-f|--force]} ]]; then
ignored_files_alternatives=(
'ignored-modified-files:ignored modified files:__git_modified_files --ignored'
'ignored-other-files:ignored other files:__git_other_files --ignored')
'ignored-modified-files:ignored modified files:__git_ignore_line_inside_arguments __git_modified_files --ignored'
'ignored-other-files:ignored other files:__git_ignore_line_inside_arguments __git_other_files --ignored')
fi
_alternative \
'modified-files::__git_modified_files' \
'other-files::__git_other_files' \
'modified-files::__git_ignore_line_inside_arguments __git_modified_files' \
'other-files::__git_ignore_line_inside_arguments __git_other_files' \
$ignored_files_alternatives && ret=0
;;
esac
@ -4524,7 +4523,11 @@ __git_ignore_line () {
(( $+functions[__git_ignore_line_inside_arguments] )) ||
__git_ignore_line_inside_arguments () {
__git_ignore_line ${*[-1]} ${*[1,-2]}
declare -a compadd_opts
zparseopts -D -E -a compadd_opts V: J: 1 2 n f X: M: P: S: r: R: q F:
__git_ignore_line $* $compadd_opts
}
# Common Argument Types