]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.0.0876: code is indented more than needed v9.0.0876
authorYegappan Lakshmanan <yegappan@yahoo.com>
Sun, 13 Nov 2022 22:38:10 +0000 (22:38 +0000)
committerBram Moolenaar <Bram@vim.org>
Sun, 13 Nov 2022 22:38:10 +0000 (22:38 +0000)
Problem:    Code is indented more than needed.
Solution:   Split ExpandEscape() in two. (Yegappan Lakshmanan, closes #11539)

src/cmdexpand.c
src/version.c

index 2dbde4ef7751684b74c36a56eb124437d2cb98bf..1f4791aa39f3931cc8738ac2d272e2de84f64494 100644 (file)
@@ -92,93 +92,103 @@ sort_func_compare(const void *s1, const void *s2)
  * Escape special characters in the cmdline completion matches.
  */
     static void
-ExpandEscape(
+wildescape(
     expand_T   *xp,
     char_u     *str,
     int                numfiles,
-    char_u     **files,
-    int                options)
+    char_u     **files)
 {
-    int                i;
     char_u     *p;
     int                vse_what = xp->xp_context == EXPAND_BUFFERS
                                                       ? VSE_BUFFER : VSE_NONE;
 
-    // May change home directory back to "~"
-    if (options & WILD_HOME_REPLACE)
-       tilde_replace(str, numfiles, files);
-
-    if (options & WILD_ESCAPE)
+    if (xp->xp_context == EXPAND_FILES
+           || xp->xp_context == EXPAND_FILES_IN_PATH
+           || xp->xp_context == EXPAND_SHELLCMD
+           || xp->xp_context == EXPAND_BUFFERS
+           || xp->xp_context == EXPAND_DIRECTORIES)
     {
-       if (xp->xp_context == EXPAND_FILES
-               || xp->xp_context == EXPAND_FILES_IN_PATH
-               || xp->xp_context == EXPAND_SHELLCMD
-               || xp->xp_context == EXPAND_BUFFERS
-               || xp->xp_context == EXPAND_DIRECTORIES)
+       // Insert a backslash into a file name before a space, \, %, #
+       // and wildmatch characters, except '~'.
+       for (int i = 0; i < numfiles; ++i)
        {
-           // Insert a backslash into a file name before a space, \, %, #
-           // and wildmatch characters, except '~'.
-           for (i = 0; i < numfiles; ++i)
+           // for ":set path=" we need to escape spaces twice
+           if (xp->xp_backslash == XP_BS_THREE)
            {
-               // for ":set path=" we need to escape spaces twice
-               if (xp->xp_backslash == XP_BS_THREE)
+               p = vim_strsave_escaped(files[i], (char_u *)" ");
+               if (p != NULL)
                {
+                   vim_free(files[i]);
+                   files[i] = p;
+#if defined(BACKSLASH_IN_FILENAME)
                    p = vim_strsave_escaped(files[i], (char_u *)" ");
                    if (p != NULL)
                    {
                        vim_free(files[i]);
                        files[i] = p;
-#if defined(BACKSLASH_IN_FILENAME)
-                       p = vim_strsave_escaped(files[i], (char_u *)" ");
-                       if (p != NULL)
-                       {
-                           vim_free(files[i]);
-                           files[i] = p;
-                       }
-#endif
                    }
+#endif
                }
+           }
 #ifdef BACKSLASH_IN_FILENAME
-               p = vim_strsave_fnameescape(files[i], vse_what);
+           p = vim_strsave_fnameescape(files[i], vse_what);
 #else
-               p = vim_strsave_fnameescape(files[i],
-                                         xp->xp_shell ? VSE_SHELL : vse_what);
+           p = vim_strsave_fnameescape(files[i],
+                   xp->xp_shell ? VSE_SHELL : vse_what);
 #endif
-               if (p != NULL)
-               {
-                   vim_free(files[i]);
-                   files[i] = p;
-               }
-
-               // If 'str' starts with "\~", replace "~" at start of
-               // files[i] with "\~".
-               if (str[0] == '\\' && str[1] == '~' && files[i][0] == '~')
-                   escape_fname(&files[i]);
+           if (p != NULL)
+           {
+               vim_free(files[i]);
+               files[i] = p;
            }
-           xp->xp_backslash = XP_BS_NONE;
 
-           // If the first file starts with a '+' escape it.  Otherwise it
-           // could be seen as "+cmd".
-           if (*files[0] == '+')
-               escape_fname(&files[0]);
+           // If 'str' starts with "\~", replace "~" at start of
+           // files[i] with "\~".
+           if (str[0] == '\\' && str[1] == '~' && files[i][0] == '~')
+               escape_fname(&files[i]);
        }
-       else if (xp->xp_context == EXPAND_TAGS)
+       xp->xp_backslash = XP_BS_NONE;
+
+       // If the first file starts with a '+' escape it.  Otherwise it
+       // could be seen as "+cmd".
+       if (*files[0] == '+')
+           escape_fname(&files[0]);
+    }
+    else if (xp->xp_context == EXPAND_TAGS)
+    {
+       // Insert a backslash before characters in a tag name that
+       // would terminate the ":tag" command.
+       for (int i = 0; i < numfiles; ++i)
        {
-           // Insert a backslash before characters in a tag name that
-           // would terminate the ":tag" command.
-           for (i = 0; i < numfiles; ++i)
+           p = vim_strsave_escaped(files[i], (char_u *)"\\|\"");
+           if (p != NULL)
            {
-               p = vim_strsave_escaped(files[i], (char_u *)"\\|\"");
-               if (p != NULL)
-               {
-                   vim_free(files[i]);
-                   files[i] = p;
-               }
+               vim_free(files[i]);
+               files[i] = p;
            }
        }
     }
 }
 
+/*
+ * Escape special characters in the cmdline completion matches.
+ */
+    static void
+ExpandEscape(
+    expand_T   *xp,
+    char_u     *str,
+    int                numfiles,
+    char_u     **files,
+    int                options)
+{
+    // May change home directory back to "~"
+    if (options & WILD_HOME_REPLACE)
+       tilde_replace(str, numfiles, files);
+
+    if (options & WILD_ESCAPE)
+       wildescape(xp, str, numfiles, files);
+}
+
 /*
  * Return FAIL if this is not an appropriate context in which to do
  * completion of anything, return OK if it is (even if there are no matches).
@@ -3238,7 +3248,6 @@ expand_shellcmd_onedir(
        garray_T        *gap)
 {
     int                ret;
-    int                i;
     hash_T     hash;
     hashitem_T *hi;
 
@@ -3249,35 +3258,36 @@ expand_shellcmd_onedir(
 
     // Expand matches in one directory of $PATH.
     ret = expand_wildcards(1, &buf, numMatches, matches, flags);
-    if (ret == OK)
+    if (ret != OK)
+       return;
+
+    if (ga_grow(gap, *numMatches) == FAIL)
     {
-       if (ga_grow(gap, *numMatches) == FAIL)
-           FreeWild(*numMatches, *matches);
-       else
+       FreeWild(*numMatches, *matches);
+       return;
+    }
+
+    for (int i = 0; i < *numMatches; ++i)
+    {
+       char_u *name = (*matches)[i];
+
+       if (STRLEN(name) > l)
        {
-           for (i = 0; i < *numMatches; ++i)
+           // Check if this name was already found.
+           hash = hash_hash(name + l);
+           hi = hash_lookup(ht, name + l, hash);
+           if (HASHITEM_EMPTY(hi))
            {
-               char_u *name = (*matches)[i];
-
-               if (STRLEN(name) > l)
-               {
-                   // Check if this name was already found.
-                   hash = hash_hash(name + l);
-                   hi = hash_lookup(ht, name + l, hash);
-                   if (HASHITEM_EMPTY(hi))
-                   {
-                       // Remove the path that was prepended.
-                       STRMOVE(name, name + l);
-                       ((char_u **)gap->ga_data)[gap->ga_len++] = name;
-                       hash_add_item(ht, hi, name, hash);
-                       name = NULL;
-                   }
-               }
-               vim_free(name);
+               // Remove the path that was prepended.
+               STRMOVE(name, name + l);
+               ((char_u **)gap->ga_data)[gap->ga_len++] = name;
+               hash_add_item(ht, hi, name, hash);
+               name = NULL;
            }
-           vim_free(*matches);
        }
+       vim_free(name);
     }
+    vim_free(*matches);
 }
 
 /*
index 9a459eac465979dfe78bece7f1262a3808efde1f..868118d0c7615117e42e5459a8ecc4eccebe7885 100644 (file)
@@ -695,6 +695,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    876,
 /**/
     875,
 /**/