While fiddling with different versions of the ftype file, I got struck be the fact that the existing diff.jsf lost track whenever it hit 2 minuses in a row at the beginning of a line within a hunk. I found this very annoying, so I started to write "udiff.jsf". It only handles unified diffs, so the "diff.jsf" is still needed for everything else.
It does more careful handling of "-" chars and only looses track if it hits three "-" in a row followed by a blank followed by a non-blank at the beginning of a line within a hunk. It can also deal (to some extend) with leading garbage before a hunk, but in this case you'll most likely need to specify syntax "udiff" explicitly.
It's still not perfect but it is (IMHO) a bit better than the one of vim. :P