It seems that quitting mercurials attempt to do a diff3 merge in vimdiff tags your code as 'add your changes and undo the last external addition'. *sigh*
Mercurial's conflict-handling behaviour isn't the best. I end up having to figure out confused repo states at least two or three times every pyweek. Maybe one day we'll sort out the right bits on the server and switch to git...
[merge-tools]
hg_merge_diff.priority = 100
But it seems, the traditional conflict marker option is now called "internal".
http://mercurial.selenic.com/wiki/MergeToolConfiguration#Internal_merge_with_conflict_markers
Mercurial and I like each other apart from that.