summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--Completion/Unix/Command/_git13
2 files changed, 16 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 4d8b15c69..04883a152 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2015-10-20  Daniel Shahaf  <d.s@daniel.shahaf.name>
+
+	* 36900: Completion/Unix/Command/_git: _git: stash names
+	completion: Display log messages
+
 2015-10-19  Oliver Kiddle  <opk@zsh.org>
 
 	* 36642: Eric Cook: Completion/Unix/Command/_zfs:
diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
index 1fcde9015..719d717d7 100644
--- a/Completion/Unix/Command/_git
+++ b/Completion/Unix/Command/_git
@@ -5487,12 +5487,21 @@ __git_signoff_file () {
 (( $+functions[__git_stashes] )) ||
 __git_stashes () {
   local expl
+  declare -a interleaved
   declare -a stashes
+  declare -a descriptions
 
-  stashes=(${(f)"$(_call_program stashes git stash list --pretty=format:%gd 2>/dev/null)"})
+  interleaved=(${(ps:\0:)"$(_call_program stashes git stash list -z --pretty='format:%gd%x00%s%x00\(%cr\)' 2>/dev/null)"})
   __git_command_successful $pipestatus || return 1
+  () {
+    local i j k
+    for i j k in $interleaved; do
+      stashes+=($i)
+      descriptions+=("$i: $j $k")
+    done
+  }
 
-  _wanted stashes expl stash compadd "$@" -a - stashes
+  _wanted stashes expl 'stash' compadd -Vx -d descriptions -a - stashes
 }
 
 (( $+functions[__git_svn_revisions] )) ||