Git bash завершение не завершает git команды, как ожидалось - PullRequest
3 голосов
/ 25 марта 2020

После настройки поддержки завершения bash для git (версия 2.14.5 в Slackware Linux 14.2) с использованием файла contrib/completion/git-completion.bash из главного репозитория git, как описано и уже Для других команд я ожидал получить git команд в качестве слов завершения при обычном использовании TAB-завершение совпадений, подобных для git [TAB][TAB]. Например:

$ git c[TAB][TAB]
checkout commit clone ...

Вместо получения каких-либо git команд , таких как checkout, commit, или иначе, предлагаются или заканчиваются только имена файлов. Принимая во внимание, что при запросе завершения с тире, такими как git --b[TAB][TAB], тогда git опции , такие как --bare, предлагаются или заканчиваются хорошо.

Я знаю, есть много подобных вопросов там, но, несмотря на поиск ответов, я не мог найти правильное решение для решения этой проблемы.

  • Файл git-completion.bash поставлен правильно; после получения . git-completion.bash его функции доступны в исполняющей среде bash, как показывает declare -f.
  • Параметр оболочки progcomp равен on.
  • git функция завершения зарегистрирована как выход complete -p git показывает:
    $ complete -p git
    complete -o bashdefault -o default -o nospace -F __git_wrap__git_main git
    
  • После проверки файла git-completion.bash, я могу сказать, вызывается функция завершения __git_wrap__git_main при git [TAB] попаданиях, но переменная COMPREPLY не заполняется словами завершения при запросе завершения без двойных черточек --*

Кто-нибудь имеет представление, почему только git опции завершены, в то время как git команды не выполнены?

1 Ответ

0 голосов
/ 26 марта 2020

Поскольку Git 2.14, было много улучшений до завершения (Git 2.18 , особенно), я сначала проверил бы, сохраняется ли та же проблема с Git 2.26 (возможно, , используя slpkg )

contrib/completion/git-completion.bash имеет богатую и недавнюю историю .

...