threads / patch / 54304

v2, 2 partscompletion: use "prev" variable instead of introducing "prevword"

Subject: [PATCH v2 1/2] completion: use "prev" variable instead of introducing "prevword"

## tl;dr

4 messages between Sep 25, 2020 and Sep 26, 2020. Diffs are folded; open one to read it.

replies: 3people: 3as markdown or json

Ákos Uzonyi· Sep 25, 2020, 21:11 UTC · lore

In both _git_checkout and _git_switch a new "prevword" variable were introduced, however the "prev" variable already contains the last word.

The "prevword" variable is replaced with "prev", and the case is moved to the beginning of the function, like it's done in many other places (e.g. _git_commit). Also the indentaion of the case is fixed.

Signed-off-by: Ákos Uzonyi <uzonyi.akos@gmail.com>
---
 contrib/completion/git-completion.bash | 66 +++++++++++++-------------
 1 file changed, 32 insertions(+), 34 deletions(-)
Show changes to contrib/completion/git-completion.bash +32 −34
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 8be4a0316e..3d02bd4de7 100644
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -1508,6 +1508,22 @@ _git_checkout ()
 {
 	__git_has_doubledash && return
 
+	local dwim_opt="$(__git_checkout_default_dwim_mode)"
+
+	case "$prev" in
+	-b|-B|--orphan)
+		# Complete local branches (and DWIM branch
+		# remote branch names) for an option argument
+		# specifying a new branch name. This is for
+		# convenience, assuming new branches are
+		# possibly based on pre-existing branch names.
+		__git_complete_refs $dwim_opt --mode="heads"
+		return
+		;;
+	*)
+		;;
+	esac
+
 	case "$cur" in
 	--conflict=*)
 		__gitcomp "diff3 merge" "" "${cur##--conflict=}"
@@ -1516,23 +1532,6 @@ _git_checkout ()
 		__gitcomp_builtin checkout
 		;;
 	*)
-		local dwim_opt="$(__git_checkout_default_dwim_mode)"
-		local prevword prevword="${words[cword-1]}"
-
-		case "$prevword" in
-			-b|-B|--orphan)
-				# Complete local branches (and DWIM branch
-				# remote branch names) for an option argument
-				# specifying a new branch name. This is for
-				# convenience, assuming new branches are
-				# possibly based on pre-existing branch names.
-				__git_complete_refs $dwim_opt --mode="heads"
-				return
-				;;
-			*)
-				;;
-		esac
-
 		# At this point, we've already handled special completion for
 		# the arguments to -b/-B, and --orphan. There are 3 main
 		# things left we can possibly complete:
@@ -2392,6 +2391,22 @@ _git_status ()
 
 _git_switch ()
 {
+	local dwim_opt="$(__git_checkout_default_dwim_mode)"
+
+	case "$prev" in
+	-c|-C|--orphan)
+		# Complete local branches (and DWIM branch
+		# remote branch names) for an option argument
+		# specifying a new branch name. This is for
+		# convenience, assuming new branches are
+		# possibly based on pre-existing branch names.
+		__git_complete_refs $dwim_opt --mode="heads"
+		return
+		;;
+	*)
+		;;
+	esac
+
 	case "$cur" in
 	--conflict=*)
 		__gitcomp "diff3 merge" "" "${cur##--conflict=}"
@@ -2400,23 +2415,6 @@ _git_switch ()
 		__gitcomp_builtin switch
 		;;
 	*)
-		local dwim_opt="$(__git_checkout_default_dwim_mode)"
-		local prevword prevword="${words[cword-1]}"
-
-		case "$prevword" in
-			-c|-C|--orphan)
-				# Complete local branches (and DWIM branch
-				# remote branch names) for an option argument
-				# specifying a new branch name. This is for
-				# convenience, assuming new branches are
-				# possibly based on pre-existing branch names.
-				__git_complete_refs $dwim_opt --mode="heads"
-				return
-				;;
-			*)
-				;;
-		esac
-
 		# Unlike in git checkout, git switch --orphan does not take
 		# a start point. Thus we really have nothing to complete after
 		# the branch name.
-- 
2.28.0
Ákos Uzonyi· Sep 25, 2020, 21:11 UTC · re: Ákos Uzonyi · lore

[PATCH v2 2/2] completion: complete refs after 'git restore -s'

Currently only the long version (--source=) supports completion.
Add completion support to the short (-s) option too.
Signed-off-by: Ákos Uzonyi <uzonyi.akos@gmail.com>
---
 contrib/completion/git-completion.bash | 7 +++++++
 1 file changed, 7 insertions(+)
Show changes to contrib/completion/git-completion.bash +7 −0
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 3d02bd4de7..0a96ad87e7 100644
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -2841,6 +2841,13 @@ _git_reset ()
 
 _git_restore ()
 {
+	case "$prev" in
+	-s)
+		__git_complete_refs
+		return
+		;;
+	esac
+
 	case "$cur" in
 	--conflict=*)
 		__gitcomp "diff3 merge" "" "${cur##--conflict=}"
