Mercurial > hg
comparison Makefile @ 32473:7a7c3369ee26
zsh_completion: install as _hg not hg
The contrib/zsh_completion file itself says to name it _hg.
With a name like `hg`, if the user has a line like `autoload ${^fpath}/*(N-.:t)`
in their zshrc, it will create a shell function named `hg` that will hide the
actual hg command and make hg unusable.
Separately from that though, the underscore prefix makes it actually work. The
zsh man page states:
The convention for autoloaded functions used in completion is that they
start with an underscore
This does not seem to just be a "convention", though. With the ill-advised line
removed from my zshrc and the file named
`/usr/local/share/zsh/site-functions/hg` (without the underscore), these
completions did not seem to get loaded and the ones from the zsh installation
were loaded instead. If I renamed them to be
`/usr/local/share/zsh/site-functions/_hg`, however, they were loaded.
I manually tested the above statement by starting a new zsh instance with the
file in `/usr/local/share/zsh/site-functions` with the following names:
- As `hg`, `which _hg_labels` did not show anything
- As `_hg`, `which _hg_labels` showed the expected function.
author | Kyle Lippincott <spectral@google.com> |
---|---|
date | Fri, 26 May 2017 13:24:07 -0700 |
parents | a38ed42cd23c |
children | 9929af2b09b4 |
comparison
equal
deleted
inserted
replaced
32472:a38ed42cd23c | 32473:7a7c3369ee26 |
---|---|
167 # sure it doesn't get included in the final package. | 167 # sure it doesn't get included in the final package. |
168 touch build/mercurial/.DS_Store | 168 touch build/mercurial/.DS_Store |
169 # install zsh completions - this location appears to be | 169 # install zsh completions - this location appears to be |
170 # searched by default as of macOS Sierra. | 170 # searched by default as of macOS Sierra. |
171 install -d build/mercurial/usr/local/share/zsh/site-functions/ | 171 install -d build/mercurial/usr/local/share/zsh/site-functions/ |
172 install -m 0644 contrib/zsh_completion build/mercurial/usr/local/share/zsh/site-functions/hg | 172 install -m 0644 contrib/zsh_completion build/mercurial/usr/local/share/zsh/site-functions/_hg |
173 # install bash completions - there doesn't appear to be a | 173 # install bash completions - there doesn't appear to be a |
174 # place that's searched by default for bash, so we'll follow | 174 # place that's searched by default for bash, so we'll follow |
175 # the lead of Apple's git install and just put it in a | 175 # the lead of Apple's git install and just put it in a |
176 # location of our own. | 176 # location of our own. |
177 install -d build/mercurial/usr/local/hg/contrib/ | 177 install -d build/mercurial/usr/local/hg/contrib/ |