Re: [PATCH] completion: add completer for status

2013-06-30 Thread SZEDER Gábor
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

2013-06-28 Thread SZEDER Gábor
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

2013-06-28 Thread Ramkumar Ramachandra
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

2013-06-28 Thread Ramkumar Ramachandra
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

2013-06-28 Thread SZEDER Gábor
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

2013-06-24 Thread Ramkumar Ramachandra
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

2013-06-24 Thread Ramkumar Ramachandra
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