Re: [PATCH v2 0/9] mergetools: vimdiff: regression fix and reorg
- From
Fernando Ramos <greenfoo@u92.eu>
- Date
- Aug 7, 2022, 18:39 UTC
- Message-ID
- <YvAGycJR8Yq3hxOh@zacax395.localdomain>
- In-Reply-To
- <CAMP44s2s7QV9+Pgkchfk9=X-6Vwz_QZP0Vd145-euT-SR9Xw6Q@mail.gmail.com>
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 buffersSeems to be the best of both worlds :)
Let me know what you think.
Thanks.