Re: Re* [PATCH v4] userdiff: improve java hunk header regex
From: Johannes Sixt <hidden>
Date: 2021-08-11 07:14:20
Am 11.08.21 um 00:12 schrieb Junio C Hamano:
quoted hunk ↗ jump to hunk
Subject: userdiff: comment on the builtin patterns Remind developers that they do not need to go overboard to implement patterns to prepare for invalid constructs. They only have to be sufficiently permissive, assuming that the payload is syntactically correct. Text stolen mostly from Johannes Sixt. Signed-off-by: Junio C Hamano <redacted> --- userdiff.c | 10 ++++++++++ 1 file changed, 10 insertions(+)diff --git c/userdiff.c w/userdiff.c index d9b2ba752f..1a6d27fda6 100644 --- c/userdiff.c +++ w/userdiff.c@@ -13,6 +13,16 @@ static int drivers_alloc; #define IPATTERN(name, pattern, word_regex) \ { name, NULL, -1, { pattern, REG_EXTENDED | REG_ICASE }, \ word_regex "|[^[:space:]]|[\xc0-\xff][\x80-\xbf]+" } + +/* + * Built-in drivers for various languages, sorted by their names + * (except that the "default" is left at the end). + * + * When writing or updating patterns, assume that the contents these + * patterns are applied to are syntactically correct. You do not have + * to implement all syntactical corner cases---the patterns have to be + * sufficiently permissive. + */
IMO, as written, the comment falls short of suggesting that patterns can be simple. How about appending "and can be simple"?
static struct userdiff_driver builtin_drivers[] = {
IPATTERN("ada",
"!^(.*[ \t])?(is[ \t]+new|renames|is[ \t]+separate)([ \t].*)?$\n"