From: "SZEDER Gábor" <szeder@ira.uka.de>
To: Jeff King <peff@peff.net>
Cc: Felipe Contreras <felipe.contreras@gmail.com>,
git@vger.kernel.org, Junio C Hamano <gitster@pobox.com>
Subject: Re: [PATCH 3/3] completion: improve shell expansion of items
Date: Fri, 28 Sep 2012 12:05:30 +0200 [thread overview]
Message-ID: <20120928100530.GL10144@goldbirke> (raw)
In-Reply-To: <20120927064338.GA4789@sigill.intra.peff.net>
On Thu, Sep 27, 2012 at 02:43:38AM -0400, Jeff King wrote:
> Here are the numbers using sed[1]
> instead:
> -# Quotes each element of an IFS-delimited list for shell reuse
> +# Quotes each element of a newline-delimited list for shell reuse
> __git_quote()
> {
> - local i
> - local delim
> - for i in $1; do
> - local quoted=${i//\'/\'\\\'\'}
> - printf "${delim:+$IFS}'%s'" "$quoted"
> - delim=t
> - done
> + echo "$1" |
> + sed "
> + s/'/'\\\\''/g
> + s/^/'/
> + s/$/'/
> + "
> }
>
> # Generates completion reply with compgen, appending a space to possible
Your usage of sed got me thinking and come up with this.
The first two fix benign bugs in completion tests, and the third adds
tests for __gitcomp_nl(). These are good to go.
The fourth adds __gitcomp() and __gitcomp_nl() tests for this
expansion breakage. The expected results might need some adjustments,
because they contain special characters unquoted, but I'm tempted to
say that a branch called $foo is so rare in practice, that we
shouldn't bother.
The final one is a proof of concept for inspiration. It gets rid of
compgen and its crazy additional expansion replacing it with a small
sed script. It needs further work to handle words with whitespaces
and special characters.
SZEDER Gábor (5):
completion: fix non-critical bugs in __gitcomp() tests
completion: fix args of run_completion() test helper
completion: add tests for the __gitcomp_nl() completion helper
function
completion: test __gitcomp() and __gitcomp_nl() with expandable words
completion: avoid compgen to fix expansion issues in __gitcomp_nl()
contrib/completion/git-completion.bash | 6 ++-
t/t9902-completion.sh | 91 +++++++++++++++++++++++++++++++---
2 files changed, 90 insertions(+), 7 deletions(-)
next prev parent reply other threads:[~2012-09-28 10:06 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-20 2:15 [PATCH] completion: fix shell expansion of items Felipe Contreras
2012-09-20 1:46 ` Jeff King
2012-09-20 16:52 ` Junio C Hamano
2012-09-20 18:11 ` SZEDER Gábor
2012-09-20 18:21 ` Jeff King
2012-09-20 19:38 ` Felipe Contreras
2012-09-25 4:31 ` [PATCH] Revert "completion: fix shell expansion of items" Jeff King
2012-09-25 16:03 ` Junio C Hamano
2012-09-25 22:37 ` SZEDER Gábor
2012-09-25 23:28 ` Junio C Hamano
2012-09-26 21:46 ` Jeff King
2012-09-26 21:47 ` [PATCH 1/3] t9902: add a few basic completion tests Jeff King
2012-09-26 21:51 ` [PATCH 2/3] t9902: add completion tests for "odd" filenames Jeff King
2012-09-26 21:51 ` [PATCH 3/3] completion: improve shell expansion of items Jeff King
2012-09-26 21:57 ` [PATCH 4/3] completion: quote completions we find Jeff King
2012-09-27 21:40 ` SZEDER Gábor
2012-09-27 22:31 ` Junio C Hamano
2012-09-27 22:58 ` SZEDER Gábor
2012-09-27 0:37 ` [PATCH 3/3] completion: improve shell expansion of items SZEDER Gábor
2012-09-27 6:28 ` Jeff King
2012-09-27 6:43 ` Jeff King
2012-09-27 19:48 ` Jeff King
2012-09-28 10:05 ` SZEDER Gábor [this message]
2012-09-28 10:09 ` [PATCH 1/5] completion: fix non-critical bugs in __gitcomp() tests SZEDER Gábor
2012-09-28 10:09 ` [PATCH 2/5] completion: fix args of run_completion() test helper SZEDER Gábor
2012-09-28 18:04 ` Junio C Hamano
2012-09-28 18:38 ` SZEDER Gábor
2012-09-28 19:23 ` Junio C Hamano
2012-09-28 19:30 ` Jeff King
2012-09-28 19:49 ` Junio C Hamano
2012-09-28 19:55 ` Jeff King
2012-09-28 20:28 ` SZEDER Gábor
2012-09-28 10:09 ` [PATCH 3/5] completion: add tests for the __gitcomp_nl() completion helper function SZEDER Gábor
2012-09-28 10:09 ` [PATCH 4/5] completion: test __gitcomp() and __gitcomp_nl() with expandable words SZEDER Gábor
2012-09-28 10:09 ` [POC PATCH 5/5] completion: avoid compgen to fix expansion issues in __gitcomp_nl() SZEDER Gábor
2012-09-28 15:08 ` SZEDER Gábor
2012-09-28 15:46 ` Jeff King
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=20120928100530.GL10144@goldbirke \
--to=szeder@ira.uka.de \
--cc=felipe.contreras@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=peff@peff.net \
/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).