From: Johannes Sixt Date: Fri, 16 Dec 2011 14:00:51 GMT Subject: Re: [PATCH] attr: map builtin userdiff drivers to well-known extensions Message-ID: <4EEB4F13.2010402@viscovery.net> In-Reply-To: <20111216110000.GA15676@sigill.intra.peff.net> Am 12/16/2011 12:00, schrieb Jeff King: > static const char *builtin_attr[] = { ... > + "*.c diff=cpp", > + "*.cc diff=cpp", > + "*.cxx diff=cpp", > + "*.cpp diff=cpp", > + "*.h diff=cpp", > + "*.hpp diff=cpp", Please don't do this. It would be a serious regression for C++ coders, and some C coders as well. The built-in hunk header patterns are severly broken and don't work well with C++ code. I know for sure that the following are not recognized: - template declarations, e.g. template func(T x); - constructor definitionss, e.g. MyClass::MyClass() - functions that return references, e.g. const string& func() - function definitions along the GNU coding style, e.g. void the_func () I am currently using this pattern (but I'm sure it can be optimized) with an appropriate xcpp attribute: [diff "xcpp"] xfuncname = "!^[ \\t]*[a-zA-Z_][a-zA-Z_0-9]*[^()]*:[[:space:]]*$\n^[a-zA-Z_][a-zA-Z_0-9]*.*" (modulo MUA line wrapping). -- Hannes