LINUX.ORG.RU

Не могу понять как работает ресайз окон в виме

 


0

2
  1. Я делаю вертикальный сплит, делаю левое окно очень узким, перевожу фокус на правое окно, делаю вертикальный сплит: правое окно поделилось пополам, левое окно сохранило свой размер. Но если я сделаю еще один вертикальный сплит, то все 4 окна выровняются и будут одного размера. Насколько я вижу это не зависит от размера маленького левого окна, но не может же быть сахардкожено что когда именно 4 окна то их выравнивает по размеру
  2. set winwidth=30 winheight=5 winminwidth=30 winminheight=5. Та же самая ситуация, но на 4 окне 3 окна выравниваются поровну а одно становися очень узким, не могу понять чем этим обьяснить
    // Only make all windows the same width if one of them (except oldwin)
    // is wider than one of the split windows.
    if (!do_equal && p_ea && size == 0 && *p_ead != 'v'
        && oldwin->w_frame->fr_parent != NULL) {
      frame_T *frp = oldwin->w_frame->fr_parent->fr_child;
      while (frp != NULL) {
        if (frp->fr_win != oldwin && frp->fr_win != NULL
            && (frp->fr_win->w_width > new_size
                || frp->fr_win->w_width > (oldwin->w_width
                                           - new_size - 1))) {
          do_equal = true;
          break;
        }
        frp = frp->fr_next;
      }
    }

https://github.com/neovim/neovim/blob/3c90cc1234ac66806b7da1e2fd9b0880c959521e/src/nvim/window.c#L1256

iamweasel
()