{"thread":{"id":"37735","subject":"Custom hunk-header with ignore case setting","startedAt":"2014-10-15T12:52:51Z","lastAt":"2014-10-15T19:35:56Z","messageCount":2,"participants":["Thomas Braun","Junio C Hamano"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"250675","messageId":"543E6E23.5030708@virtuell-zuhause.de","threadId":"37735","inReplyTo":null,"subject":"Custom hunk-header with ignore case setting","fromName":"Thomas Braun","fromEmail":"thomas.braun@virtuell-zuhause.de","sentAt":"2014-10-15T12:52:51Z","receivedAt":"2014-10-15T12:52:51Z","isPatch":false,"sender":{"key":"thomas.braun@virtuell-zuhause.de","avatar":"https://avatars.githubusercontent.com/u/1185677?v=4"},"body":"Hi,\n\nI'm working with a proprietary programming language which ignores case.\nI now started to write a custom version of\ndiff.*.xfuncname and it is kind of ugly to always spell out all cases like\n[Ff][Uu][Nn][cC][Tt][Ii][oO][Nn].\n\nI've seen that the builtin diff patterns in userdiff.c can be specified ignoring case using the IPATTERN macro.\n\nOne of the possible solutions would be to patch userdiff.c\n(patch courtesy of Johannes Schindelin):\n\n-- snip --\ndiff --git a/userdiff.c b/userdiff.c\nindex fad52d6..f089e50 100644\n--- a/userdiff.c\n+++ b/userdiff.c\n@@ -228,6 +228,9 @@ int userdiff_config(const char *k, const char *v)\n \t\treturn parse_funcname(&drv->funcname, k, v, 0);\n \tif (!strcmp(type, \"xfuncname\"))\n \t\treturn parse_funcname(&drv->funcname, k, v, REG_EXTENDED);\n+\tif (!strcmp(type, \"ixfuncname\"))\n+\t\treturn parse_funcname(&drv->funcname, k, v,\n+\t\t\t\tREG_EXTENDED | REG_ICASE);\n \tif (!strcmp(type, \"binary\"))\n \t\treturn parse_tristate(&drv->binary, k, v);\n \tif (!strcmp(type, \"command\"))\n-- snap -\n\nWith a patch like that I would, of course, supply documentation and tests.\n\nIs that something worth a try from my side?\n\nAn alternative solution would be to add something like pxfuncname which\nunderstands PCREs which we we already support in git grep.\n\nAnd yet another alternative would be that I send a patch enhancing userdiff.c\nwith a reasonable pattern for the programming language. But its community,\nand especially intersected with git users, is not that large.\n\nThanks,\nThomas\n"},{"id":"250700","messageId":"xmqqd29tw2g3.fsf@gitster.dls.corp.google.com","threadId":"37735","inReplyTo":"543E6E23.5030708@virtuell-zuhause.de","subject":"Re: Custom hunk-header with ignore case setting","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2014-10-15T19:35:56Z","receivedAt":"2014-10-15T19:35:56Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Thomas Braun <thomas.braun@virtuell-zuhause.de> writes:\n\n> I've seen that the builtin diff patterns in userdiff.c can be\n> specified ignoring case using the IPATTERN macro.\n>\n> One of the possible solutions would be to patch userdiff.c\n> (patch courtesy of Johannes Schindelin):\n>\n> -- snip --\n> diff --git a/userdiff.c b/userdiff.c\n> index fad52d6..f089e50 100644\n> --- a/userdiff.c\n> +++ b/userdiff.c\n> @@ -228,6 +228,9 @@ int userdiff_config(const char *k, const char *v)\n>  \t\treturn parse_funcname(&drv->funcname, k, v, 0);\n>  \tif (!strcmp(type, \"xfuncname\"))\n>  \t\treturn parse_funcname(&drv->funcname, k, v, REG_EXTENDED);\n> +\tif (!strcmp(type, \"ixfuncname\"))\n> +\t\treturn parse_funcname(&drv->funcname, k, v,\n> +\t\t\t\tREG_EXTENDED | REG_ICASE);\n>  \tif (!strcmp(type, \"binary\"))\n>  \t\treturn parse_tristate(&drv->binary, k, v);\n>  \tif (!strcmp(type, \"command\"))\n\nI am not sure if we care deeply about supporting case insensitive\npayload in the first place, but the above change, unlike other\npossibilities, adds only small burden to the end users' cognitive\nload, and it looks like a sensible way to go forward.\n\nThanks.\n"}]}