[RFC/PATCH] completion: complete pretty format placeholders

Subsystems: the rest

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

[RFC/PATCH] completion: complete pretty format placeholders

From: Stephen Boyd <hidden>
Date: 2016-06-15 22:46:47

---

 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

Re: [RFC/PATCH] completion: complete pretty format placeholders

From: Shawn O. Pearce <hidden>
Date: 2016-06-15 22:46:48

Stephen Boyd [off-list ref] wrote:
 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.
bash oddity?  Back when I started the completion I had a lot
of trouble with stuff like --pretty=<TAB>, or foo:<TAB> because
bash more often than not tried to second guess what I was doing.
I wonder if you are running against that here.
  
quoted hunk
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
+"
To be honest, I'm not sure what value this provides.  Its just as
many characters to type, isn't it, and it doesn't offer me any help
as to which placeholder should be inserted to get the value I want.
"Was it ae or aE that I wanted here?  WTF, manpage time!".
  
-- 
Shawn.

Re: [RFC/PATCH] completion: complete pretty format placeholders

From: Stephen Boyd <hidden>
Date: 2016-06-15 22:46:48

Shawn O. Pearce wrote:
bash oddity?  Back when I started the completion I had a lot
of trouble with stuff like --pretty=<TAB>, or foo:<TAB> because
bash more often than not tried to second guess what I was doing.
I wonder if you are running against that here.
Thanks for the heads up.
To be honest, I'm not sure what value this provides.  Its just as
many characters to type, isn't it, and it doesn't offer me any help
as to which placeholder should be inserted to get the value I want.
"Was it ae or aE that I wanted here?  WTF, manpage time!".
Yeah, you're probably right. Throw it on the dust pile ;-)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help