Ignore Whitespace should also ignore whitespace inside of lines as well
"if (foo)" is semantically the same as "if ( foo )" but the diff counts those as changes when ignore whitespace is on.
Tom Burton shared this idea
Well, semantic doesn't work at this level. It doesn't consider semantic diffs inside method blocks.
That being said, for C# there's an option to ignore "format changes" as the one you propose. Check http://blog.semanticmerge.com/2014/05/skip-format-conflicts-with-new.html