diff --git a/src/nvim/highlight_group.c b/src/nvim/highlight_group.c index 93d6e65040..ac7f6c4317 100644 --- a/src/nvim/highlight_group.c +++ b/src/nvim/highlight_group.c @@ -1751,6 +1751,8 @@ static int syn_add_group(const char *name, size_t len) if (highlight_ga.ga_data == NULL) { highlight_ga.ga_itemsize = sizeof(HlGroup); ga_set_growsize(&highlight_ga, 10); + // 265 builtin groups, will always be used, plus some space + ga_grow(&highlight_ga, 300); } if (highlight_ga.ga_len >= MAX_HL_ID) { @@ -2765,10 +2767,19 @@ RgbValue name_to_color(const char *name, int *idx) return normal_fg; } - for (int i = 0; color_name_table[i].name != NULL; i++) { - if (!STRICMP(name, color_name_table[i].name)) { - *idx = i; - return color_name_table[i].color; + int lo = 0; + int hi = ARRAY_SIZE(color_name_table) - 1; // don't count NULL element + while (lo < hi) { + int m = (lo + hi) / 2; + int cmp = STRICMP(name, color_name_table[m].name); + if (cmp < 0) { + hi = m; + } else if (cmp > 0) { + lo = m + 1; + } else { // found match + *idx = m; + return color_name_table[m].color; + break; } } diff --git a/src/nvim/main.c b/src/nvim/main.c index 71c1ddfae1..2ddbbfbbfb 100644 --- a/src/nvim/main.c +++ b/src/nvim/main.c @@ -128,6 +128,7 @@ void event_init(void) channel_init(); terminal_init(); ui_init(); + TIME_MSG("event init"); } /// @returns false if main_loop could not be closed gracefully @@ -172,6 +173,8 @@ void early_init(mparm_T *paramp) (int)ovi.dwMajorVersion, (int)ovi.dwMinorVersion); #endif + TIME_MSG("early init"); + #if defined(HAVE_LOCALE_H) // Setup to use the current locale (for ctype() and many other things). // NOTE: Translated messages with encodings other than latin1 will not @@ -184,8 +187,7 @@ void early_init(mparm_T *paramp) if (!win_alloc_first()) { os_exit(0); } - - init_yank(); // init yank buffers + TIME_MSG("init first window"); alist_init(&global_alist); // Init the argument list to empty. global_alist.id = 0; diff --git a/src/nvim/ops.c b/src/nvim/ops.c index 510aa1c8ac..20bbc5b440 100644 --- a/src/nvim/ops.c +++ b/src/nvim/ops.c @@ -57,7 +57,7 @@ #include "nvim/vim.h" #include "nvim/window.h" -static yankreg_T y_regs[NUM_REGISTERS]; +static yankreg_T y_regs[NUM_REGISTERS] = { 0 }; static yankreg_T *y_previous = NULL; // ptr to last written yankreg @@ -2571,12 +2571,6 @@ int op_change(oparg_T *oap) return retval; } -/// set all the yank registers to empty (called from main()) -void init_yank(void) -{ - memset(&(y_regs[0]), 0, sizeof(y_regs)); -} - #if defined(EXITFREE) void clear_registers(void) {