mirror of
https://github.com/neovim/neovim.git
synced 2025-01-01 17:23:36 -07:00
perf(highlight): use binary search to lookup RGB color names
This commit is contained in:
parent
dd591adf8a
commit
9690f8c57b
@ -1751,6 +1751,8 @@ static int syn_add_group(const char *name, size_t len)
|
|||||||
if (highlight_ga.ga_data == NULL) {
|
if (highlight_ga.ga_data == NULL) {
|
||||||
highlight_ga.ga_itemsize = sizeof(HlGroup);
|
highlight_ga.ga_itemsize = sizeof(HlGroup);
|
||||||
ga_set_growsize(&highlight_ga, 10);
|
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) {
|
if (highlight_ga.ga_len >= MAX_HL_ID) {
|
||||||
@ -2765,10 +2767,19 @@ RgbValue name_to_color(const char *name, int *idx)
|
|||||||
return normal_fg;
|
return normal_fg;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; color_name_table[i].name != NULL; i++) {
|
int lo = 0;
|
||||||
if (!STRICMP(name, color_name_table[i].name)) {
|
int hi = ARRAY_SIZE(color_name_table) - 1; // don't count NULL element
|
||||||
*idx = i;
|
while (lo < hi) {
|
||||||
return color_name_table[i].color;
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,6 +128,7 @@ void event_init(void)
|
|||||||
channel_init();
|
channel_init();
|
||||||
terminal_init();
|
terminal_init();
|
||||||
ui_init();
|
ui_init();
|
||||||
|
TIME_MSG("event init");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @returns false if main_loop could not be closed gracefully
|
/// @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);
|
(int)ovi.dwMajorVersion, (int)ovi.dwMinorVersion);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
TIME_MSG("early init");
|
||||||
|
|
||||||
#if defined(HAVE_LOCALE_H)
|
#if defined(HAVE_LOCALE_H)
|
||||||
// Setup to use the current locale (for ctype() and many other things).
|
// Setup to use the current locale (for ctype() and many other things).
|
||||||
// NOTE: Translated messages with encodings other than latin1 will not
|
// NOTE: Translated messages with encodings other than latin1 will not
|
||||||
@ -184,8 +187,7 @@ void early_init(mparm_T *paramp)
|
|||||||
if (!win_alloc_first()) {
|
if (!win_alloc_first()) {
|
||||||
os_exit(0);
|
os_exit(0);
|
||||||
}
|
}
|
||||||
|
TIME_MSG("init first window");
|
||||||
init_yank(); // init yank buffers
|
|
||||||
|
|
||||||
alist_init(&global_alist); // Init the argument list to empty.
|
alist_init(&global_alist); // Init the argument list to empty.
|
||||||
global_alist.id = 0;
|
global_alist.id = 0;
|
||||||
|
@ -57,7 +57,7 @@
|
|||||||
#include "nvim/vim.h"
|
#include "nvim/vim.h"
|
||||||
#include "nvim/window.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
|
static yankreg_T *y_previous = NULL; // ptr to last written yankreg
|
||||||
|
|
||||||
@ -2571,12 +2571,6 @@ int op_change(oparg_T *oap)
|
|||||||
return retval;
|
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)
|
#if defined(EXITFREE)
|
||||||
void clear_registers(void)
|
void clear_registers(void)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user