git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] userdiff: allow * between cpp funcname words

From
Johannes Sixt <j6t@kdbg.org>
Date
Dec 7, 2011, 21:13 UTC
Message-ID
<4EDFD6E6.5050301@kdbg.org>
In-Reply-To
<201112070904.28212.trast@student.ethz.ch>
Am 07.12.2011 09:04, schrieb Thomas Rast:
Show 26 quoted lines
> Junio C Hamano wrote:
>> Thomas Rast <trast@student.ethz.ch> 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
Previous: Thomas Rast
Message 9 of 9 in “userdiff: allow * between cpp funcname words”
  1. userdiff: allow * between cpp funcname wordsThomas Rast, Dec 6, 2011
  2. Jeff KingDec 6, 2011
  3. Thomas RastDec 6, 2011
  4. Jeff KingDec 6, 2011
  5. Johannes SixtDec 6, 2011
  6. René ScharfeDec 6, 2011
  7. Junio C HamanoDec 6, 2011
  8. Thomas RastDec 7, 2011
  9. Johannes SixtDec 7, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.