Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: _git Completion and custom commands



Am 28.09.2010 um 06:06 schrieb Benjamin R. Haskell:
>> My question is then: how would I add my custom commands' names to the list already completed by _git (without completely overriding or modifying the system-wide configuration)?
> 
> This has bothered me for a while, too.  I think _git should include these by default.  But, it's pretty easy to add:
> 
> zstyle ':completion:*:git:*' user-commands ${${(k)commands[(I)git-*]}#git-}
> 
> (I've found _git to be very about what it allows you to override via zstyles)
> 
> Explanation of the '${${(k)commands[(I)git-*]}#git-}' portion:
> 
> $commands is a built-in associative array that maps basenames to their full paths.
> 
> E.g. one of my custom git- commands that it picks up is:
> commands[git-build-zsh]=/home/bhaskell/bin/git-build-zsh
> 
> So, we're looking for the keys '(k)'.  And we only want entries in the hash that have (I)ndexes matching 'git-*'.  Then we want to remove the leading 'git-' portion ( ${...#git-} ).

All this is just because then you can type "git bu<TAB>" instead of "git-bu<TAB>"? Or is there more to it? Perhaps I do not understand.


Sebastian


Messages sorted by: Reverse Date, Date, Thread, Author