From 1168dbe3435580f872ae9cd44648f3b3a881896c Mon Sep 17 00:00:00 2001 From: ZyX Date: Thu, 6 Nov 2014 17:25:45 +0300 Subject: option: Add find_key_option_len function --- src/nvim/option.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/nvim/option.c b/src/nvim/option.c index b7521e38f8..f3cd144386 100644 --- a/src/nvim/option.c +++ b/src/nvim/option.c @@ -4289,7 +4289,7 @@ static void check_redraw(uint32_t flags) * Find index for option 'arg' that has given length. * Return -1 if not found. */ -static int findoption_len(const char_u *const arg, const size_t len) +int findoption_len(const char_u *const arg, const size_t len) { char *s, *p; static short quick_tab[27] = {0, 0}; /* quick access table */ @@ -4670,7 +4670,7 @@ char_u *get_highlight_default(void) /* * Translate a string like "t_xx", "" or "" to a key number. */ -static int find_key_option(const char_u *arg) +int find_key_option_len(const char_u *arg, size_t len) { int key; int modifiers; @@ -4679,12 +4679,12 @@ static int find_key_option(const char_u *arg) * Don't use get_special_key_code() for t_xx, we don't want it to call * add_termcap_entry(). */ - if (arg[0] == 't' && arg[1] == '_' && arg[2] && arg[3]) + if (len >= 4 && arg[0] == 't' && arg[1] == '_') key = TERMCAP2KEY(arg[2], arg[3]); else { --arg; /* put arg at the '<' */ modifiers = 0; - key = find_special_key(&arg, STRLEN(arg), &modifiers, true, true); + key = find_special_key(&arg, len + 1, &modifiers, true, true); if (modifiers) { // can't handle modifiers here key = 0; } @@ -4692,6 +4692,12 @@ static int find_key_option(const char_u *arg) return key; } +static int find_key_option(const char_u *arg) +{ + return find_key_option_len(arg, STRLEN(arg)); +} + + /* * if 'all' == 0: show changed options * if 'all' == 1: show all normal options -- cgit