[PATCH] completion: add completer for status

Subsystems: the rest

STALE3738d

9 messages, 2 authors, 2016-06-15 · open the first message on its own page

[PATCH] completion: add completer for status

From: Ramkumar Ramachandra <hidden>
Date: 2016-06-15 22:57:54

Signed-off-by: Ramkumar Ramachandra <redacted>
---
 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

Re: [PATCH] completion: add completer for status

From: Ramkumar Ramachandra <hidden>
Date: 2016-06-15 22:57:54

Ramkumar Ramachandra wrote:
+       __git_complete_index_file
Um, that should be __git_complete_index_file "--cached", I think.

Re: [PATCH] completion: add completer for status

From: SZEDER Gábor <hidden>
Date: 2016-06-15 22:57:57

Hi,

On Mon, Jun 24, 2013 at 10:52:55PM +0530, Ramkumar Ramachandra wrote:
quoted hunk
Signed-off-by: Ramkumar Ramachandra <redacted>
---
 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=
The parameter for '--untracked-files' '--ignore-submodules' and
'--column' is optional.  In such cases we usually list the option both
with and without the '=' as a reminder, e.g. look at 'git log's
'--decorate' and '--dirstat'.
+			"
+		return
+		;;
+	esac
+	__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 v<TAB>
varint.c   varint.h   vcs-svn/   version.c  

I wonder whether there is some clever combination of options that
would make that possible?  I didn't find it.


Gábor

Re: [PATCH] completion: add completer for status

From: SZEDER Gábor <hidden>
Date: 2016-06-15 22:57:57

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:
quoted
Signed-off-by: Ramkumar Ramachandra <redacted>
+	__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 v<TAB>
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 v<TAB>
varint.c   varint.h   vcs-svn/   version.c  version.h  


Gábor

Re: [PATCH] completion: add completer for status

From: SZEDER Gábor <hidden>
Date: 2016-06-15 22:57:57

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:
quoted
On Mon, Jun 24, 2013 at 10:52:55PM +0530, Ramkumar Ramachandra wrote:
quoted
Signed-off-by: Ramkumar Ramachandra <redacted>
+	__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 v<TAB>
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 v<TAB>
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-added    varint.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

Re: [PATCH] completion: add completer for status

From: Ramkumar Ramachandra <hidden>
Date: 2016-06-15 22:57:57

SZEDER Gábor wrote:
quoted hunk
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 -- foo<TAB>

will complete fine when foo* isn't necessarily a file in the
filesystem, but something that our ls-files returns, no?
quoted hunk
        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.

Re: [PATCH] completion: add completer for status

From: Ramkumar Ramachandra <hidden>
Date: 2016-06-15 22:57:57

Ramkumar Ramachandra wrote:
quoted
+       __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".

Re: [PATCH] completion: add completer for status

From: SZEDER Gábor <hidden>
Date: 2016-06-15 22:57:57

On Fri, Jun 28, 2013 at 06:50:02PM +0530, Ramkumar Ramachandra wrote:
SZEDER Gábor wrote:
quoted
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 -- foo<TAB>

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.
quoted
        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

Re: [PATCH] completion: add completer for status

From: SZEDER Gábor <hidden>
Date: 2016-06-15 22:57:57

On Fri, Jun 28, 2013 at 07:33:21PM +0530, Ramkumar Ramachandra wrote:
Ramkumar Ramachandra wrote:
quoted
quoted
+       __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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help