]> git.ipfire.org Git - thirdparty/git.git/commitdiff
completion: complete general config vars in two steps
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>
Sun, 27 May 2018 18:28:00 +0000 (20:28 +0200)
committerJunio C Hamano <gitster@pobox.com>
Tue, 29 May 2018 05:51:29 +0000 (14:51 +0900)
There are 581 config variables as of now when you do "git config
<tab>" which can fill up a few screens and is not very helpful when
you have to look through columns of text to find what you want.

This patch instead shows you only first level when you do

    git config <tab>

There are 78 items, which use up 8 rows in my screen. Compared to
screens of text, it's pretty good. Once you have chosen you first
level, e.g. color:

    git config color.<tab>

will show you all color.*

This is not a new idea. branch.* and remote.* completion already does
this for second and third levels. For those variables, you'll need to
<tab> three times to get full variable name.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
contrib/completion/git-completion.bash

index 97776fb31af371fd92ae4471d6b5ec8dc417ccac..a6f55e856a14fe8d844b8ee419fcb72c8667039a 100644 (file)
@@ -2158,9 +2158,14 @@ _git_config ()
                __gitcomp "insteadOf pushInsteadOf" "$pfx" "$cur_"
                return
                ;;
+       *.*)
+               __git_compute_config_vars
+               __gitcomp "$__git_config_vars"
+               ;;
+       *)
+               __git_compute_config_vars
+               __gitcomp "$(echo "$__git_config_vars" | sed 's/\.[^ ]*/./g')"
        esac
-       __git_compute_config_vars
-       __gitcomp "$__git_config_vars"
 }
 
 _git_remote ()