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