Re: "static/fixed" mode on file diff view / Mail Bug?




Today I subscribed to the Meld mailing list and my 3 messages are still awaiting moderation. Unfortunately, 
but very understandable in these times.

Before my message's are approved however, 2 e-mail adresses were already revealed to me by this mail. 
Pedruzzi's  and Willadsen's. In my humble opinion this should be treated as a bug in (the configuration of?) 
the mailing list software.



On Mon, 18 Mar 2013 14:57:04 -0300
Pedro Pedruzzi <pedro pedruzzi gmail com> wrote:

On Thu, Mar 14, 2013 at 6:15 PM, Kai Willadsen <kai willadsen gmail com> wrote:
I'm actually surprised how well that works! I think we need to figure
out a way of doing what other diff tools do, and indicating the areas
that have been inserted to get the alignment right. I'm not sure
whether GtkTextView will let us do that easily, but we can see.

I've just had an alternative crazy idea. If tags don't give us the
flexibility we need, we could always insert a custom GTK widget after
each chunk, and give allocation to the widget based on required
padding. That should allow us to use whatever presentation we like.

...don't do that though. That's a crazy idea.

I've just managed to indicate the inserted areas with a nice hatch
pattern. I think it is actually very close to what I imagined before.
Please take a look:

https://github.com/pedrox/meld/commit/92974e0754da4e45dd9f111c6bc8cd06cafc9157

But there is still a problem that might be solved by your crazy idea.
There is a particular case that we cannot fix the alignment with
pixel-below-lines. We can't add a space before line 1 with
pixel-below-lines. It is the case when there is change in the form
DiffChunk(tag='insert', start_a=0, end_a=0, start_b=0, end_b=X).

We can't use pixel-above-lines as well, because the displayed line
numbers would be aligned at the beginning of the padding not where the
text line really begins

We actually want to add a space _between_ lines, not below nor above.
Can we do that with your trick?

I have some questions:

1. Where is a good place to do the tag creation? I tried somewhere in
the constructor but it seems that the linediffer was not ready to
iterate over changes yet.

I can't see any way of getting away from having a tag per chunk, which
means that there's no way to do it in the constructor. You can do this
is many places, but FileDiff._diff_files() is the first place where
we're guaranteed to have the diffs. Of course, those diffs can change,
and if they do then we'll get a callback to
FileDiff.on_diffs_changed(), which would probably be the right place
to update and revalidate tags.

2. How about 3 way filediffs? I would need to iterate over chunks on
the 3 panes.

Exactly. Things are always complicated by 3-way diffs, but in this
case I think it's just a matter of adapting your code to use
linediffer.all_changes() instead of single_changes() and taking the
max of three offsets rather than of two.

Ok, I'll try to do that next.

ızznɹpǝԀ oɹpǝԀ
_______________________________________________
meld-list mailing list
meld-list gnome org
https://mail.gnome.org/mailman/listinfo/meld-list


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]