threads / bug / 58120

Bug with splits in new nvimdiff layout

Subject: Bug with splits in new nvimdiff layout

## tl;dr

3 messages between Jul 7, 2022 and Jul 8, 2022.

replies: 2people: 3as markdown or json

Matthew Klein· Jul 7, 2022, 16:58 UTC · lore
Hi,
I encountered a bug when using the new vimdiff layout format.
To recreate this, start with a merge conflict, and merge with this command:
    git mergetool --tool=nvimdiff
I expected the layout to be:
    ------------------------------------------
    |             |           |              |
    |   LOCAL     |   BASE    |   REMOTE     |
    |             |           |              |
    ------------------------------------------
    |                                        |
    |                MERGED                  |
    |                                        |
    ------------------------------------------
The layout when I ran the command was:
    ------------------------------------------
    |                                        |
    |                LOCAL                   |
    |                                        |
    ------------------------------------------
    |             |           |              |
    |   LOCAL     |   LOCAL   |   MERGED     |
    |             |           |              |
    ------------------------------------------

I expected the layout to be the same as what was documented to be the default for "nvimdiff".

In my init.vim configuration file, I have these lines set:
    set splitbelow
    set splitright

These options globally change the behaviour of the "split" command so that instead of "split" creating a new window above the current window, or to the left when used with "vertical", it does the opposite. Docs: https://neovim.io/doc/user/options.html#'splitbelow'

I recommend using the "leftabove" (a.k.a "aboveleft") command together with
"split". Since these windows are positioned absolutely (according to
"mergetool.nvimdiff.layout"), it shouldn't depend on the user's configuration.
Docs: https://neovim.io/doc/user/windows.html#:leftabove

The previous invocation (i.e. "4wincmd w | wincmd J") didn't run into this issue, since its not affected by the "splitbelow" and "splitright" options.

Hope this helps,
Matthew

[System Info] git version: git version 2.37.0 cpu: x86_64 no commit associated with this build sizeof-long: 8 sizeof-size_t: 8 shell-path: /bin/sh uname: Linux 5.18.9-arch1-1 #1 SMP PREEMPT_DYNAMIC Sat, 02 Jul 2022 21:03:06 +0000 x86_64 compiler info: gnuc: 12.1 libc info: glibc: 2.35 $SHELL (typically, interactive shell): /bin/bash

[Enabled Hooks]
Junio C Hamano· Jul 7, 2022, 18:46 UTC · re: Matthew Klein · lore

Re: Bug with splits in new nvimdiff layout

Matthew Klein <mklein994@gmail.com> writes:
> Hi,
>
> I encountered a bug when using the new vimdiff layout format.
Thanks for a report.
Fernando (the author of the layout engine)?  Can you take a look?
Show 69 quoted lines
> To recreate this, start with a merge conflict, and merge with this command:
>
>     git mergetool --tool=nvimdiff
>
> I expected the layout to be:
>
>     ------------------------------------------
>     |             |           |              |
>     |   LOCAL     |   BASE    |   REMOTE     |
>     |             |           |              |
>     ------------------------------------------
>     |                                        |
>     |                MERGED                  |
>     |                                        |
>     ------------------------------------------
>
> The layout when I ran the command was:
>
>     ------------------------------------------
>     |                                        |
>     |                LOCAL                   |
>     |                                        |
>     ------------------------------------------
>     |             |           |              |
>     |   LOCAL     |   LOCAL   |   MERGED     |
>     |             |           |              |
>     ------------------------------------------
>
> I expected the layout to be the same as what was documented to be the default
> for "nvimdiff".
>
> In my init.vim configuration file, I have these lines set:
>
>     set splitbelow
>     set splitright
>
> These options globally change the behaviour of the "split" command so that
> instead of "split" creating a new window above the current window, or to the
> left when used with "vertical", it does the opposite. Docs:
> https://neovim.io/doc/user/options.html#'splitbelow'
>
> I recommend using the "leftabove" (a.k.a "aboveleft") command together with
> "split". Since these windows are positioned absolutely (according to
> "mergetool.nvimdiff.layout"), it shouldn't depend on the user's configuration.
> Docs: https://neovim.io/doc/user/windows.html#:leftabove
>
> The previous invocation (i.e. "4wincmd w | wincmd J") didn't run into this
> issue, since its not affected by the "splitbelow" and "splitright" options.
>
> Hope this helps,
>
> Matthew
>
> [System Info]
> git version:
> git version 2.37.0
> cpu: x86_64
> no commit associated with this build
> sizeof-long: 8
> sizeof-size_t: 8
> shell-path: /bin/sh
> uname: Linux 5.18.9-arch1-1 #1 SMP PREEMPT_DYNAMIC Sat, 02 Jul 2022
> 21:03:06 +0000 x86_64
> compiler info: gnuc: 12.1
> libc info: glibc: 2.35
> $SHELL (typically, interactive shell): /bin/bash
>
>
> [Enabled Hooks]
Fernando Ramos· Jul 8, 2022, 17:06 UTC · re: Junio C Hamano · lore

Re: Bug with splits in new nvimdiff layout

On 22/07/07 11:46AM, Junio C Hamano wrote:
Show 10 quoted lines
> Matthew Klein <mklein994@gmail.com> writes:
> 
> > Hi,
> >
> > I encountered a bug when using the new vimdiff layout format.
> 
> Thanks for a report.
> 
> Fernando (the author of the layout engine)?  Can you take a look?
> 
No problem! 

The description from Matthew already includes a proposed solution (thanks!) which should work.

Let me implement and test it this weekend and I'll get back to you.

← back to recent threads