{"thread":{"id":"11468","subject":"[PATCH] diff: load funcname patterns in \"basic\" config","startedAt":"2008-01-04T09:16:14Z","lastAt":"2008-01-04T09:19:16Z","messageCount":2,"participants":["Jeff King"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"64430","messageId":"20080104091613.GA7535@coredump.intra.peff.net","threadId":"11468","inReplyTo":null,"subject":"[PATCH] diff: load funcname patterns in \"basic\" config","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2008-01-04T09:16:14Z","receivedAt":"2008-01-04T09:16:14Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"The funcname patterns influence the \"comment\" on @@ lines of\nthe diff. They are safe to use with plumbing since they\ndon't fundamentally change the meaning of the diff in any\nway.\n\nSince all diff users call either diff_ui_config or\ndiff_basic_config, we can get rid of the lazy reading of the\nconfig.\n\nSigned-off-by: Jeff King <peff@peff.net>\n---\nI am slightly worried that I'm missing something fundamental here. Why\nwere these ever lazily loaded in the first place? Ditto for the user\ndiff drivers, which should just get loaded when the command parses the\nconfig for the first time.\n\n diff.c |   11 ++++++++---\n 1 files changed, 8 insertions(+), 3 deletions(-)\n\ndiff --git a/diff.c b/diff.c\nindex 6bb0f62..1ea10c8 100644\n--- a/diff.c\n+++ b/diff.c\n@@ -179,8 +179,6 @@ #include \"run-command.h\"\n \t\tif (ep != var + 4) {\n \t\t\tif (!strcmp(ep, \".command\"))\n \t\t\t\treturn parse_lldiff_command(var, ep, value);\n-\t\t\tif (!strcmp(ep, \".funcname\"))\n-\t\t\t\treturn parse_funcname_pattern(var, ep, value);\n \t\t}\n \t}\n \n@@ -195,6 +193,14 @@ #include \"run-command.h\"\n \t\treturn 0;\n \t}\n \n+\tif (!prefixcmp(var, \"diff.\")) {\n+\t\tconst char *ep = strrchr(var, '.');\n+\t\tif (ep != var + 4) {\n+\t\t\tif (!strcmp(ep, \".funcname\"))\n+\t\t\t\treturn parse_funcname_pattern(var, ep, value);\n+\t\t}\n+\t}\n+\n \treturn git_default_config(var, value);\n }\n \n@@ -1165,7 +1171,6 @@ #include \"run-command.h\"\n {\n \tstruct funcname_pattern *pp;\n \n-\tread_config_if_needed();\n \tfor (pp = funcname_pattern_list; pp; pp = pp->next)\n \t\tif (!strcmp(ident, pp->name))\n \t\t\treturn pp->pattern;\n-- \n1.5.4.rc2.1124.g7c85e-dirty\n"},{"id":"64431","messageId":"20080104091916.GA7569@coredump.intra.peff.net","threadId":"11468","inReplyTo":"20080104091613.GA7535@coredump.intra.peff.net","subject":"Re: [PATCH] diff: load funcname patterns in \"basic\" config","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2008-01-04T09:19:16Z","receivedAt":"2008-01-04T09:19:16Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Fri, Jan 04, 2008 at 04:16:14AM -0500, Jeff King wrote:\n\n> --- a/diff.c\n> +++ b/diff.c\n> @@ -179,8 +179,6 @@ #include \"run-command.h\"\n\nHeh, I had a goofy diff.default.funcname option set up to test this out.\nA slightly more readable version of the patch is below.\n\n-- >8 --\ndiff: load funcname patterns in \"basic\" config\n\nThe funcname patterns influence the \"comment\" on @@ lines of\nthe diff. They are safe to use with plumbing since they\ndon't fundamentally change the meaning of the diff in any\nway.\n\nSince all diff users call either diff_ui_config or\ndiff_basic_config, we can get rid of the lazy reading of the\nconfig.\n\nSigned-off-by: Jeff King <peff@peff.net>\n---\n diff.c |   11 ++++++++---\n 1 files changed, 8 insertions(+), 3 deletions(-)\n\ndiff --git a/diff.c b/diff.c\nindex 6bb0f62..1ea10c8 100644\n--- a/diff.c\n+++ b/diff.c\n@@ -179,8 +179,6 @@ int git_diff_ui_config(const char *var, const char *value)\n \t\tif (ep != var + 4) {\n \t\t\tif (!strcmp(ep, \".command\"))\n \t\t\t\treturn parse_lldiff_command(var, ep, value);\n-\t\t\tif (!strcmp(ep, \".funcname\"))\n-\t\t\t\treturn parse_funcname_pattern(var, ep, value);\n \t\t}\n \t}\n \n@@ -195,6 +193,14 @@ int git_diff_basic_config(const char *var, const char *value)\n \t\treturn 0;\n \t}\n \n+\tif (!prefixcmp(var, \"diff.\")) {\n+\t\tconst char *ep = strrchr(var, '.');\n+\t\tif (ep != var + 4) {\n+\t\t\tif (!strcmp(ep, \".funcname\"))\n+\t\t\t\treturn parse_funcname_pattern(var, ep, value);\n+\t\t}\n+\t}\n+\n \treturn git_default_config(var, value);\n }\n \n@@ -1165,7 +1171,6 @@ static const char *funcname_pattern(const char *ident)\n {\n \tstruct funcname_pattern *pp;\n \n-\tread_config_if_needed();\n \tfor (pp = funcname_pattern_list; pp; pp = pp->next)\n \t\tif (!strcmp(ident, pp->name))\n \t\t\treturn pp->pattern;\n-- \n1.5.4.rc2.1124.g7c85e-dirty\n"}]}