zsh_completion: install as _hg not hg stable
authorKyle Lippincott <spectral@google.com>
Fri, 26 May 2017 13:24:07 -0700
branchstable
changeset 32576 501d48bda912
parent 32575 197eb93560b3
child 32578 8825de36e74a
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.
Makefile
tests/test-mac-packages.t
--- a/Makefile	Fri May 26 20:03:05 2017 -0400
+++ b/Makefile	Fri May 26 13:24:07 2017 -0700
@@ -170,7 +170,7 @@
         # install zsh completions - this location appears to be
         # searched by default as of macOS Sierra.
 	install -d build/mercurial/usr/local/share/zsh/site-functions/
-	install -m 0644 contrib/zsh_completion build/mercurial/usr/local/share/zsh/site-functions/hg
+	install -m 0644 contrib/zsh_completion build/mercurial/usr/local/share/zsh/site-functions/_hg
         # install bash completions - there doesn't appear to be a
         # place that's searched by default for bash, so we'll follow
         # the lead of Apple's git install and just put it in a
--- a/tests/test-mac-packages.t	Fri May 26 20:03:05 2017 -0400
+++ b/tests/test-mac-packages.t	Fri May 26 13:24:07 2017 -0700
@@ -29,8 +29,8 @@
   ./Library/Python/2.7/site-packages/mercurial/pure/bdiff.py	100644	0/0
   ./Library/Python/2.7/site-packages/mercurial/pure/bdiff.pyc	100644	0/0
   ./Library/Python/2.7/site-packages/mercurial/pure/bdiff.pyo	100644	0/0
-  $ grep zsh/site-functions/hg boms.txt | cut -d '	' -f 1,2,3
-  ./usr/local/share/zsh/site-functions/hg	100644	0/0
+  $ grep zsh/site-functions/_hg boms.txt | cut -d '	' -f 1,2,3
+  ./usr/local/share/zsh/site-functions/_hg	100644	0/0
   $ grep hg-completion.bash boms.txt | cut -d '	' -f 1,2,3
   ./usr/local/hg/contrib/hg-completion.bash	100644	0/0
   $ egrep 'man[15]' boms.txt | cut -d '	' -f 1,2,3