summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--Completion/Unix/Command/_git8
2 files changed, 16 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 05200c664..c9037b3ba 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -11,6 +11,13 @@
initialising of vi mode change when entering viins at start of
editing.
+2014-01-27 Barton E. Schaefer <schaefer@zsh.org>
+
+ * users/18368: Completion/Unix/Command/_git: in __git_files,
+ retry ls-files if nothing matched the prefix pattern, to give
+ _multi_parts a shot at the whole file list. Restores partial
+ path completion inadvertently removed by 31159.
+
2014-01-27 Peter Stephenson <p.stephenson@samsung.com>
* unposted: Src/zsh.mdd: update 31983 to suppress stdout from
@@ -18,7 +25,7 @@
2014-01-23 Bart Schaefer <schaefer@zsh.org>
- * unposted: Doc/Zsh/arith.yo: use LPAR() instead of parens
+ * unposted: Doc/Zsh/arith.yo: use LPAR()+RPAR() instead of parens
in sqrt example
2014-01-23 Peter Stephenson <p.stephenson@samsung.com>
diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
index 43a01d9ff..c09f2555a 100644
--- a/Completion/Unix/Command/_git
+++ b/Completion/Unix/Command/_git
@@ -5683,9 +5683,17 @@ __git_files () {
# TODO: --directory should probably be added to $opts when --others is given.
local pref=$gitcdup$gitprefix$PREFIX
+
+ # First allow ls-files to pattern-match in case of remote repository
files=(${(0)"$(_call_program files git ls-files -z --exclude-standard $opts -- ${pref:+$pref\\\*} 2>/dev/null)"})
__git_command_successful $pipestatus || return
+ # If ls-files succeeded but returned nothing, try again with no pattern
+ if [[ -z "$files" && -n "$pref" ]]; then
+ files=(${(0)"$(_call_program files git ls-files -z --exclude-standard $opts -- 2>/dev/null)"})
+ __git_command_successful $pipestatus || return
+ fi
+
# _wanted $tag expl $description _files -g '{'${(j:,:)files}'}' $compadd_opts -
_wanted $tag expl $description _multi_parts -f $compadd_opts - / files
}