Loading ...
Sorry, an error occurred while loading the content.

Patch 7.3.237

Expand Messages
  • Bram Moolenaar
    Patch 7.3.237 Problem: filetype completion doesn t work on Windows. (Yue Wu) Solution: Don t use a glob pattern for the directories, use a list of
    Message 1 of 1 , Jun 26, 2011
    • 0 Attachment
      Patch 7.3.237
      Problem: "filetype" completion doesn't work on Windows. (Yue Wu)
      Solution: Don't use a glob pattern for the directories, use a list of
      directories. (Dominique Pelle)
      Files: src/ex_getln.c


      *** ../vim-7.3.236/src/ex_getln.c 2011-05-19 18:26:34.000000000 +0200
      --- src/ex_getln.c 2011-06-26 19:36:36.000000000 +0200
      ***************
      *** 110,116 ****
      static int expand_showtail __ARGS((expand_T *xp));
      #ifdef FEAT_CMDL_COMPL
      static int expand_shellcmd __ARGS((char_u *filepat, int *num_file, char_u ***file, int flagsarg));
      ! static int ExpandRTDir __ARGS((char_u *pat, int *num_file, char_u ***file, char *dirname));
      # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL)
      static int ExpandUserDefined __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file));
      static int ExpandUserList __ARGS((expand_T *xp, int *num_file, char_u ***file));
      --- 110,116 ----
      static int expand_showtail __ARGS((expand_T *xp));
      #ifdef FEAT_CMDL_COMPL
      static int expand_shellcmd __ARGS((char_u *filepat, int *num_file, char_u ***file, int flagsarg));
      ! static int ExpandRTDir __ARGS((char_u *pat, int *num_file, char_u ***file, char *dirname[]));
      # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL)
      static int ExpandUserDefined __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file));
      static int ExpandUserList __ARGS((expand_T *xp, int *num_file, char_u ***file));
      ***************
      *** 4536,4548 ****
      || xp->xp_context == EXPAND_TAGS_LISTFILES)
      return expand_tags(xp->xp_context == EXPAND_TAGS, pat, num_file, file);
      if (xp->xp_context == EXPAND_COLORS)
      ! return ExpandRTDir(pat, num_file, file, "colors");
      if (xp->xp_context == EXPAND_COMPILER)
      ! return ExpandRTDir(pat, num_file, file, "compiler");
      if (xp->xp_context == EXPAND_OWNSYNTAX)
      ! return ExpandRTDir(pat, num_file, file, "syntax");
      if (xp->xp_context == EXPAND_FILETYPE)
      ! return ExpandRTDir(pat, num_file, file, "{syntax,indent,ftplugin}");
      # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL)
      if (xp->xp_context == EXPAND_USER_LIST)
      return ExpandUserList(xp, num_file, file);
      --- 4536,4560 ----
      || xp->xp_context == EXPAND_TAGS_LISTFILES)
      return expand_tags(xp->xp_context == EXPAND_TAGS, pat, num_file, file);
      if (xp->xp_context == EXPAND_COLORS)
      ! {
      ! char *directories[] = {"colors", NULL};
      ! return ExpandRTDir(pat, num_file, file, directories);
      ! }
      if (xp->xp_context == EXPAND_COMPILER)
      ! {
      ! char *directories[] = {"colors", NULL};
      ! return ExpandRTDir(pat, num_file, file, directories);
      ! }
      if (xp->xp_context == EXPAND_OWNSYNTAX)
      ! {
      ! char *directories[] = {"syntax", NULL};
      ! return ExpandRTDir(pat, num_file, file, directories);
      ! }
      if (xp->xp_context == EXPAND_FILETYPE)
      ! {
      ! char *directories[] = {"syntax", "indent", "ftplugin", NULL};
      ! return ExpandRTDir(pat, num_file, file, directories);
      ! }
      # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL)
      if (xp->xp_context == EXPAND_USER_LIST)
      return ExpandUserList(xp, num_file, file);
      ***************
      *** 4995,5051 ****
      /*
      * Expand color scheme, compiler or filetype names:
      * 'runtimepath'/{dirnames}/{pat}.vim
      ! * dirnames may contain one directory (ex: "colorscheme") or can be a glob
      ! * expression matching multiple directories (ex: "{syntax,ftplugin,indent}").
      */
      static int
      ExpandRTDir(pat, num_file, file, dirnames)
      char_u *pat;
      int *num_file;
      char_u ***file;
      ! char *dirnames;
      {
      ! char_u *all;
      char_u *s;
      char_u *e;
      garray_T ga;

      *num_file = 0;
      *file = NULL;
      ! s = alloc((unsigned)(STRLEN(pat) + STRLEN(dirnames) + 7));
      ! if (s == NULL)
      ! return FAIL;
      ! sprintf((char *)s, "%s/%s*.vim", dirnames, pat);
      ! all = globpath(p_rtp, s, 0);
      ! vim_free(s);
      ! if (all == NULL)
      ! return FAIL;

      ! ga_init2(&ga, (int)sizeof(char *), 3);
      ! for (s = all; *s != NUL; s = e)
      {
      ! e = vim_strchr(s, '\n');
      ! if (e == NULL)
      ! e = s + STRLEN(s);
      ! if (ga_grow(&ga, 1) == FAIL)
      ! break;
      ! if (e - 4 > s && STRNICMP(e - 4, ".vim", 4) == 0)
      {
      ! for (s = e - 4; s > all; mb_ptr_back(all, s))
      ! if (*s == '\n' || vim_ispathsep(*s))
      ! break;
      ! ++s;
      ! ((char_u **)ga.ga_data)[ga.ga_len] =
      vim_strnsave(s, (int)(e - s - 4));
      ! ++ga.ga_len;
      }
      ! if (*e != NUL)
      ! ++e;
      }
      ! vim_free(all);

      /* Sort and remove duplicates which can happen when specifying multiple
      ! * directories in dirnames such as "{syntax,ftplugin,indent}". */
      remove_duplicates(&ga);

      *file = ga.ga_data;
      --- 5007,5074 ----
      /*
      * Expand color scheme, compiler or filetype names:
      * 'runtimepath'/{dirnames}/{pat}.vim
      ! * "dirnames" is an array with one or more directory names.
      */
      static int
      ExpandRTDir(pat, num_file, file, dirnames)
      char_u *pat;
      int *num_file;
      char_u ***file;
      ! char *dirnames[];
      {
      ! char_u *matches;
      char_u *s;
      char_u *e;
      garray_T ga;
      + int i;
      + int pat_len;

      *num_file = 0;
      *file = NULL;
      ! pat_len = STRLEN(pat);
      ! ga_init2(&ga, (int)sizeof(char *), 10);

      ! for (i = 0; dirnames[i] != NULL; ++i)
      {
      ! s = alloc((unsigned)(STRLEN(dirnames[i]) + pat_len + 7));
      ! if (s == NULL)
      {
      ! ga_clear_strings(&ga);
      ! return FAIL;
      ! }
      ! sprintf((char *)s, "%s/%s*.vim", dirnames[i], pat);
      ! matches = globpath(p_rtp, s, 0);
      ! vim_free(s);
      ! if (matches == NULL)
      ! continue;
      !
      ! for (s = matches; *s != NUL; s = e)
      ! {
      ! e = vim_strchr(s, '\n');
      ! if (e == NULL)
      ! e = s + STRLEN(s);
      ! if (ga_grow(&ga, 1) == FAIL)
      ! break;
      ! if (e - 4 > s && STRNICMP(e - 4, ".vim", 4) == 0)
      ! {
      ! for (s = e - 4; s > matches; mb_ptr_back(matches, s))
      ! if (*s == '\n' || vim_ispathsep(*s))
      ! break;
      ! ++s;
      ! ((char_u **)ga.ga_data)[ga.ga_len] =
      vim_strnsave(s, (int)(e - s - 4));
      ! ++ga.ga_len;
      ! }
      ! if (*e != NUL)
      ! ++e;
      }
      ! vim_free(matches);
      }
      ! if (ga.ga_len == 0)
      ! return FAIL;

      /* Sort and remove duplicates which can happen when specifying multiple
      ! * directories in dirnames. */
      remove_duplicates(&ga);

      *file = ga.ga_data;
      *** ../vim-7.3.236/src/version.c 2011-06-26 19:13:33.000000000 +0200
      --- src/version.c 2011-06-26 19:39:39.000000000 +0200
      ***************
      *** 711,712 ****
      --- 711,714 ----
      { /* Add new patch number below this line */
      + /**/
      + 237,
      /**/

      --
      hundred-and-one symptoms of being an internet addict:
      230. You spend your Friday nights typing away at your keyboard

      /// Bram Moolenaar -- Bram@... -- http://www.Moolenaar.net \\\
      /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
      \\\ an exciting new programming language -- http://www.Zimbu.org ///
      \\\ help me help AIDS victims -- http://ICCF-Holland.org ///

      --
      You received this message from the "vim_dev" maillist.
      Do not top-post! Type your reply below the text you are replying to.
      For more information, visit http://www.vim.org/maillist.php
    Your message has been successfully submitted and would be delivered to recipients shortly.