Re: [PATCH] attr: map builtin userdiff drivers to well-known extensions
- From
Johannes Sixt <j.sixt@viscovery.net>
- Date
- Dec 16, 2011, 14:00 UTC
- 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[] = {...
Show 6 quoted lines
> + "*.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<class T> 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