patch 9.1.0754: fixed order of items in insert-mode completion menu
Problem: fixed order of items in insert-mode completion menu
Solution: Introduce the 'completeitemalign' option with default
value "abbr,kind,menu" (glepnir).
Adding an new option `completeitemalign` abbr is `cia` to custom
the complete-item order in popupmenu.
closes: #14006
closes: #15760
Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/optionstr.c b/src/optionstr.c
index b6249a2..bf7135a 100644
--- a/src/optionstr.c
+++ b/src/optionstr.c
@@ -1635,6 +1635,58 @@
matches);
}
+/*
+ * The 'completeitemalign' option is changed.
+ */
+ char *
+did_set_completeitemalign(optset_T *args UNUSED)
+{
+ char_u *p = p_cia;
+ unsigned new_cia_flags = 0;
+ int seen[3] = { FALSE, FALSE, FALSE };
+ int count = 0;
+ char_u buf[10];
+
+ while (*p)
+ {
+ copy_option_part(&p, buf, sizeof(buf), ",");
+ if (count >= 3)
+ return e_invalid_argument;
+
+ if (STRCMP(buf, "abbr") == 0)
+ {
+ if (seen[CPT_ABBR])
+ return e_invalid_argument;
+ new_cia_flags = new_cia_flags * 10 + CPT_ABBR;
+ seen[CPT_ABBR] = TRUE;
+ count++;
+ }
+ else if (STRCMP(buf, "kind") == 0)
+ {
+ if (seen[CPT_KIND])
+ return e_invalid_argument;
+ new_cia_flags = new_cia_flags * 10 + CPT_KIND;
+ seen[CPT_KIND] = TRUE;
+ count++;
+ }
+ else if (STRCMP(buf, "menu") == 0)
+ {
+ if (seen[CPT_MENU])
+ return e_invalid_argument;
+ new_cia_flags = new_cia_flags * 10 + CPT_MENU;
+ seen[CPT_MENU] = TRUE;
+ count++;
+ }
+ else
+ return e_invalid_argument;
+ }
+ if (new_cia_flags == 0 || count != 3)
+ return e_invalid_argument;
+
+ cia_flags = new_cia_flags;
+ return NULL;
+}
+
#if (defined(FEAT_PROP_POPUP) && defined(FEAT_QUICKFIX)) || defined(PROTO)
/*
* The 'completepopup' option is changed.