As mentioned by others, synchronization points are a way to fix the diff algorithm and tell it what matches what when it gets confused on its own.
The key to using them is to LEFT CLICK on a line before right clicking and selecting Add Synchronization Point from the popup menu or main menu. The complete solution is then:
- Find two lines that should be synchronized but aren't.
- Left click on the line in the left pane.
- Right click at the same place and select Add Synchronization Point.
- Left click on the line in the right pane.
- Right click at the same place and select Add Synchronization Point.
Done that way, I can adjust the diff in locations where it otherwise breaks making it a lot faster to verify my changes. When it breaks just a few lines, it's fine, when it breaks several screens of lines, it becomes tedious to compare without such a feature.
The following shows a meld diff which gets confused at the else
keyword. That block on the left gets compared against the new default:
block. (click on pictures to enlarge)

First I left clicked on the else in the left panel and then right click + "Add Synchronization Point".
Next I left clicked on the else
in the right panel and again right click + "Add Synchronization Point".
The result is now correct:

Now I can see that just the .
were changed with ->
as I changed a vector of objects to a vector of shared pointer to objects.
Notice that Meld adds a black line along the place of synchronization. That makes it easier to see where you add your synchronization points.
Note: The merging feature makes use of three windows. In that case, the synchronization points have to be defined in all three windows to work.