threads / discuss / 55446

Shell completion for branch names

Subject: Shell completion for branch names

## tl;dr

3 messages between Apr 7, 2021 and Apr 7, 2021.

replies: 2people: 3as markdown or json

jost.schulte@tutanota.com· Apr 7, 2021, 14:23 UTC · lore
Hello guys,
I have a question regarding git-completion. I'm using zsh and have added the function .git-completion.bash. That gives me some auto-completion for branch names.
What I'm looking for: I have a branch named "feature/issue-123-add-feature" for example. I'd like to type "git switch 123[tab]". Is there some function out there that provides this?

Cheers Jost

Junio C Hamano· Apr 7, 2021, 19:52 UTC · re: jost.schulte@tutanota.com · lore

Re: Shell completion for branch names

jost.schulte@tutanota.com writes:
Show 8 quoted lines
> I have a question regarding git-completion. I'm using zsh and have
> added the function .git-completion.bash. That gives me some
> auto-completion for branch names.
>
> What I'm looking for: I have a branch named
> "feature/issue-123-add-feature" for example. I'd like to type "git
> switch 123[tab]". Is there some function out there that provides
> this?

I am not an area expert for shell completion, but as a mere user, unless the shell completion in a directory where I have README.txt file, responds to

    $ cat EAD<TAB>
and completes the request to
    $ cat README.txt
I would find such a behaviour quite confusing.
On the other hand if
    $ git log feat<TAB>
expands to
    $ git log feature/issue-

then another <TAB> after that would offer 123-add-feature and 143-fix as candidates, or instead of <TAB> if I type "123<TAB>" and get it expanded to the full feature/issue-123-add-feature, then I wouldn't find it confusing or unnatural.

Jeff King· Apr 7, 2021, 20:00 UTC · re: jost.schulte@tutanota.com · lore

Re: Shell completion for branch names

On Wed, Apr 07, 2021 at 04:23:16PM +0200, jost.schulte@tutanota.com wrote:
Show 7 quoted lines
> I have a question regarding git-completion. I'm using zsh and have
> added the function .git-completion.bash. That gives me some
> auto-completion for branch names.
> 
> What I'm looking for: I have a branch named
> "feature/issue-123-add-feature" for example. I'd like to type "git
> switch 123[tab]". Is there some function out there that provides this?

Generally completion is done left-to-right for a partial string. The thing you are asking about is usually called "fuzzy" completion. You can use that term to find some discussion and tools that may help (e.g., [1]). I don't use any myself, so I can't comment on the quality.

I'm also not sure if they can be used with custom completions like the one Git provides. One of the things Git's completion code does is turning those partial strings into a full set of options. In theory a fuzzy completion system could just feed Git's completion code an empty string to get all possibilities, and then do its own fuzzy match against it. But again, I don't know if anybody has written the glue code to do that kind of thing.

-Peff
[1] https://github.com/junegunn/fzf#fuzzy-completion-for-bash-and-zsh

← back to recent threads