-- 
2.28.0
Jacob Keller· Sep 25, 2020, 22:53 UTC · re: Ákos Uzonyi · lore

Re: [PATCH v2 1/2] completion: use "prev" variable instead of introducing "prevword"

On Fri, Sep 25, 2020 at 3:00 PM Ákos Uzonyi <uzonyi.akos@gmail.com> wrote:
Show 8 quoted lines
>
> In both _git_checkout and _git_switch a new "prevword" variable were
> introduced, however the "prev" variable already contains the last word.
>
> The "prevword" variable is replaced with "prev", and the case is moved
> to the beginning of the function, like it's done in many other places
> (e.g. _git_commit). Also the indentaion of the case is fixed.
>
Ahhh... didn't realize $prev existed.
Show 106 quoted lines
> Signed-off-by: Ákos Uzonyi <uzonyi.akos@gmail.com>
> ---
>  contrib/completion/git-completion.bash | 66 +++++++++++++-------------
>  1 file changed, 32 insertions(+), 34 deletions(-)
>
> diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
> index 8be4a0316e..3d02bd4de7 100644
> --- a/contrib/completion/git-completion.bash
> +++ b/contrib/completion/git-completion.bash
> @@ -1508,6 +1508,22 @@ _git_checkout ()
>  {
>         __git_has_doubledash && return
>
> +       local dwim_opt="$(__git_checkout_default_dwim_mode)"
> +
> +       case "$prev" in
> +       -b|-B|--orphan)
> +               # Complete local branches (and DWIM branch
> +               # remote branch names) for an option argument
> +               # specifying a new branch name. This is for
> +               # convenience, assuming new branches are
> +               # possibly based on pre-existing branch names.
> +               __git_complete_refs $dwim_opt --mode="heads"
> +               return
> +               ;;
> +       *)
> +               ;;
> +       esac
> +
>         case "$cur" in
>         --conflict=*)
>                 __gitcomp "diff3 merge" "" "${cur##--conflict=}"
> @@ -1516,23 +1532,6 @@ _git_checkout ()
>                 __gitcomp_builtin checkout
>                 ;;
>         *)
> -               local dwim_opt="$(__git_checkout_default_dwim_mode)"
> -               local prevword prevword="${words[cword-1]}"
> -
> -               case "$prevword" in
> -                       -b|-B|--orphan)
> -                               # Complete local branches (and DWIM branch
> -                               # remote branch names) for an option argument
> -                               # specifying a new branch name. This is for
> -                               # convenience, assuming new branches are
> -                               # possibly based on pre-existing branch names.
> -                               __git_complete_refs $dwim_opt --mode="heads"
> -                               return
> -                               ;;
> -                       *)
> -                               ;;
> -               esac
> -
>                 # At this point, we've already handled special completion for
>                 # the arguments to -b/-B, and --orphan. There are 3 main
>                 # things left we can possibly complete:
> @@ -2392,6 +2391,22 @@ _git_status ()
>
>  _git_switch ()
>  {
> +       local dwim_opt="$(__git_checkout_default_dwim_mode)"
> +
> +       case "$prev" in
> +       -c|-C|--orphan)
> +               # Complete local branches (and DWIM branch
> +               # remote branch names) for an option argument
> +               # specifying a new branch name. This is for
> +               # convenience, assuming new branches are
> +               # possibly based on pre-existing branch names.
> +               __git_complete_refs $dwim_opt --mode="heads"
> +               return
> +               ;;
> +       *)
> +               ;;
> +       esac
> +
>         case "$cur" in
>         --conflict=*)
>                 __gitcomp "diff3 merge" "" "${cur##--conflict=}"
> @@ -2400,23 +2415,6 @@ _git_switch ()
>                 __gitcomp_builtin switch
>                 ;;
>         *)
> -               local dwim_opt="$(__git_checkout_default_dwim_mode)"
> -               local prevword prevword="${words[cword-1]}"
> -
> -               case "$prevword" in
> -                       -c|-C|--orphan)
> -                               # Complete local branches (and DWIM branch
> -                               # remote branch names) for an option argument
> -                               # specifying a new branch name. This is for
> -                               # convenience, assuming new branches are
> -                               # possibly based on pre-existing branch names.
> -                               __git_complete_refs $dwim_opt --mode="heads"
> -                               return
> -                               ;;
> -                       *)
> -                               ;;
> -               esac
> -
>                 # Unlike in git checkout, git switch --orphan does not take
>                 # a start point. Thus we really have nothing to complete after
>                 # the branch name.
> --
> 2.28.0
>
Junio C Hamano· Sep 26, 2020, 22:31 UTC · re: Jacob Keller · lore

Re: [PATCH v2 1/2] completion: use "prev" variable instead of introducing "prevword"

Jacob Keller <jacob.keller@gmail.com> writes:
Show 11 quoted lines
> On Fri, Sep 25, 2020 at 3:00 PM Ákos Uzonyi <uzonyi.akos@gmail.com> wrote:
>>
>> In both _git_checkout and _git_switch a new "prevword" variable were
>> introduced, however the "prev" variable already contains the last word.
>>
>> The "prevword" variable is replaced with "prev", and the case is moved
>> to the beginning of the function, like it's done in many other places
>> (e.g. _git_commit). Also the indentaion of the case is fixed.
>>
>
> Ahhh... didn't realize $prev existed.
Yup, makes a lot of sense.
Thanks, Ákos.  Will queue.
Show 107 quoted lines
>
>> Signed-off-by: Ákos Uzonyi <uzonyi.akos@gmail.com>
>> ---
>>  contrib/completion/git-completion.bash | 66 +++++++++++++-------------
>>  1 file changed, 32 insertions(+), 34 deletions(-)
>>
>> diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
>> index 8be4a0316e..3d02bd4de7 100644
>> --- a/contrib/completion/git-completion.bash
>> +++ b/contrib/completion/git-completion.bash
>> @@ -1508,6 +1508,22 @@ _git_checkout ()
>>  {
>>         __git_has_doubledash && return
>>
>> +       local dwim_opt="$(__git_checkout_default_dwim_mode)"
>> +
>> +       case "$prev" in
>> +       -b|-B|--orphan)
>> +               # Complete local branches (and DWIM branch
>> +               # remote branch names) for an option argument
>> +               # specifying a new branch name. This is for
>> +               # convenience, assuming new branches are
>> +               # possibly based on pre-existing branch names.
>> +               __git_complete_refs $dwim_opt --mode="heads"
>> +               return
>> +               ;;
>> +       *)
>> +               ;;
>> +       esac
>> +
>>         case "$cur" in
>>         --conflict=*)
>>                 __gitcomp "diff3 merge" "" "${cur##--conflict=}"
>> @@ -1516,23 +1532,6 @@ _git_checkout ()
>>                 __gitcomp_builtin checkout
>>                 ;;
>>         *)
>> -               local dwim_opt="$(__git_checkout_default_dwim_mode)"
>> -               local prevword prevword="${words[cword-1]}"
>> -
>> -               case "$prevword" in
>> -                       -b|-B|--orphan)
>> -                               # Complete local branches (and DWIM branch
>> -                               # remote branch names) for an option argument
>> -                               # specifying a new branch name. This is for
>> -                               # convenience, assuming new branches are
>> -                               # possibly based on pre-existing branch names.
>> -                               __git_complete_refs $dwim_opt --mode="heads"
>> -                               return
>> -                               ;;
>> -                       *)
>> -                               ;;
>> -               esac
>> -
>>                 # At this point, we've already handled special completion for
>>                 # the arguments to -b/-B, and --orphan. There are 3 main
>>                 # things left we can possibly complete:
>> @@ -2392,6 +2391,22 @@ _git_status ()
>>
>>  _git_switch ()
>>  {
>> +       local dwim_opt="$(__git_checkout_default_dwim_mode)"
>> +
>> +       case "$prev" in
>> +       -c|-C|--orphan)
>> +               # Complete local branches (and DWIM branch
>> +               # remote branch names) for an option argument
>> +               # specifying a new branch name. This is for
>> +               # convenience, assuming new branches are
>> +               # possibly based on pre-existing branch names.
>> +               __git_complete_refs $dwim_opt --mode="heads"
>> +               return
>> +               ;;
>> +       *)
>> +               ;;
>> +       esac
>> +
>>         case "$cur" in
>>         --conflict=*)
>>                 __gitcomp "diff3 merge" "" "${cur##--conflict=}"
>> @@ -2400,23 +2415,6 @@ _git_switch ()
>>                 __gitcomp_builtin switch
>>                 ;;
>>         *)
>> -               local dwim_opt="$(__git_checkout_default_dwim_mode)"
>> -               local prevword prevword="${words[cword-1]}"
>> -
>> -               case "$prevword" in
>> -                       -c|-C|--orphan)
>> -                               # Complete local branches (and DWIM branch
>> -                               # remote branch names) for an option argument
>> -                               # specifying a new branch name. This is for
>> -                               # convenience, assuming new branches are
>> -                               # possibly based on pre-existing branch names.
>> -                               __git_complete_refs $dwim_opt --mode="heads"
>> -                               return
>> -                               ;;
>> -                       *)
>> -                               ;;
>> -               esac
>> -
>>                 # Unlike in git checkout, git switch --orphan does not take
>>                 # a start point. Thus we really have nothing to complete after
>>                 # the branch name.
>> --
>> 2.28.0
>>

← back to recent threads