threads / patch / 30253

patchcompletion: fix issues with COMP_WORDBREAKS

Subject: [PATCH] completion: fix issues with COMP_WORDBREAKS

## tl;dr

3 messages between Apr 15, 2012 and Apr 16, 2012. Diffs are folded; open one to read it.

replies: 2people: 2as markdown or json

Felipe Contreras· Apr 15, 2012, 21:17 UTC · lore

The situation regarding COMP_WORDBREAKS has changed through time, but right now due to changes in bash 4 we are using _get_comp_words_by_ref and there's no need to mess directly with COMP_WORDBREAKS any more.

In fact if COMP_WORDBREAKS doesn't contain a colon the completion gets all messed up. For example:

 git push origin master:<TAB>
 git diff master:<TAB>
The "master:" prefix would be added again, unnecessarily.
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
---
 contrib/completion/git-completion.bash |   14 --------------
 1 file changed, 14 deletions(-)
Show changes to contrib/completion/git-completion.bash +0 −14
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 9f56ec7..d9771f2 100755
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -65,11 +65,6 @@ if [[ -n ${ZSH_VERSION-} ]]; then
 	autoload -U +X bashcompinit && bashcompinit
 fi
 
-case "$COMP_WORDBREAKS" in
-*:*) : great ;;
-*)   COMP_WORDBREAKS="$COMP_WORDBREAKS:"
-esac
-
 # __gitdir accepts 0 or 1 arguments (i.e., location)
 # returns location of .git repo
 __gitdir ()
@@ -671,11 +666,6 @@ __git_complete_revlist_file ()
 			;;
 		esac
 
-		case "$COMP_WORDBREAKS" in
-		*:*) : great ;;
-		*)   pfx="$ref:$pfx" ;;
-		esac
-
 		local IFS=$'\n'
 		COMPREPLY=($(compgen -P "$pfx" \
 			-W "$(git --git-dir="$(__gitdir)" ls-tree "$ls" \
@@ -758,10 +748,6 @@ __git_complete_remote_or_refspec ()
 	[ "$remote" = "." ] && remote=
 	case "$cur_" in
 	*:*)
-		case "$COMP_WORDBREAKS" in
-		*:*) : great ;;
-		*)   pfx="${cur_%%:*}:" ;;
-		esac
 		cur_="${cur_#*:}"
 		lhs=0
 		;;
-- 
1.7.10
Jonathan Nieder· Apr 16, 2012, 00:38 UTC · re: Felipe Contreras · lore

Re: [PATCH] completion: fix issues with COMP_WORDBREAKS

Felipe Contreras wrote:
Show 7 quoted lines
> In fact if COMP_WORDBREAKS doesn't contain a colon the completion gets
> all messed up. For example:
>
>  git push origin master:<TAB>
>  git diff master:<TAB>
>
> The "master:" prefix would be added again, unnecessarily.
Thanks.  Yeah, that sounds broken.

Unfortunately the patch introduces a regression: if after loading the completion script I set COMP_WORDBREAKS not to contain a colon, then with the current completion script

	git show HEAD:Docu<TAB>

completes fine, but with the patched completion script it seems to get confused and strips off the HEAD.

Ideas? Jonathan

Felipe Contreras· Apr 16, 2012, 10:44 UTC · re: Jonathan Nieder · lore

Re: [PATCH] completion: fix issues with COMP_WORDBREAKS

On Mon, Apr 16, 2012 at 3:38 AM, Jonathan Nieder <jrnieder@gmail.com> wrote:
Show 20 quoted lines
> Felipe Contreras wrote:
>
>> In fact if COMP_WORDBREAKS doesn't contain a colon the completion gets
>> all messed up. For example:
>>
>>  git push origin master:<TAB>
>>  git diff master:<TAB>
>>
>> The "master:" prefix would be added again, unnecessarily.
>
> Thanks.  Yeah, that sounds broken.
>
> Unfortunately the patch introduces a regression: if after loading the
> completion script I set COMP_WORDBREAKS not to contain a colon, then
> with the current completion script
>
>        git show HEAD:Docu<TAB>
>
> completes fine, but with the patched completion script it seems to
> get confused and strips off the HEAD.
I don't understand, I tested this and it was working fine, but not any more =/
Maybe I was testing on zsh.
I guess this should be dropped then.
Cheers.
-- 
Felipe Contreras

← back to recent threads