From: Johannes Sixt Date: Fri, 22 Mar 2013 21:55:27 GMT Subject: Re: [PATCH] Avoid false positives in label detection in cpp diff hunk header regex. Message-ID: <514CD34F.70107@kdbg.org> In-Reply-To: <7vehf78olw.fsf@alter.siamese.dyndns.org> Am 22.03.2013 16:02, schrieb Junio C Hamano: > Vadim Zeitlin writes: > >> A C++ method start such as >> >> void >> foo::bar() >> >> wasn't recognized by cpp diff driver as it mistakenly included "foo::bar" as a >> label. However the colon in a label can't be followed by another colon, so >> recognize this case specially to correctly detect C++ methods using this style. Much appreciated! >> PATTERNS("cpp", >> /* Jump targets or access declarations */ >> - "!^[ \t]*[A-Za-z_][A-Za-z_0-9]*:.*$\n" >> + "!^[ \t]*[A-Za-z_][A-Za-z_0-9]*:([^:].*$|$)\n" > > Hmm. Wouldn't "find a word (possibly after indentation), colon and > then either a non-colon or end of line" be sufficient and simpler? > iow, something like... > > "!^[ \t]*[A-Za-z_][A-Za-z_0-9]*:([^:]|$)" Yes, indeed. We don't need to match more than necessary in a negative pattern. The \n must still remain, though. -- Hannes