Skip to contentSkip to conversation

complete: zsh: add missing sub cmd completion candidates

PATCH In review Terry via GitGitGadget 3 participants 3 messages Apr 17, 2020 – Oct 25, 2020

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 complete: zsh: add missing sub cmd completion candidates

From: Terry Moschou <[email protected]>

Add missing 'restore' and 'switch' sub commands to zsh completion candidate output. E.g.

  $ git re<tab>
  rebase    -- forward-port local commits to the updated upstream head
  reset     -- reset current HEAD to the specified state
  restore   -- restore working tree files
  $ git s<tab>
  show      -- show various types of objects
  status    -- show the working tree status
  switch    -- switch branches

---
complete: zsh: add missing sub cmd completion candidates

Add missing 'restore' and 'switch' sub commands to zsh completion candidate output. E.g.

$ git re<tab>
rebase -- forward-port local commits to the updated upstream head
reset -- reset current HEAD to the specified state
restore -- restore working tree files

$ git s<tab>
show -- show various types of objects
status -- show the working tree status
switch -- switch branches

Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-613%2Ftmoschou%2Fupdate-zsh-completion-script-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-613/tmoschou/update-zsh-completion-script-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/613

 contrib/completion/git-completion.zsh | 2 ++
 1 file changed, 2 insertions(+)
contrib/completion/git-completion.zsh +2 -0
index eef4eff53df..ce47e86b60c 100644
@@ -150,9 +150,11 @@ __git_zsh_cmd_common ()
 	push:'update remote refs along with associated objects'
 	rebase:'forward-port local commits to the updated upstream head'
 	reset:'reset current HEAD to the specified state'
+	restore:'restore working tree files'
 	rm:'remove files from the working tree and from the index'
 	show:'show various types of objects'
 	status:'show the working tree status'
+	switch:'switch branches'
 	tag:'create, list, delete or verify a tag object signed with GPG')
 	_describe -t common-commands 'common commands' list && _ret=0
 }

base-commit: de49261b050d9cd8ec73842356077bc5b606640f

Signature · 1 line
gitgitgadget
#1 lore raw
Quoted 6 lines · Terry via GitGitGadget
contrib/completion/git-completion.zsh +0 -0
index eef4eff53df..ce47e86b60c 100644
@@ -150,9 +150,11 @@ __git_zsh_cmd_common ()
 	push:'update remote refs along with associated objects'

contrib/completion/git-completion.zsh __git_zsh_cmd_common () · line 160

Quoted 10 lines
contrib/completion/git-completion.zsh +2 -0
 	rebase:'forward-port local commits to the updated upstream head'
 	reset:'reset current HEAD to the specified state'
+	restore:'restore working tree files'
 	rm:'remove files from the working tree and from the index'
 	show:'show various types of objects'
 	status:'show the working tree status'
+	switch:'switch branches'
 	tag:'create, list, delete or verify a tag object signed with GPG')
 	_describe -t common-commands 'common commands' list && _ret=0
 }

This is not a new issue, but it makes me wonder if we can initialize this list just once by running "git help" and picking up pieces from it. That way, we won't have to maintain this hardcoded list at all, no?

And if it is cumbersome to parse "git help" output, I do not think it is a worse solution than having to maintain the above list manually to add a new "--list-common-commands-for-zsh-completion" option to "git help" to produce something more easily parseable.

In any case, the patch is probably an improvement to make the list closer to what "git help" considers "common commands", but in the longer term, it may not be making it any better for maintainability.

Thanks.

#2 lore raw
Quoted 4 lines · Junio C Hamano

This is not a new issue, but it makes me wonder if we can initialize this list just once by running "git help" and picking up pieces from it. That way, we won't have to maintain this hardcoded list at all, no?

Yes, that would be nice, but what if the user has an older version of git without --list-cmds? No solution has been proposed for those cases in the bash script.

Most users of the zsh script are decoupled from the corresponding git version, and since you refused to graduate the scripts out of contrib, that gives distro maintainers the excuse not to automatically package the zsh script.

So no, given the current situation, I would rather keep updating them manually.

Signature · 1 line
Felipe Contreras