]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.0.1735: Rename completion specific findex var v9.0.1735
authorzeertzjq <zeertzjq@outlook.com>
Thu, 17 Aug 2023 21:57:05 +0000 (23:57 +0200)
committerChristian Brabandt <cb@256bit.org>
Thu, 17 Aug 2023 21:57:05 +0000 (23:57 +0200)
Problem: Rename completion specific findex var
Solution: Move "findex" static variable to xp_selected in expand_T

closes: #12548

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
src/cmdexpand.c
src/structs.h
src/version.c

index 61532b91b9fbcc6e370147849e0f19ec0b9e9301..b8c2711b28fe373496ac6df1eeabc819ca47353b 100644 (file)
@@ -691,16 +691,15 @@ win_redr_status_matches(
 
 /*
  * Get the next or prev cmdline completion match. The index of the match is set
- * in "p_findex"
+ * in "xp->xp_selected"
  */
     static char_u *
 get_next_or_prev_match(
        int             mode,
        expand_T        *xp,
-       int             *p_findex,
        char_u          *orig_save)
 {
-    int findex = *p_findex;
+    int findex = xp->xp_selected;
     int ht;
 
     if (xp->xp_numfiles <= 0)
@@ -778,7 +777,7 @@ get_next_or_prev_match(
     else if (p_wmnu)
        win_redr_status_matches(xp, xp->xp_numfiles, xp->xp_files,
                findex, cmd_showtail);
-    *p_findex = findex;
+    xp->xp_selected = findex;
 
     if (findex == -1)
        return vim_strsave(orig_save);
@@ -957,7 +956,6 @@ ExpandOne(
     int                mode)
 {
     char_u     *ss = NULL;
-    static int findex;                 // TODO: Move into expand_T
     static char_u *orig_save = NULL;   // kept value of orig
     int                orig_saved = FALSE;
     int                i;
@@ -966,14 +964,14 @@ ExpandOne(
     // first handle the case of using an old match
     if (mode == WILD_NEXT || mode == WILD_PREV
            || mode == WILD_PAGEUP || mode == WILD_PAGEDOWN)
-       return get_next_or_prev_match(mode, xp, &findex, orig_save);
+       return get_next_or_prev_match(mode, xp, orig_save);
 
     if (mode == WILD_CANCEL)
        ss = vim_strsave(orig_save ? orig_save : (char_u *)"");
     else if (mode == WILD_APPLY)
-       ss = vim_strsave(findex == -1
+       ss = vim_strsave(xp->xp_selected == -1
                            ? (orig_save ? orig_save : (char_u *)"")
-                           : xp->xp_files[findex]);
+                           : xp->xp_files[xp->xp_selected]);
 
     // free old names
     if (xp->xp_numfiles != -1 && mode != WILD_ALL && mode != WILD_LONGEST)
@@ -986,9 +984,7 @@ ExpandOne(
        if (compl_match_array != NULL)
            cmdline_pum_remove();
     }
-    // TODO: Remove condition if "findex" is part of expand_T ?
-    if (mode != WILD_EXPAND_FREE && mode != WILD_ALL && mode != WILD_ALL_KEEP)
-       findex = 0;
+    xp->xp_selected = 0;
 
     if (mode == WILD_FREE)     // only release file name
        return NULL;
@@ -1006,7 +1002,7 @@ ExpandOne(
     if (mode == WILD_LONGEST && xp->xp_numfiles > 0)
     {
        ss = find_longest_match(xp, options);
-       findex = -1;                        // next p_wc gets first one
+       xp->xp_selected = -1;                   // next p_wc gets first one
     }
 
     // Concatenate all matching names.  Unless interrupted, this can be slow
index 1b4308e6bb4a56f7a52c1d76569111930a0aa486..d8c6aef9568411f93a012f83691014886de0a019 100644 (file)
@@ -609,6 +609,7 @@ typedef struct expand
     int                xp_numfiles;            // number of files found by
                                        // file name completion
     int                xp_col;                 // cursor position in line
+    int                xp_selected;            // selected index in completion
     char_u     **xp_files;             // list of files
     char_u     *xp_line;               // text being completed
 #define EXPAND_BUF_LEN 256
index ba423184d4678aae5d489e188fcdff098466cd01..d4c6108ee62212e795bd2205fa71e753eb7bd0bb 100644 (file)
@@ -695,6 +695,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1735,
 /**/
     1734,
 /**/