[RFC/PATCH] completion: complete pretty format placeholders
---
This seems to work most of the time.
This
git log --pretty=format:%ad:%<TAB>
becomes
git log --pretty=format:%ad:%ad:%
which is wrong. But in quotes
git log --pretty=format:"%ad:%<TAB>
works. I'm not sure why.
Also git log --pretty=%<TAB> doesn't work. I'm not sure how to support
that without encountering the same breakage as above.
contrib/completion/git-completion.bash | 25 +++++++++++++++++++++++++
1 files changed, 25 insertions(+), 0 deletions(-)
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index ad26b7c..3819c73 100755
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -1117,6 +1117,9 @@ __git_log_shortlog_options="
__git_log_pretty_formats="oneline short medium full fuller email raw format:"
__git_log_date_formats="relative iso8601 rfc2822 short local default raw"
+__git_log_format_placeholders="ad aD ae aE ai an aN ar at b Cblue cd cD ce cE
+Cgreen ci cn cN cr Cred Creset ct d e f h H m n p P s t T x
+"
_git_log ()
{
@@ -1129,6 +1132,17 @@ _git_log ()
merge="--merge"
fi
case "$cur" in
+ --pretty=format:*%*|--format=format:*%*)
+ local pfx="${cur%\%*}%"
+ pfx="${pfx#*:}"
+ cur="${cur##*%}"
+ __gitcomp "$__git_log_format_placeholders
+ " "$pfx" "$cur"
+ return
+ ;;
+ --pretty=format:*|--format=format:*)
+ return
+ ;;
--pretty=*)
__gitcomp "$__git_log_pretty_formats
" "" "${cur##--pretty=}"
@@ -1814,6 +1828,17 @@ _git_show ()
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
+ --pretty=format:*%*|--format=format:*%*)
+ local pfx="${cur%\%*}%"
+ pfx="${pfx#*:}"
+ cur="${cur##*%}"
+ __gitcomp "$__git_log_format_placeholders
+ " "$pfx" "$cur"
+ return
+ ;;
+ --pretty=format:*|--format=format:*)
+ return
+ ;;
--pretty=*)
__gitcomp "$__git_log_pretty_formats
" "" "${cur##--pretty=}"
--
1.6.3.1.9.g95405b