Thread (2 messages) flat view 2 messages, 2 authors, 2016-06-15

Re: [PATCH] Per-path attribute based hunk header selection.

From: Johannes Schindelin <hidden>
Date: 2016-06-15 22:43:20
Subsystem: the rest · Maintainer: Linus Torvalds

Possibly related (same subject, not in this thread)

Hi,

On Sat, 7 Jul 2007, Junio C Hamano wrote:
しらいしななこ  [off-list ref] writes:
quoted
I would love to see "diff=tex" attribute to work on my manuscripts, 
[...]
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).
Those are regular expressions. Read more about them here:

	http://en.wikipedia.org/wiki/Regular_expression
quoted
+	if (!strcmp(ident, "tex"))
+		return "^\\\\\\(sub\\)*section{";
It is always easier, and will never require C skills, to put this into the 
config. With Junio's current version:

	echo '*.tex funcname=tex' >> .gitattributes
	echo '[funcname] tex = ^\(\\\(sub\)*section{.*\)' >> .git/config

The problem is of course that the backslashes have to be escaped _both_ in 
C and in regexps.

You could write that much simpler, though:

	\\[a-z]*section.*

It would work the same, in practice, because if something like 
\supercoolsection is defined, you are likely wanting to match that, too.
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.
Yes, but then you can forget about your hierarchical idea.

Or maybe not, since I am still awaiting a sane syntax for that, which 
would probably have to solve just one more problem.

Here is a patch for the rest of the line thing:
diff --git a/xdiff-interface.c b/xdiff-interface.c
index be866d1..9503dfb 100644
--- a/xdiff-interface.c
+++ b/xdiff-interface.c
@@ -156,7 +156,7 @@ static long ff_regexp(const char *line, long len,
 	}
 	i = pmatch[1].rm_so >= 0 ? 1 : 0;
 	line += pmatch[i].rm_so;
-	result = pmatch[i].rm_eo - pmatch[i].rm_so;
+	result = (int)len - pmatch[i].rm_so;
 	if (result > buffer_size)
 		result = buffer_size;
 	else
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 ;-)
Okay.

How about sorting out the other technical issues first 
(diff.<type>.funcname instead of funcname.<type>), leaving the names 
alone, and then rename the remaining references of funcname to hunkheader?

Ciao,
Dscho
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help