From: Felipe Contreras <felipe.contreras@gmail.com>
To: git@vger.kernel.org
Cc: "Junio C Hamano" <gitster@pobox.com>,
"SZEDER Gábor" <szeder@ira.uka.de>,
"Felipe Contreras" <felipe.contreras@gmail.com>,
"Björn Gustavsson" <bgustavsson@gmail.com>,
"Shawn O. Pearce" <spearce@spearce.org>,
"Robert Zeh" <robert.a.zeh@gmail.com>,
"Peter van der Does" <peter@avirtualhome.com>,
"Jonathan Nieder" <jrnieder@gmail.com>,
"Jeff King" <peff@peff.net>
Subject: [RFC/PATCH v2 7/8] completion: get rid of __gitcomp_1
Date: Sun, 18 Nov 2012 11:56:52 +0100 [thread overview]
Message-ID: <1353236213-13471-8-git-send-email-felipe.contreras@gmail.com> (raw)
In-Reply-To: <1353236213-13471-1-git-send-email-felipe.contreras@gmail.com>
There's no point in calling a separate function that is only used in one
place. Specially considering that there's no need to call compgen, and
we traverse the words ourselves both in __gitcompadd, and __gitcomp_1.
So lets squash the functions together, and traverse only once.
This improves performance.
No functional changes.
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
---
contrib/completion/git-completion.bash | 26 +++++++++++---------------
1 file changed, 11 insertions(+), 15 deletions(-)
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 0b72f24..82ea7b1 100644
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -56,19 +56,6 @@ __gitdir ()
fi
}
-__gitcomp_1 ()
-{
- local c IFS=$' \t\n'
- for c in $1; do
- c="$c$2"
- case $c in
- --*=*|*.) ;;
- *) c="$c " ;;
- esac
- printf '%s\n' "$c"
- done
-}
-
# The following function is based on code from:
#
# bash_completion - programmable completion functions for bash 3.2+
@@ -250,8 +237,17 @@ __gitcomp ()
--*=)
;;
*)
- local IFS=$'\n'
- __gitcompadd "$(__gitcomp_1 "${1-}" "${4-}")" "${2-}" "$cur_" ""
+ local c i=0 IFS=$' \t\n'
+ for c in $1; do
+ c="$c${4-}"
+ case $c in
+ --*=*|*.) ;;
+ *) c="$c " ;;
+ esac
+ if [[ $c == "$cur_"* ]]; then
+ COMPREPLY[i++]="${2-}$c"
+ fi
+ done
;;
esac
}
--
1.8.0
next prev parent reply other threads:[~2012-11-18 10:57 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-18 10:56 [RFC/PATCH v2 0/8] completion: compgen/compadd cleanups Felipe Contreras
2012-11-18 10:56 ` [RFC/PATCH v2 1/8] completion: trivial test improvement Felipe Contreras
2012-11-18 10:56 ` [RFC/PATCH v2 2/8] completion: get rid of empty COMPREPLY assignments Felipe Contreras
2012-11-18 10:56 ` [RFC/PATCH v2 3/8] completion: add new __gitcompadd helper Felipe Contreras
2012-11-18 10:56 ` [RFC/PATCH v2 4/8] tmp: completion: add SZEDER's tests Felipe Contreras
2012-11-18 10:56 ` [RFC/PATCH v2 5/8] completion: get rid of compgen Felipe Contreras
2012-11-18 10:56 ` [RFC/PATCH v2 6/8] tmp: completion: mark SZEDER's tests as fixed Felipe Contreras
2012-11-18 10:56 ` Felipe Contreras [this message]
2012-11-18 10:56 ` [RFC/PATCH v2 8/8] completion: small optimization Felipe Contreras
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=1353236213-13471-8-git-send-email-felipe.contreras@gmail.com \
--to=felipe.contreras@gmail.com \
--cc=bgustavsson@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jrnieder@gmail.com \
--cc=peff@peff.net \
--cc=peter@avirtualhome.com \
--cc=robert.a.zeh@gmail.com \
--cc=spearce@spearce.org \
--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