To: vim_dev@googlegroups.com
Subject: Patch 7.3.352
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.3.352
Problem:    When completing methods dict functions and script-local functions
	    get in the way.
Solution:   Sort function names starting with "<" to the end. (Yasuhiro
	    Matsumoto)
Files:	    src/ex_getln.c


*** ../vim-7.3.351/src/ex_getln.c	2011-09-30 17:46:14.000000000 +0200
--- src/ex_getln.c	2011-10-26 21:37:53.000000000 +0200
***************
*** 121,126 ****
--- 121,134 ----
  static int	ex_window __ARGS((void));
  #endif
  
+ #if defined(FEAT_CMDL_COMPL) || defined(PROTO)
+ static int
+ #ifdef __BORLANDC__
+ _RTLENTRYF
+ #endif
+ sort_func_compare __ARGS((const void *s1, const void *s2));
+ #endif
+ 
  /*
   * getcmdline() - accept a command line starting with firstc.
   *
***************
*** 3286,3291 ****
--- 3294,3317 ----
      return check_abbr(c, ccline.cmdbuff, ccline.cmdpos, 0);
  }
  
+ #if defined(FEAT_CMDL_COMPL) || defined(PROTO)
+     static int
+ #ifdef __BORLANDC__
+ _RTLENTRYF
+ #endif
+ sort_func_compare(s1, s2)
+     const void *s1;
+     const void *s2;
+ {
+     char_u *p1 = *(char_u **)s1;
+     char_u *p2 = *(char_u **)s2;
+ 
+     if (*p1 != '<' && *p2 == '<') return -1;
+     if (*p1 == '<' && *p2 != '<') return 1;
+     return STRCMP(p1, p2);
+ }
+ #endif
+ 
  /*
   * 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).
***************
*** 4735,4741 ****
  
      /* Sort the results.  Keep menu's in the specified order. */
      if (xp->xp_context != EXPAND_MENUNAMES && xp->xp_context != EXPAND_MENUS)
! 	sort_strings(*file, *num_file);
  
  #ifdef FEAT_CMDL_COMPL
      /* Reset the variables used for special highlight names expansion, so that
--- 4761,4776 ----
  
      /* Sort the results.  Keep menu's in the specified order. */
      if (xp->xp_context != EXPAND_MENUNAMES && xp->xp_context != EXPAND_MENUS)
!     {
! 	if (xp->xp_context == EXPAND_EXPRESSION
! 		|| xp->xp_context == EXPAND_FUNCTIONS
! 		|| xp->xp_context == EXPAND_USER_FUNC)
! 	    /* <SNR> functions should be sorted to the end. */
! 	    qsort((void *)*file, (size_t)*num_file, sizeof(char_u *),
! 							   sort_func_compare);
! 	else
! 	    sort_strings(*file, *num_file);
!     }
  
  #ifdef FEAT_CMDL_COMPL
      /* Reset the variables used for special highlight names expansion, so that
*** ../vim-7.3.351/src/version.c	2011-10-26 17:04:23.000000000 +0200
--- src/version.c	2011-10-26 21:49:53.000000000 +0200
***************
*** 716,717 ****
--- 716,719 ----
  {   /* Add new patch number below this line */
+ /**/
+     352,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
94. Now admit it... How many of you have made "modem noises" into
    the phone just to see if it was possible? :-)

 /// Bram Moolenaar -- Bram@Moolenaar.net -- 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    ///
