Hello Bart, On 07.04.2015 01:56, Bart Schaefer wrote: > On Apr 6, 9:14pm, Jochen Keil wrote: > } > } Can I somehow just add my own completion function for > } `git commit --fixup` without copying over the whole thing? > > Something like the following should work: > > Create a file named _git and place it in a directory that appears early > enough in your $fpath that your _git will be autoloaded before the one > supplied with zsh. That file contains > > #--- 8< --- > local -a gitpaths > gitpaths=( $^fpath/_git(N) ) > source $gitpaths[2] || return > > # Now we've loaded _git, override a function therein > __git_commit_tags () { > commits=("${(@f)$(git log --pretty=format:'%h:%s')}") > _describe 'commits' commits > } > > _git "$@" > #--- 8< --- Unfortunately this doesn't work for me, it leaves me with no git completion at all. Sorry if it wasn't clear enough, but `__git_commit_tags` is my own function, the default `_argument` call has no function at all. Additionally, I had the impression that `source`-ing completion scripts is not a best practice? > If you need to add/replace an argument in one of the embedded _arguments > calls, you'll likely have to duplicate and override the whole function > that makes that particular call; you can do some source-editing tricks > using the $functions parameter from the zsh/parameter module, but it'd > be a bit ugly. That's what I'm doing right now, I've duplicated the function and replaced/extending the `_argument` call. Works fine, apart from the code duplication, so I'm probably going to stick to it. > } In addition, I've seen that the dev branch already has completion > } support for `--fixup`. In case I don't like it when it hits the next > } release, is there a way to override just this specific completion? > > You can substitute in pretty much anything by using the "completer" > zstyle; just put your completer first in the list, and make sure it > returns nonzero any time it wants the "regular" completers such as > _complete to take over. Thanks, I will try that out as soon as the default completer comes with a function for completing `git commit --fixup`. Thank you very much and all the best, Jochen
Attachment:
signature.asc
Description: OpenPGP digital signature