Re: [PATCH] completion: zsh: trivial improvement

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



SZEDER Gábor wrote:
> On Mon, Jun 07, 2021 at 09:38:07PM -0500, Felipe Contreras wrote:
> > $words has basically all the words we need, except the first one: git.
> > 
> > Lets simply add that instead of passing the original, which contains
> > options we don't want to pass downstream (like --git-dir).
> 
> In our Bash completion script $words contains all words of the current
> command on the command line, including 'git -C tmp -c foo.bar=baz'.
> 
> Why should zsh completion behave differently?

Because we use the _arguments function [1]. It changes the $words array
and removes all the arguments it was able to parse. All that remains is
that which it didn't understand.

If you do:

  git --git-dir=x show --<tab>

_arguments will remove 'git --git-dir=x'. And there is no point in
passing '--git-dir=x' to _git_show. It provides no useful information,
and it was already processed by __git_zsh_main and __git_dir is set.

__git_main doesn't need to change $words, but it does increase
__git_cmd_idx to match the position of the command.

But since in the zsh case _argments already modified $words, we can just
add 'git' to the start and always use __git_cmd_idx=1.

[1] https://zsh.sourceforge.io/Doc/Release/Completion-System.html#Completion-Functions

-- 
Felipe Contreras



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux