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

This commit is contained in:
bfredl 2022-10-04 11:28:30 +02:00
parent 6ae144a921
commit 7746f641b8
3 changed files with 16 additions and 12 deletions

View File

@ -185,11 +185,11 @@ void early_init(mparm_T *paramp)
init_locale(); init_locale();
#endif #endif
// Allocate the first window and buffer. // tabpage local options (p_ch) must be set before allocating first tabpage.
// Can't do anything without it, exit when it fails. set_init_tablocal();
if (!win_alloc_first()) {
os_exit(0); // Allocate the first tabpage, window and buffer.
} win_alloc_first();
TIME_MSG("init first window"); TIME_MSG("init first window");
alist_init(&global_alist); // Init the argument list to empty. alist_init(&global_alist); // Init the argument list to empty.

View File

@ -147,6 +147,13 @@ typedef enum {
# include "option.c.generated.h" # include "option.c.generated.h"
#endif #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. /// Initialize the options, first part.
/// ///
/// Called only once from main(), just after creating the first buffer. /// Called only once from main(), just after creating the first buffer.

View File

@ -3865,13 +3865,12 @@ void close_others(int message, int forceit)
} }
// Allocate the first window and put an empty buffer in it. // Allocate the first window and put an empty buffer in it.
// Called from main(). // Only called from main().
// void win_alloc_first(void)
// Return FAIL when something goes wrong.
int win_alloc_first(void)
{ {
if (win_alloc_firstwin(NULL) == FAIL) { if (win_alloc_firstwin(NULL) == FAIL) {
return FAIL; // allocating first buffer before any autocmds should not fail.
abort();
} }
first_tabpage = alloc_tabpage(); first_tabpage = alloc_tabpage();
@ -3880,8 +3879,6 @@ int win_alloc_first(void)
curtab->tp_firstwin = firstwin; curtab->tp_firstwin = firstwin;
curtab->tp_lastwin = lastwin; curtab->tp_lastwin = lastwin;
curtab->tp_curwin = curwin; curtab->tp_curwin = curwin;
return OK;
} }
// Init `aucmd_win`. This can only be done after the first window // Init `aucmd_win`. This can only be done after the first window