Re: [PATCH 2/2] diff: add custom regular expressions for function names

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

 



Hi,

On Wed, 4 Jul 2007, Junio C Hamano wrote:

> *NOTE IN BIG RED LETTERS*
> 
> I do not particularly like the way multiple regexps are used in
> Johannes's patch, but I left it as-is, as that part of the
> change is orthogonal from the support to use the gitattribute
> mechanism, and the primary reason I got involved in this topic
> is to give help around the latter area.

I do not like it particularly, either. Until two days ago, that POSIX 
regexps suck so much, in that they do not even have a look-ahead, let 
alone a negative look-ahead. _That_ is what I wanted.

Alas, that is the first valid argument I encounter that would speak _for_ 
pcre. It speaks volumes that _nobody_ pointed this out before, but all 
pcre fans put out bogus arguments.

> I think using multiple regexp is cute, but if we do that, it
> should allow people to pick from:
> 
> 	public class Beer
> 	{
> 		int special;
> 		public static void main(String args[])
>                 {
>                 	... modified part is here ...
> 
> with two regexp matches, say:
> 
> 	/^(public|private|protectd) class (.*)/ then
>         /^	+.* (\w*\(.*)$/
> 
> and define the hunk_header format as something like:
> 
> 	"\[1,2]::\[2,1]"
> 
> meaning, "pick the second capture group from the match data of
> the first regexp, followed by double-colon, and pick the first
> capture group from the match data of the second regexp", to
> result in "Beer::main(String args[])".  You should be able
> to pick "/package (\w+);/ then /^sub (\w+)/" in Perl code using
> the same idea.
> 
> I am not married to the syntax I used in the above examples,
> though.

Is that really necessary?

But yeah, it is possible. You'd have to have some state in the struct, and 
introduce yet another escape (probably in place of the first line of the 
regexp), similar to

	*[2,2]::[1,1]
	*keep-searching-after-match 1
	^	+.* (\w*\(.*)$
	^(public|private|protected) class (.*)

Of course, there _has_ to be a way to handle exceptions, such as in Perl, 
where you do not necessarily have a package, and thus do not want that 
silly "::" in front of the rest.

But frankly, I think this is too complicated. Maybe somebody more 
intelligent than me can actually come up with a sane syntax and 
implementation of this, but at some point I think it is Good Enough(tm). 
And IMHO it is already good enough matching just one line.

Ciao,
Dscho

-
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]

  Powered by Linux