git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "René Scharfe" <rene.scharfe@lsrfire.ath.cx>
To: Junio C Hamano <gitster@pobox.com>
Cc: "Bert Wesarg" <bert.wesarg@googlemail.com>,
	"Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>,
	"Thiago dos Santos Alvest" <hiago.salves@gmail.com>,
	git@vger.kernel.org
Subject: Re: [PATCH] grep: add known breakage of coloring when using extended patterns
Date: Mon, 02 May 2011 23:07:54 +0200	[thread overview]
Message-ID: <4DBF1D2A.6030807@lsrfire.ath.cx> (raw)
In-Reply-To: <7vd3k1ngun.fsf@alter.siamese.dyndns.org>

Am 02.05.2011 19:37, schrieb Junio C Hamano:
> René Scharfe<rene.scharfe@lsrfire.ath.cx>  writes:
>
>>> +	test_commit initial input "foo bar baz
> ...
>>> +	git grep --color -e foo --or \( -e bar --and --not -e baz \) |
> ...
>> The current code highlights the given search terms ("atoms").
>
> Hmm, I was probably not paying attention to "coloring the parts that
> matched" topic at all, but wouldn't it be easier and more efficient to
> paint only "foo" without painting "bar baz"?  We know the first term "foo"
> matches, and the rest \(...\) that is --or'ed does not have to even be
> evaluated, no?

Aggregating the set of matching characters and passing them back during 
expression evaluation can be more efficient, yes, as it would avoid 
calling regexec() on the printed lines again only to find out what to 
color.  But I wouldn't call it easy.  E.g. how to return the set of 
matching characters in the following case?

	$ git grep --color -e foo --and -e bar

I can only think of using lists or, even uglier, perhaps a bitmap to 
remember which characters to highlight.

Also GNU grep doesn't only color the first sufficient match.  E.g. this 
will color both b and d:

	$ echo abcde | grep --color -e b -e d

And I think this makes sense and meets my expectations.

But the other mode, which only colors the exact characters that were 
used to determine that the shown line matches (or doesn't match, if -v 
is given) may be interesting as well.  I'm curious to see an 
implementation and wonder if the results are really better than the ones 
of the current (cheating) approach. :)

René

  reply	other threads:[~2011-05-02 21:08 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-02 11:35 [PATCH] grep: add known breakage of coloring when using extended patterns Bert Wesarg
2011-05-02 11:41 ` Johannes Sixt
2011-05-02 11:48   ` Bert Wesarg
2011-05-02 17:14 ` René Scharfe
2011-05-02 17:37   ` Junio C Hamano
2011-05-02 21:07     ` René Scharfe [this message]
2011-05-02 22:04       ` Junio C Hamano
2011-05-03 17:36         ` René Scharfe

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=4DBF1D2A.6030807@lsrfire.ath.cx \
    --to=rene.scharfe@lsrfire.ath.cx \
    --cc=bert.wesarg@googlemail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=hiago.salves@gmail.com \
    --cc=pclouds@gmail.com \
    /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).