SZEDER Gábor <szeder@xxxxxxxxxx> writes: >> It is somewhat annoying that "git diff gi<TAB>" stops at expanding >> it to "git diff git" and then upon another "git diff git<TAB>" >> offers tags whose names begin with "git" (e.g. gitgui-0.10.0) but >> the pathname git.c is not included in the choices. My wish was to >> take the union in such a fairly limited case. I tend to agree with >> you that "git diff <TAB>" that expands to all refs and pathnames >> would be useless, but so is expansion to all pathnames (or refnames >> for that matter). > > ... or trying to complete a branch name starting with a 'v', and then > getting all the vx.y.z tags. > > If you know you want git.c, then you can force filename completion > either by entering "--" before hitting tab... Yes, that is exactly why I said "the current completion code already works better than reasonably well, at least for me" in the concluding part of my message. Regarding that rr/complete-difftool topic, let's revert the tip 2 commits (the "ls-tree, archive and show" one, and the follow-up resurrection of __git_complete_file) with this: Revert 77c1305 and 3c3b46b As explained by SZEDER Gábor in $gmane/226272, git_complete_file helper is about completing <tree-ish>, taking <commit> at the tips of refs and also understanding <tree-ish>:<path> notation, and changing "archive" and "ls-tree" to use git_complete_revlist_file that in addition is meant to expand A..B range notation was a mistake. Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> and then queue this on top of d8517cc6670d (completion: difftool takes both revs and files, 2013-06-02), so that the attached and d8517cc6670d will be the only two commits that graduate to 'master' from this topic. -- >8 -- From: Ramkumar Ramachandra <artagnon@xxxxxxxxx> Date: Sun, 2 Jun 2013 19:33:42 +0530 Subject: [PATCH] completion: show can take both revlist and paths The 'git show' completion uses __git_complete_file (aliased to __git_complete_revlist_file), because accepts <tree-ish>:<path> as well as <commit-ish>. But the command also accepts range of commits in A..B notation, so using __git_complete_revlist_file is more appropriate. There still remain two users of __git_complete_file, completions for "archive" and "ls-tree". As these commands do not take range notation, and "git show" no longer uses __git_complete_file, the implementation of can be updated not to complete ranges, but that is a separate topic. Signed-off-by: Ramkumar Ramachandra <artagnon@xxxxxxxxx> Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> --- contrib/completion/git-completion.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 1b4b0f9..b9dfc3b 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -2360,7 +2360,7 @@ _git_show () return ;; esac - __git_complete_file + __git_complete_revlist_file } _git_show_branch () -- 1.8.3-477-gc2fede3 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html