neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 7746f641b89d1d80b2121980f83ae1f322c30e89
parent 6ae144a92171cf9ae52bddddc3a081a4efaabe9f
Author: bfredl <bjorn.linse@gmail.com>
Date:   Tue,  4 Oct 2022 11:28:30 +0200

fix(options): no matter what is said, 'cmdheight' is tab-local (susy baka)

Diffstat:
Msrc/nvim/main.c | 10+++++-----
Msrc/nvim/option.c | 7+++++++
Msrc/nvim/window.c | 11++++-------
3 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/src/nvim/main.c b/src/nvim/main.c @@ -185,11 +185,11 @@ void early_init(mparm_T *paramp) init_locale(); #endif - // Allocate the first window and buffer. - // Can't do anything without it, exit when it fails. - if (!win_alloc_first()) { - os_exit(0); - } + // tabpage local options (p_ch) must be set before allocating first tabpage. + set_init_tablocal(); + + // Allocate the first tabpage, window and buffer. + win_alloc_first(); TIME_MSG("init first window"); alist_init(&global_alist); // Init the argument list to empty. diff --git a/src/nvim/option.c b/src/nvim/option.c @@ -147,6 +147,13 @@ typedef enum { # include "option.c.generated.h" #endif +void set_init_tablocal(void) +{ + // susy baka: cmdheight calls itself OPT_GLOBAL but is really tablocal! + int ch_idx = findoption("cmdheight"); + p_ch = (long)options[ch_idx].def_val; +} + /// Initialize the options, first part. /// /// Called only once from main(), just after creating the first buffer. diff --git a/src/nvim/window.c b/src/nvim/window.c @@ -3865,13 +3865,12 @@ void close_others(int message, int forceit) } // Allocate the first window and put an empty buffer in it. -// Called from main(). -// -// Return FAIL when something goes wrong. -int win_alloc_first(void) +// Only called from main(). +void win_alloc_first(void) { if (win_alloc_firstwin(NULL) == FAIL) { - return FAIL; + // allocating first buffer before any autocmds should not fail. + abort(); } first_tabpage = alloc_tabpage(); @@ -3880,8 +3879,6 @@ int win_alloc_first(void) curtab->tp_firstwin = firstwin; curtab->tp_lastwin = lastwin; curtab->tp_curwin = curwin; - - return OK; } // Init `aucmd_win`. This can only be done after the first window