Re: [PATCH] grep: add known breakage of coloring when using extended patterns

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 02.05.2011 19:37, schrieb Junio C Hamano:
Renà Scharfe<rene.scharfe@xxxxxxxxxxxxxx>  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Ã
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]