@@ -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'.
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
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
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
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
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=}"
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".
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=}"
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