diff src/option.c @ 33897:7777043c9393 v9.0.2154

patch 9.0.2154: The option[] array is not sorted Commit: https://github.com/vim/vim/commit/f48558e10a08a1a483e25ef847bbceeac6b44561 Author: zeertzjq <zeertzjq@outlook.com> Date: Fri Dec 8 21:34:31 2023 +0100 patch 9.0.2154: The option[] array is not sorted Problem: The options[] array is not sorted alphabetically. Solution: Sort it alphabetically. Add a test. Avoid unnecessary loop iterations in findoption(). closes: #13648 Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Sun, 10 Dec 2023 15:16:32 +0100
parents 2f9090601258
children 1629cc65d78d
line wrap: on
line diff
--- a/src/option.c
+++ b/src/option.c
@@ -4933,11 +4933,13 @@ findoption(char_u *arg)
 	opt_idx = quick_tab[26];
     else
 	opt_idx = quick_tab[CharOrdLow(arg[0])];
-    for ( ; (s = options[opt_idx].fullname) != NULL; opt_idx++)
+    for (; (s = options[opt_idx].fullname) != NULL && s[0] == arg[0]; opt_idx++)
     {
 	if (STRCMP(arg, s) == 0)		    // match full name
 	    break;
     }
+    if (s != NULL && s[0] != arg[0])
+	s = NULL;
     if (s == NULL && !is_term_opt)
     {
 	opt_idx = quick_tab[CharOrdLow(arg[0])];