From a7e4394d1b06cbd004c85b5fecfe864eb93b4385 Mon Sep 17 00:00:00 2001 From: Bart Schaefer Date: Sat, 22 Oct 2022 20:26:23 -0700 Subject: 50714: also complete in the 2nd argument of "git diff" anything that could be in the 1st argument. This probably shouldn't complete ranges but all other code is in common, so leaving it to someone more familiar with _git to clean up. --- Completion/Unix/Command/_git | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) (limited to 'Completion/Unix/Command/_git') 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 __git_changed-in-index_files && ret=0 - else - # Example: git diff file1 - __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 -- cgit 1.4.1