From: "Benjamin R. Haskell" <zsh@benizi.com>
To: Conrad Irwin <conrad.irwin@gmail.com>
Cc: zsh-users@zsh.org
Subject: Re: _git Completion and custom commands
Date: Tue, 28 Sep 2010 00:06:32 -0400 (EDT) [thread overview]
Message-ID: <alpine.LNX.2.01.1009272342180.30023@hp> (raw)
In-Reply-To: <AANLkTimE+8OYZXmpmdepsY-WkLjSkE+VB3hdQpBQ0p_c@mail.gmail.com>
[-- Attachment #1: Type: TEXT/PLAIN, Size: 1716 bytes --]
On Tue, 28 Sep 2010, Conrad Irwin wrote:
> Hi Zsh,
>
> I finally got round to trying out zsh today, and wow is it cool — I
> don't believe I've been stuck on bash for all this time :).
>
> The one issue I've found is that the _git completion function (as of
> 4.3.10 shipped with Debian testing) does not include custom commands
> (though it does include aliases).
>
> (For those of you unfamiliar with git, any executable in your path
> with a name like git-* can be called as git * with no hyphen)
>
> 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-} ).
--
Best,
Ben
P.S. Played around a bit with (k), and [(MIRK)*], but couldn't seem to
find a way to not repeat the 'git-' pattern. I'm sure a veteran could
do it effortlessly.
P.P.S. I found it a bit odd that:
print -l ${(<Tab>
completes glob qualifiers rather than parameter expansion flags.
next prev parent reply other threads:[~2010-09-28 4:07 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-28 0:29 Conrad Irwin
2010-09-28 4:06 ` Benjamin R. Haskell [this message]
2010-09-28 5:28 ` Sebastian Stark
2010-09-28 6:30 ` Benjamin R. Haskell
2010-09-28 8:03 ` Frank Terbeck
2010-09-28 18:01 ` Conrad Irwin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.LNX.2.01.1009272342180.30023@hp \
--to=zsh@benizi.com \
--cc=conrad.irwin@gmail.com \
--cc=zsh-users@zsh.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).