@@ -6,7 +6,7 @@ give_comps() {
66 echo $' # Modifying it manually is not recommended'
77 echo $' '
88 echo $' _mygit_completions_filter() {'
9- echo $' local words="$1" '
9+ echo $' local words=("$@") '
1010 echo $' local cur=${COMP_WORDS[COMP_CWORD]}'
1111 echo $' local result=()'
1212 echo $' '
@@ -18,12 +18,12 @@ give_comps() {
1818 echo $' '
1919 echo $' if [[ "${cur:0:1}" == "-" ]]; then'
2020 echo $' # Completing an option: offer everything (including options)'
21- echo $' echo "$ words" '
21+ echo $' result=("${ words[@]}") '
2222 echo $' '
2323 echo $' else'
2424 echo $' # Completing a non-option: offer only non-options,'
2525 echo $' # and don\' t re-offer ones already used earlier in the line.'
26- echo $' for word in $ words; do'
26+ echo $' for word in "${ words[@]}" ; do'
2727 echo $' [[ "${word:0:1}" == "-" ]] && continue'
2828 echo $' '
2929 echo $' local seen=0'
@@ -35,9 +35,15 @@ give_comps() {
3535 echo $' done'
3636 echo $' ((!seen)) && result+=("$word")'
3737 echo $' done'
38- echo $' '
39- echo $' echo "${result[*]}"'
4038 echo $' fi'
39+ echo $' '
40+ echo $' local escaped=()'
41+ echo $' for word in "${result[@]}"; do'
42+ echo $' printf -v word \' %q\' "$word"'
43+ echo $' escaped+=("$word")'
44+ echo $' done'
45+ echo $' '
46+ echo $' echo "${escaped[*]}"'
4147 echo $' }'
4248 echo $' '
4349 echo $' _mygit_completions() {'
@@ -60,15 +66,15 @@ give_comps() {
6066 echo $' ;;'
6167 echo $' '
6268 echo $' \' status\' *)'
63- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_mygit_completions_filter "--help --verbose --branch -b")" -- "$cur")'
69+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_mygit_completions_filter "--help" " --verbose" " --branch" " -b")" -- "$cur")'
6470 echo $' ;;'
6571 echo $' '
6672 echo $' \' init\' *)'
6773 echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -A directory -W "$(_mygit_completions_filter "--bare")" -- "$cur")'
6874 echo $' ;;'
6975 echo $' '
7076 echo $' *)'
71- echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_mygit_completions_filter "-h -v --help --version init status")" -- "$cur")'
77+ echo $' while read -r; do COMPREPLY+=("$REPLY"); done < <(compgen -W "$(_mygit_completions_filter "-h" "-v" " --help" " --version" " init" " status")" -- "$cur")'
7278 echo $' ;;'
7379 echo $' '
7480 echo $' esac'
0 commit comments