completion: git-completion 1.3.1 patches
These patches represent what comprises git-completion 1.3.1, a friendly fork I'm maintaining.
Some of these have already been sent, and should be in "seen", but for some reason they are not [1]. Others have been sent, but probably won't receive any review soon.
Since the patches for git-completion 1.3.0 the only differece is a rebase on top of v2.31.0.
Cheers.
[1] https://lore.kernel.org/git/5fea87e816fff_23821208d4@natae.notmuch/
Felipe Contreras (45): completion: fix __git_cmd_idx regression completion: bash: fix prefix detection in branch.* completion: fix for suboptions with value completion: bash: fix for multiple dash commands completion: bash: add correct suffix in variables completion: zsh: add higher-priority location completion: zsh: trivial improvement completion: bash: do not modify COMP_WORDBREAKS test: completion: fix currently typed words test: completion: switch __gitcomp_nl prefix test test: completion: add run_func() helper completion: bash: remove non-append functionality completion: bash: get rid of _append() functions completion: bash: get rid of any non-append code completion: zsh: fix options with arguments completion: zsh: expand --git-dir file argument completion: zsh: add support for general -C opts completion: zsh: fix for undefined completions completion: zsh: add support for general -c opts completion: zsh: fix extra space on foo= completion: zsh: add excluded options completion: zsh: always set compset completion: factor out check in __gitcomp completion: simplify equal suffix check completion: refactor __gitcomp completion: simplify __gitcomp completion: bash: change suffix check in __gitcomp completion: improve __gitcomp suffix code completion: bash: simplify config_variable_name test: completion: add missing test completion: bash: improve __gitcomp description completion: add __gitcomp_opts completion: bash: cleanup __gitcomp* invocations completion: bash: shuffle __gitcomp functions completion: zsh: simplify __gitcomp_direct completion: zsh: shuffle __gitcomp* functions completion: zsh: fix direct quoting completion: zsh: add elements individually in __gitcomp_opts completion: zsh: add __gitcompadd helper completion: zsh: add correct removable suffix completion: bash: simplify _get_comp_words_by_ref() completion: bash: refactor _get_comp_words_by_ref() completion: bash: cleanup _get_comp_words_by_ref() completion: bash: trivial cleanup completion: bash: rename _get_comp_words_by_ref()
contrib/completion/git-completion.bash | 642 +++++++++++-------------- contrib/completion/git-completion.zsh | 141 +++--- t/t9902-completion.sh | 159 +++--- 3 files changed, 435 insertions(+), 507 deletions(-)
Range-diff against v1:
-: ---------- > 1: 68e7376872 completion: fix __git_cmd_idx regression
1: f318584861 = 2: f942d5884a completion: bash: fix prefix detection in branch.*
2: ce536d6e53 = 3: c073c68d77 completion: fix for suboptions with value
3: 50a4e412d3 = 4: 60596a5f3a completion: bash: fix for multiple dash commands
4: bf7dfb35d1 = 5: 40f67ea5fd completion: bash: add correct suffix in variables
43: 8f1399c468 = 6: 20c22f5337 completion: zsh: add higher-priority location
-: ---------- > 7: 120a675092 completion: zsh: trivial improvement
5: 6338c510b4 = 8: c58f5f8649 completion: bash: do not modify COMP_WORDBREAKS
6: ab79e84b26 = 9: 46bfd0d7ca test: completion: fix currently typed words
7: da3b5837df = 10: 4f44215d5e test: completion: switch __gitcomp_nl prefix test
8: 1f2278ea0f ! 11: 99954f41d4 test: completion: add run_func() helper
@@ t/t9902-completion.sh: test_path_completion ()
test_cmp expected out
}
@@ t/t9902-completion.sh: do
- (
words=(git push '$flag' other ma) &&
cword=${#words[@]} cur=${words[cword-1]} &&
+ __git_cmd_idx=1 &&
- __git_complete_remote_or_refspec &&
- print_comp
+ run_func __git_complete_remote_or_refspec
@@ t/t9902-completion.sh: do
test_cmp expected out
'
@@ t/t9902-completion.sh: do
- (
words=(git push other '$flag' ma) &&
cword=${#words[@]} cur=${words[cword-1]} &&
+ __git_cmd_idx=1 &&
- __git_complete_remote_or_refspec &&
- print_comp
+ run_func __git_complete_remote_or_refspec
9: 106cbd3e72 = 12: 3e2ea37938 completion: bash: remove non-append functionality
10: 5145f47503 = 13: d1162c8aa7 completion: bash: get rid of _append() functions
11: 1bf917c007 = 14: ca88e56fa2 completion: bash: get rid of any non-append code
12: ef1d6a3037 = 15: 54c3401eee completion: zsh: fix options with arguments
13: b8d3bcb7a0 = 16: 3bca7df93a completion: zsh: expand --git-dir file argument
14: 89599ea5da ! 17: 2a3a5c3220 completion: zsh: add support for general -C opts
@@ contrib/completion/git-completion.zsh: __git_zsh_main ()
{
local curcontext="$curcontext" state state_descr line
typeset -A opt_args
-- local -a orig_words
-+ local -a orig_words __git_C_args
-
- orig_words=( ${words[@]} )
++ local -a __git_C_args
+ _arguments -C \
+ '(-p --paginate --no-pager)'{-p,--paginate}'[pipe all output into ''less'']' \
@@ contrib/completion/git-completion.zsh: __git_zsh_main ()
'--namespace=[set the git namespace]:' \
'--no-replace-objects[do not use replacement refs to replace git objects]' \
@@ contrib/completion/git-completion.zsh: __git_zsh_main ()
+
(( $+opt_args[--help] )) && command='help'
- words=( ${orig_words[@]} )
+ words=( git ${words[@]} )
15: ebc2bf8df1 = 18: 1bfe88f60c completion: zsh: fix for undefined completions
16: 4e2762f040 = 19: ad75eccb20 completion: zsh: add support for general -c opts
17: b856d42169 = 20: d1587d19f7 completion: zsh: fix extra space on foo=
18: d61682bc45 ! 21: a18f9d962b completion: zsh: add excluded options
@@ Commit message
## contrib/completion/git-completion.zsh ##
@@ contrib/completion/git-completion.zsh: __git_zsh_main ()
- orig_words=( ${words[@]} )
+ local -a __git_C_args
_arguments -C \
- '(-p --paginate --no-pager)'{-p,--paginate}'[pipe all output into ''less'']' \
19: 07819100c1 = 22: c824921fa5 completion: zsh: always set compset
20: 391372ddf7 = 23: daf7bc19bb completion: factor out check in __gitcomp
21: 1fd7477427 = 24: 41a9cd3e8d completion: simplify equal suffix check
22: fc7bcb5122 = 25: dd47842d0d completion: refactor __gitcomp
23: 85b5e719c7 = 26: 674a7ca73b completion: simplify __gitcomp
24: 30124bf50f = 27: f3f77bb5a6 completion: bash: change suffix check in __gitcomp
25: 70653f57c0 = 28: 81e518f5a7 completion: improve __gitcomp suffix code
26: ae6bab5e4f = 29: 9b3242d412 completion: bash: simplify config_variable_name
27: f67cc99935 = 30: 869fafc5a7 test: completion: add missing test
28: 17bc28a487 = 31: 7b1b05352f completion: bash: improve __gitcomp description
29: 69f6533ef8 ! 32: 282221f9b6 completion: add __gitcomp_opts
@@ contrib/completion/git-completion.bash: _git_sparse_checkout ()
;;
*)
;;
-@@ contrib/completion/git-completion.bash: _git_stash ()
- if [ -z "$subcommand" ]; then
- case "$cur" in
- --*)
-- __gitcomp "$save_opts"
-+ __gitcomp_opts "$save_opts"
- ;;
- sa*)
- if [ -z "$(__git_find_on_cmdline "$save_opts")" ]; then
-@@ contrib/completion/git-completion.bash: _git_stash ()
- else
- case "$subcommand,$cur" in
- push,--*)
-- __gitcomp "$save_opts --message"
-+ __gitcomp_opts "$save_opts --message"
- ;;
- save,--*)
-- __gitcomp "$save_opts"
-+ __gitcomp_opts "$save_opts"
- ;;
- apply,--*|pop,--*)
-- __gitcomp "--index --quiet"
-+ __gitcomp_opts "--index --quiet"
- ;;
- drop,--*)
-- __gitcomp "--quiet"
-+ __gitcomp_opts "--quiet"
- ;;
- list,--*)
-- __gitcomp "--name-status --oneline --patch-with-stat"
-+ __gitcomp_opts "--name-status --oneline --patch-with-stat"
- ;;
- show,--*)
-- __gitcomp "$__git_diff_common_options"
-+ __gitcomp_opts "$__git_diff_common_options"
- ;;
- branch,--*)
- ;;
@@ contrib/completion/git-completion.bash: _git_submodule ()
if [ -z "$subcommand" ]; then
case "$cur" in
@@ contrib/completion/git-completion.bash: _git_svn ()
*)
;;
@@ contrib/completion/git-completion.bash: __git_main ()
- ;;
esac
case "$cur" in
-- --*) __gitcomp "
-+ --*) __gitcomp_opts "
+ --*)
+- __gitcomp "
++ __gitcomp_opts "
--paginate
--no-pager
--git-dir=
30: a1a9dbb915 = 33: 2d00a52d65 completion: bash: cleanup __gitcomp* invocations
31: 9c17b3d3af = 34: c34a4e0f93 completion: bash: shuffle __gitcomp functions
32: 37f2c72c9e = 35: 12de564dae completion: zsh: simplify __gitcomp_direct
33: 57ef037e81 = 36: 5c8aa847da completion: zsh: shuffle __gitcomp* functions
34: ecb79bc877 = 37: b2e1bb7a02 completion: zsh: fix direct quoting
35: ae49a7c597 = 38: 43c3374fb2 completion: zsh: add elements individually in __gitcomp_opts
36: 135f68ca27 = 39: a1f335b841 completion: zsh: add __gitcompadd helper
37: e4f8591b72 = 40: 1416f590a7 completion: zsh: add correct removable suffix
38: 49217d4aa3 = 41: 081982e432 completion: bash: simplify _get_comp_words_by_ref()
39: ef00c6e76e = 42: 2bd0507a7a completion: bash: refactor _get_comp_words_by_ref()
40: 993d5c83ae = 43: 188c8749cc completion: bash: cleanup _get_comp_words_by_ref()
41: 8b13e46fd3 = 44: e08dc59d07 completion: bash: trivial cleanup
42: 658b5cccc8 ! 45: 893c8527d6 completion: bash: rename _get_comp_words_by_ref()
@@ contrib/completion/git-completion.bash: if [[ -n ${ZSH_VERSION-} && -z ${GIT_SOU
+
__git_func_wrap ()
{
- local cur words cword prev
+ local cur words cword prev __git_cmd_idx=1
- _get_comp_words_by_ref -n =: cur words cword prev
+ __git_get_comp_words_by_ref
$1-- 2.32.0