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

25491: patch to improve "git checkout" completion, from Mikael Magnusson.

This commit is contained in:
Clint Adams 2008-08-21 00:13:07 +00:00
parent 0d07bf44e7
commit d5a328eafc
2 changed files with 27 additions and 17 deletions

View file

@ -1,3 +1,8 @@
2008-08-21 Clint Adams <clint@zsh.org>
* 25491: Completion/Unix/Command/_git: patch to improve
"git checkout" completion, from Mikael Magnusson.
2008-08-19 Clint Adams <clint@zsh.org>
* 25490: Src/zsh.h, Src/Modules/db_gdbm.c: make zties dynamic so

View file

@ -1543,10 +1543,12 @@ _git-checkout () {
new_branch_reflog_arg='-l[create the new branch'\''s reflog]'
fi
# TODO: This isnt quite correct in regards of the handling of the “--”
# option, as it should prevent us from seeing a branch, not stop matching
# options.
_arguments -C -S -A "-*" \
if (( words[(I)--] > 0 && words[(I)--] < CURRENT )); then
_arguments -C -S \
- update-files \
'*::file:->files' && ret=0
else
_arguments -C -S \
- switch-branch \
'-q[suppress feedback messages]' \
'-f[force a complete re-read]' \
@ -1559,8 +1561,11 @@ _git-checkout () {
'::branch:__git_revisions' \
- update-files \
'::tree-ish:__git_tree_ishs' \
'::file:->files' && ret=0
'*::file:->files' && ret=0
fi
#XXX TODO and all that: $line[1] only works if you didn't write any options.
#What's the variable that holds the tree-ish argument? Is it even reliably possible?
case $state in
(files)
if [[ -n $line[1] ]]; then