Am 07.12.2011 09:04, schrieb Thomas Rast: > Junio C Hamano wrote: >> Thomas Rast <trast@xxxxxxxxxxxxxxx> writes: >> >>> Actually (sadly) I'll have to revise it. It doesn't match much of C++ >>> either, and I haven't yet come up with a reasonable regex that >>> matches, say, >>> >>> foo::Bar<int>::t& Baz::operator<<( >>> >>> which I would call ludicrous, but it's valid C++. >> >> Heh, I'd rather not see us go that route, which would either end up >> implementing a C++ parser or reverting the heuristics back to "non-blank >> at the beginning of the line" that was already reasonably useful. > > Well, there are many things that we deliberately do not match right > now and for which that's a good thing: > > label: > public: > void declaration_only(...); > int global_variable; > > At some point I was wondering whether it would be better to just > declare a non-match for '.*;' and '^[A-Za-z_][A-Za-z_0-9]+:', and > otherwise match all '^[A-Za-z].*\(' but I may be missing something. The current cpp pattern doesn't work that well with C++. Since it requires a blank before a name before the opening parentheses, it doesn't catch constructors: Foo::Foo() and it should fail for GNU style C function definitions as well (I didn't test): void do_the_foo() I'll run this pattern for a while: diff.cpp.xfuncname=!^[a-zA-Z_][a-zA-Z_0-9]*[[:space:]]*:[[:space:]]*$ ^[a-zA-Z_].* BTW, your match pattern requires an opening parenthesis; it would not catch class definitions. -- Hannes -- 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