Re: [PATCH] Per-path attribute based hunk header selection.
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jul 7, 2007, 10:22 UTC
- Message-ID
- <7vabu88qem.fsf@assigned-by-dhcp.cox.net>
- In-Reply-To
- <200707071011.l67AB9rg005792@mi0.bluebottle.com>
しらいしななこ <nanako3@bluebottle.com> writes:
Show 6 quoted lines
> I would love to see "diff=tex" attribute to work on my manuscripts, but I
> do not write C and do not understand the long length of backslashes very
> well. I guessed in the source file a backslash needs to be doubled, and
> what I want to match is "\section{", "\subsection{", and "\subsubsection{"
> at the beginning of lines, and attempted to do it like the patch at the
> end.Heh, I do not speak TeX very well, so we are even ;-)
Show 22 quoted lines
> It does not work well, however. It shows only part of lines.
>
> @@ -8,7 +8,8 @@ \section{
> @@ -224,7 +225,7 @@ sub
> @@ -240,7 +241,7 @@ subsub
>
> I have no idea what am I doing wrong (truthfully, I do not know what I am
> doing, period).
>
> diff --git a/diff.c b/diff.c
> index 04e7e91..57f91b0 100644
> --- a/diff.c
> +++ b/diff.c
> @@ -1226,6 +1226,8 @@ static const char *diff_hunk_header_regexp(struct diff_filespec *one)
> "^[ ]*\\(\\([ ]*"
> "[A-Za-z_][A-Za-z_0-9]*\\)\\{2,\\}"
> "[ ]*([^;]*$\\)";
> + if (!strcmp(ident, "tex"))
> + return "^\\\\\\(sub\\)*section{";
>
> return NULL;
> }It's getting late so I won't be testing this myself tonight, but I think
return "^\\(\\\\\\(sub\\)*section{.*\\)$";would do the job.
HOWEVER.
Johannes, it strikes me that it is very odd having to add ".*$" at the end and to surround the whole thing in a parentheses. Shouldn't the ff_regexp() grabber simply pick the whole line? After all, that is what GNU "diff -p -F RE" does.
Also this makes me realize that not all contents in the world are not programming language source files, and "funcname" is a misnomer. For this one, however, we _can_ blame GNU diff, as they call this --show-function-line option ;-)