From: Jonathan Nieder <jrnieder@gmail.com>
To: Felipe Contreras <felipe.contreras@gmail.com>
Cc: "Junio C Hamano" <gitster@pobox.com>,
git@vger.kernel.org, "Stefan Haller" <lists@haller-berlin.de>,
"SZEDER Gábor" <szeder@ira.uka.de>,
"Mark Lodato" <lodatom@gmail.com>
Subject: [PATCH] completion: move private shopt shim for zsh to __git_ namespace
Date: Wed, 27 Apr 2011 16:27:04 -0500 [thread overview]
Message-ID: <20110427212704.GB18596@elie> (raw)
In-Reply-To: <BANLkTikN7iMa_z7wRN8pUS07SMatpyoDPQ@mail.gmail.com>
Most zsh users probably probably do not expect a custom shopt function
to enter their environment just because they ran "source
~/.git-completion.sh".
Such namespace pollution makes development of other scripts confusing
(because it makes the bash-specific shopt utility seem to be available
in zsh) and makes git's tab completion script brittle (since any other
shell snippet implementing some other subset of shopt will break it).
Rename the shopt shim to the more innocuous __git_shopt to be a good
citizen (with two underscores to avoid confusion with completion rules
for a hypothetical "git shopt" command).
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
Hi,
Felipe Contreras wrote:
> +++ b/contrib/completion/git-completion.bash
> @@ -75,6 +75,10 @@
>
> if [[ -n ${ZSH_VERSION-} ]]; then
> autoload -U +X bashcompinit && bashcompinit
> +
> + # 'words' has special meaning in zsh, and only typeset -h seems to
> + # override that
> + alias local="typeset -h"
> fi
>
> case "$COMP_WORDBREAKS" in
The above would change the meaning of "local" in the user's
environment and in all shell snippets she sources later. Are you sure
that's intended?
Actually the completion script already has a problem along the same
lines. Thanks for a reminder.
contrib/completion/git-completion.bash | 12 ++++++++----
1 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 9150ea6..ab95690 100755
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -629,12 +629,12 @@ __git_refs_remotes ()
__git_remotes ()
{
local i ngoff IFS=$'\n' d="$(__gitdir)"
- shopt -q nullglob || ngoff=1
- shopt -s nullglob
+ __git_shopt -q nullglob || ngoff=1
+ __git_shopt -s nullglob
for i in "$d/remotes"/*; do
echo ${i#$d/remotes/}
done
- [ "$ngoff" ] && shopt -u nullglob
+ [ "$ngoff" ] && __git_shopt -u nullglob
for i in $(git --git-dir="$d" config --get-regexp 'remote\..*\.url' 2>/dev/null); do
i="${i#remote.}"
echo "${i/.url*/}"
@@ -2800,7 +2800,7 @@ complete -o bashdefault -o default -o nospace -F _git git.exe 2>/dev/null \
fi
if [[ -n ${ZSH_VERSION-} ]]; then
- shopt () {
+ __git_shopt () {
local option
if [ $# -ne 2 ]; then
echo "USAGE: $0 (-q|-s|-u) <option>" >&2
@@ -2823,4 +2823,8 @@ if [[ -n ${ZSH_VERSION-} ]]; then
return 1
esac
}
+else
+ __git_shopt () {
+ shopt "$@"
+ }
fi
--
1.7.5
next prev parent reply other threads:[~2011-04-27 21:27 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-27 1:26 [PATCH] git-completion: fix zsh support Felipe Contreras
2011-04-27 1:35 ` Jonathan Nieder
2011-04-27 1:42 ` Felipe Contreras
2011-04-27 4:55 ` Junio C Hamano
2011-04-27 6:40 ` [RFC/PATCH] completion: avoid "words" as variable name for zsh portability Jonathan Nieder
2011-04-27 8:42 ` Felipe Contreras
2011-04-27 9:11 ` Jonathan Nieder
2011-04-27 9:49 ` Felipe Contreras
2011-04-27 9:59 ` John Szakmeister
2011-04-27 10:09 ` Felipe Contreras
2011-04-27 21:27 ` Jonathan Nieder [this message]
2011-04-27 22:48 ` [PATCH] completion: move private shopt shim for zsh to __git_ namespace Felipe Contreras
2011-04-27 23:00 ` Jonathan Nieder
2011-05-06 5:46 ` Jonathan Nieder
2011-05-06 8:35 ` Felipe Contreras
2011-05-08 10:48 ` SZEDER Gábor
2011-04-28 16:01 ` [RFC/PATCH] completion: avoid "words" as variable name for zsh portability SZEDER Gábor
2011-04-28 16:01 ` [PATCH 1/3] bash: don't modify the $cur variable in completion functions SZEDER Gábor
2011-04-28 16:01 ` [PATCH 2/3] bash: remove unnecessary _get_comp_words_by_ref() invocations SZEDER Gábor
2011-04-28 16:01 ` [PATCH 3/3] bash: don't declare 'local words' to make zsh happy SZEDER Gábor
2011-05-03 17:53 ` Felipe Contreras
2011-04-28 20:24 ` [RFC/PATCH] completion: avoid "words" as variable name for zsh portability Felipe Contreras
2011-04-28 20:52 ` Junio C Hamano
2011-04-28 21:27 ` Felipe Contreras
2011-04-27 8:20 ` [PATCH] git-completion: fix zsh support Felipe Contreras
2011-04-27 16:56 ` Junio C Hamano
2011-04-27 17:17 ` Felipe Contreras
2011-04-27 2:21 ` Jonathan Nieder
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=20110427212704.GB18596@elie \
--to=jrnieder@gmail.com \
--cc=felipe.contreras@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=lists@haller-berlin.de \
--cc=lodatom@gmail.com \
--cc=szeder@ira.uka.de \
/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.
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).