Re: [PATCH] completion: add completer for status
On Fri, Jun 28, 2013 at 07:33:21PM +0530, Ramkumar Ramachandra wrote: Ramkumar Ramachandra wrote: + __git_complete_index_file --with-tree=HEAD --cached --deleted Might as well go all the way with --cached --deleted --unmerged --others no? What is the point of --with-tree=HEAD? Ugh, --deleted doesn't work as advertised (terrible documentation). Why not? In my experiments it worked well, as you can see in my previous emails. What behavior did you observe which differs from the advertised? The minimally correct combination we need seems to be --with-tree=HEAD --cached --others. Yeah, once we use '--with-tree=HEAD' we don't need '--deleted' anymore. Gábor -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] completion: add completer for status
On Fri, Jun 28, 2013 at 12:56:01PM +0200, SZEDER Gábor wrote: On Fri, Jun 28, 2013 at 12:29:36PM +0200, SZEDER Gábor wrote: On Mon, Jun 24, 2013 at 10:52:55PM +0530, Ramkumar Ramachandra wrote: Signed-off-by: Ramkumar Ramachandra artag...@gmail.com + __git_complete_index_file With or without this change we can't ask for the status of a certain deleted file: $ git rm version.h rm 'version.h' $ git status # On branch master # Changes to be committed: # (use git reset HEAD file... to unstage) # # deleted:version.h # $ git status vTAB varint.c varint.h vcs-svn/ version.c Well, at least the deleted is there if I only remove it from the work tree (i.e. use 'rm' instead of 'git rm'): $ rm version.h $ git status # On branch master # Changes not staged for commit: # (use git add/rm file... to update what will be committed) # (use git checkout -- file... to discard changes in working # directory) # # deleted:version.h # no changes added to commit (use git add and/or git commit -a) $ git status vTAB varint.c varint.h vcs-svn/ version.c version.h Ok, how about this on top? diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 912fb988..b68024c6 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1697,6 +1697,8 @@ _git_stage () _git_status () { + __git_has_doubledash return + case $cur in --untracked-files=*) __gitcomp no normal all ${cur##--untracked-files=} @@ -1718,7 +1720,7 @@ _git_status () return ;; esac - __git_complete_index_file + __git_complete_index_file --with-tree=HEAD --cached --deleted } __git_config_get_set_variables () In my cursory testing it seemed to do the right thing for deleted and tracked files: $ rm version.h $ git rm version.c rm 'version.c' $ echo varint.h $ echo v-added $ git add v-added $ echo v-untracked $ git status # On branch master # Changes to be committed: # (use git reset HEAD file... to unstage) # # new file: v-added # deleted:version.c # # Changes not staged for commit: # (use git add/rm file... to update what will be committed) # (use git checkout -- file... to discard changes in working # directory) # # modified: varint.h # deleted:version.h # # Untracked files: # (use git add file... to include in what will be committed) # # v-untracked $ git status v v-addedvarint.c varint.h vcs-svn/ version.c version.h Note, however, that this doesn't offer untracked files (Ram's original didn't do that either), but in case somebody really needs that he can have it by using '--': $ git status -- v v-added varint.c varint.h vcs-svn/ v-untracked Best, Gábor -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] completion: add completer for status
SZEDER Gábor wrote: diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 912fb988..b68024c6 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1697,6 +1697,8 @@ _git_stage () _git_status () { + __git_has_doubledash return + This line makes absolutely no sense to me. When the case statement fails to match anything (which it will, when a double-dash is present), we'll use the __git_complete_index_file which is superior to returning and falling back to the dumb zsh file listing, no? As a result, without that line, $ git status -- fooTAB will complete fine when foo* isn't necessarily a file in the filesystem, but something that our ls-files returns, no? case $cur in --untracked-files=*) __gitcomp no normal all ${cur##--untracked-files=} @@ -1718,7 +1720,7 @@ _git_status () return ;; esac - __git_complete_index_file + __git_complete_index_file --with-tree=HEAD --cached --deleted Might as well go all the way with --cached --deleted --unmerged --others no? What is the point of --with-tree=HEAD? Thanks. -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] completion: add completer for status
Ramkumar Ramachandra wrote: + __git_complete_index_file --with-tree=HEAD --cached --deleted Might as well go all the way with --cached --deleted --unmerged --others no? What is the point of --with-tree=HEAD? Ugh, --deleted doesn't work as advertised (terrible documentation). The minimally correct combination we need seems to be --with-tree=HEAD --cached --others. -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] completion: add completer for status
On Fri, Jun 28, 2013 at 06:50:02PM +0530, Ramkumar Ramachandra wrote: SZEDER Gábor wrote: diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 912fb988..b68024c6 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1697,6 +1697,8 @@ _git_stage () _git_status () { + __git_has_doubledash return + This line makes absolutely no sense to me. That was my quick attempt to provide a way to complete untracked files, but M-/ or '--others' will do as well. When the case statement fails to match anything (which it will, when a double-dash is present), we'll use the __git_complete_index_file which is superior to And slower, too. returning and falling back to the dumb zsh file listing, no? As a result, without that line, $ git status -- fooTAB will complete fine when foo* isn't necessarily a file in the filesystem, but something that our ls-files returns, no? If you want fancy completion replies, then you won't type the doubledash. case $cur in --untracked-files=*) __gitcomp no normal all ${cur##--untracked-files=} @@ -1718,7 +1720,7 @@ _git_status () return ;; esac - __git_complete_index_file + __git_complete_index_file --with-tree=HEAD --cached --deleted Might as well go all the way with --cached --deleted --unmerged --others no? '--unmerged' is definitely not good, it implies '--stage', which changes the output format. What is the point of --with-tree=HEAD? To list files that are deleted from the index: $ rm version.h $ git rm version.c rm 'version.c' $ git ls-files --deleted version.h $ git ls-files --deleted --with-tree=HEAD version.c version.h Gábor -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] completion: add completer for status
Signed-off-by: Ramkumar Ramachandra artag...@gmail.com --- contrib/completion/git-completion.bash | 26 ++ 1 file changed, 26 insertions(+) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 6c3bafe..912fb98 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1695,6 +1695,32 @@ _git_stage () _git_add } +_git_status () +{ + case $cur in + --untracked-files=*) + __gitcomp no normal all ${cur##--untracked-files=} + return + ;; + --ignore-submodules=*) + __gitcomp none untracked dirty all ${cur##--ignore-submodules=} + return + ;; + --column=*) + __gitcomp always never auto column row plain dense nodense ${cur##--column=} + return + ;; + --*) + __gitcomp + --short --branch --long --porcelain + --untracked-files= --ignore-submodules= --ignored --column= + + return + ;; + esac + __git_complete_index_file +} + __git_config_get_set_variables () { local prevword word config_file= c=$cword -- 1.8.3.1.550.gd96f26e.dirty -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] completion: add completer for status
Ramkumar Ramachandra wrote: + __git_complete_index_file Um, that should be __git_complete_index_file --cached, I think. -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html