On 22/08/07 10:39AM, Felipe Contreras wrote: > > That's because the diff mode only highlights differences between the > windows in the tab. If you do something like "BASE,MERGED" the diff > won't show colors for LOCAL or REMOTE. That's right. I've been looking into this in detail today and I think I finally have a good solution which... - Makes vimdiff3 work as any other layout (no special case, not even an extra "if" to handle it) - Makes colors work *in all cases*: single tab with single window and also multiple tabs where one or more of them contain one single window (in that case the diff is made agains all buffers) - Works even with an empty .vimrc I'll post the patch as a reply to this message. > That's why I don't like any mode other than vimdiff3 (and occasionally > vimdiff): because I want to see the diff for all the files, even if I > don't see those files. If I open mergetool with vimdiff and I close > the BASE window I get something better than vimdiff2. You can keep using vimdiff3 but now, also, after this fix, you can use any layout you want and append "+ MERGED" at the end (or beginning) and that particular tab (and only that) will behave the same as "vimdiff3" :) > To me if I configure "BASE,MERGED" and I close the first window, I > should end up with the same view as "MERGED", but I don't, which is > why I fundamentally don't like this layout approach. This won't work. Not even after the fix. If you want to modify the layout (ex: by closing a window) vim won't automatically update the list of buffers to consider for the diff. You can always manually update the list later *or* use "+ MERGED" as previously described. The root cause for this is that, when opening vim, we must decide what to diff on each tab, and the logic after my patch works like this: - If there are more than 1 window, diff among opened windows. - If there is only 1 window, diff among all buffers Seems to be the best of both worlds :) Let me know what you think. Thanks.