diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | Completion/Unix/Command/_git | 27 |
2 files changed, 17 insertions, 15 deletions
diff --git a/ChangeLog b/ChangeLog index 61390fc9d..0c11fe53b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2022-10-22 Bart Schaefer <schaefer@Macadamia> + + * 50714: Completion/Unix/Command/_git (_git-diff): also complete + in the 2nd argument position anything that could be in the 1st. + 2022-10-17 Peter Stephenson <p.stephenson@samsung.com> * 50786: Functions/Misc/add-zle-hook-widget: make match diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git index cecb80ac3..6a1c4158a 100644 --- a/Completion/Unix/Command/_git +++ b/Completion/Unix/Command/_git @@ -808,18 +808,6 @@ _git-diff () { # Otherwise, more complex conditions need to be checked. case $CURRENT in - (1) - local files_alt='files::__git_changed-in-working-tree_files' - if [[ -n ${opt_args[(I)--cached|--staged]} ]]; then - files_alt='files::__git_changed-in-index_files' - fi - - _alternative \ - 'commit-ranges::__git_commit_ranges' \ - 'blobs-and-trees-in-treeish::__git_blobs_and_trees_in_treeish' \ - $files_alt \ - 'blobs::__git_blobs ' && ret=0 - ;; (2) # Check if first argument is something special. In case of committish ranges and committishs offer a full list compatible completions. if __git_is_committish_range $line[1]; then @@ -841,10 +829,19 @@ _git-diff () { elif [[ -n ${opt_args[(I)--cached|--staged]} ]]; then # Example: git diff --cached file1 <tab> __git_changed-in-index_files && ret=0 - else - # Example: git diff file1 <tab> - __git_changed-in-working-tree_files && ret=0 fi + ;& + (1) + local files_alt='files::__git_changed-in-working-tree_files' + if [[ -n ${opt_args[(I)--cached|--staged]} ]]; then + files_alt='files::__git_changed-in-index_files' + fi + + _alternative \ + 'commit-ranges::__git_commit_ranges' \ + 'blobs-and-trees-in-treeish::__git_blobs_and_trees_in_treeish' \ + $files_alt \ + 'blobs::__git_blobs ' && ret=0 ;; (*) if __git_is_committish_range $line[1]; then |