cf26dbf
To: vim-dev@vim.org
cf26dbf
Subject: Patch 7.3.029
cf26dbf
Fcc: outbox
cf26dbf
From: Bram Moolenaar <Bram@moolenaar.net>
cf26dbf
Mime-Version: 1.0
cf26dbf
Content-Type: text/plain; charset=UTF-8
cf26dbf
Content-Transfer-Encoding: 8bit
cf26dbf
------------
cf26dbf
cf26dbf
Patch 7.3.029
cf26dbf
Problem:    ":sort n" sorts lines without a number as number zero. (Beeyawned)
cf26dbf
Solution:   Make lines without a number sort before lines with a number.  Also
cf26dbf
	    fix sorting negative numbers.
cf26dbf
Files:	    src/ex_cmds.c, src/testdir/test57.in, src/testdir/test57.ok
cf26dbf
cf26dbf
cf26dbf
*** ../vim-7.3.028/src/ex_cmds.c	2010-10-14 21:29:31.000000000 +0200
cf26dbf
--- src/ex_cmds.c	2010-10-15 20:04:25.000000000 +0200
cf26dbf
***************
cf26dbf
*** 323,329 ****
cf26dbf
      /* When sorting numbers "start_col_nr" is the number, not the column
cf26dbf
       * number. */
cf26dbf
      if (sort_nr)
cf26dbf
! 	result = l1.start_col_nr - l2.start_col_nr;
cf26dbf
      else
cf26dbf
      {
cf26dbf
  	/* We need to copy one line into "sortbuf1", because there is no
cf26dbf
--- 323,330 ----
cf26dbf
      /* When sorting numbers "start_col_nr" is the number, not the column
cf26dbf
       * number. */
cf26dbf
      if (sort_nr)
cf26dbf
! 	result = l1.start_col_nr == l2.start_col_nr ? 0
cf26dbf
! 				 : l1.start_col_nr > l2.start_col_nr ? 1 : -1;
cf26dbf
      else
cf26dbf
      {
cf26dbf
  	/* We need to copy one line into "sortbuf1", because there is no
cf26dbf
***************
cf26dbf
*** 482,488 ****
cf26dbf
  	     * of the match, by temporarily terminating the string there */
cf26dbf
  	    s2 = s + end_col;
cf26dbf
  	    c = *s2;
cf26dbf
! 	    (*s2) = 0;
cf26dbf
  	    /* Sorting on number: Store the number itself. */
cf26dbf
  	    p = s + start_col;
cf26dbf
  	    if (sort_hex)
cf26dbf
--- 483,489 ----
cf26dbf
  	     * of the match, by temporarily terminating the string there */
cf26dbf
  	    s2 = s + end_col;
cf26dbf
  	    c = *s2;
cf26dbf
! 	    *s2 = NUL;
cf26dbf
  	    /* Sorting on number: Store the number itself. */
cf26dbf
  	    p = s + start_col;
cf26dbf
  	    if (sort_hex)
cf26dbf
***************
cf26dbf
*** 491,499 ****
cf26dbf
  		s = skiptodigit(p);
cf26dbf
  	    if (s > p && s[-1] == '-')
cf26dbf
  		--s;  /* include preceding negative sign */
cf26dbf
! 	    vim_str2nr(s, NULL, NULL, sort_oct, sort_hex,
cf26dbf
! 					&nrs[lnum - eap->line1].start_col_nr, NULL);
cf26dbf
! 	    (*s2) = c;
cf26dbf
  	}
cf26dbf
  	else
cf26dbf
  	{
cf26dbf
--- 492,504 ----
cf26dbf
  		s = skiptodigit(p);
cf26dbf
  	    if (s > p && s[-1] == '-')
cf26dbf
  		--s;  /* include preceding negative sign */
cf26dbf
! 	    if (*s == NUL)
cf26dbf
! 		/* empty line should sort before any number */
cf26dbf
! 		nrs[lnum - eap->line1].start_col_nr = -MAXLNUM;
cf26dbf
! 	    else
cf26dbf
! 		vim_str2nr(s, NULL, NULL, sort_oct, sort_hex,
cf26dbf
! 				  &nrs[lnum - eap->line1].start_col_nr, NULL);
cf26dbf
! 	    *s2 = c;
cf26dbf
  	}
cf26dbf
  	else
cf26dbf
  	{
cf26dbf
***************
cf26dbf
*** 6556,6563 ****
cf26dbf
  struct sign
cf26dbf
  {
cf26dbf
      sign_T	*sn_next;	/* next sign in list */
cf26dbf
!     int		sn_typenr;	/* type number of sign (negative if not equal
cf26dbf
! 				   to name) */
cf26dbf
      char_u	*sn_name;	/* name of sign */
cf26dbf
      char_u	*sn_icon;	/* name of pixmap */
cf26dbf
  #ifdef FEAT_SIGN_ICONS
cf26dbf
--- 6561,6567 ----
cf26dbf
  struct sign
cf26dbf
  {
cf26dbf
      sign_T	*sn_next;	/* next sign in list */
cf26dbf
!     int		sn_typenr;	/* type number of sign */
cf26dbf
      char_u	*sn_name;	/* name of sign */
cf26dbf
      char_u	*sn_icon;	/* name of pixmap */
cf26dbf
  #ifdef FEAT_SIGN_ICONS
cf26dbf
*** ../vim-7.3.028/src/testdir/test57.in	2010-08-15 21:57:29.000000000 +0200
cf26dbf
--- src/testdir/test57.in	2010-10-15 20:12:23.000000000 +0200
cf26dbf
***************
cf26dbf
*** 53,67 ****
cf26dbf
  t02: numeric
cf26dbf
  abc
cf26dbf
  ab
cf26dbf
- a
cf26dbf
  a321
cf26dbf
  a123
cf26dbf
  a122
cf26dbf
  b321
cf26dbf
  b123
cf26dbf
  c123d
cf26dbf
   123b
cf26dbf
  c321d
cf26dbf
  b322b
cf26dbf
  b321
cf26dbf
  b321b
cf26dbf
--- 53,71 ----
cf26dbf
  t02: numeric
cf26dbf
  abc
cf26dbf
  ab
cf26dbf
  a321
cf26dbf
  a123
cf26dbf
  a122
cf26dbf
+ a
cf26dbf
+ x-22
cf26dbf
  b321
cf26dbf
  b123
cf26dbf
+ 
cf26dbf
  c123d
cf26dbf
+ -24
cf26dbf
   123b
cf26dbf
  c321d
cf26dbf
+ 0
cf26dbf
  b322b
cf26dbf
  b321
cf26dbf
  b321b
cf26dbf
*** ../vim-7.3.028/src/testdir/test57.ok	2010-08-15 21:57:29.000000000 +0200
cf26dbf
--- src/testdir/test57.ok	2010-10-15 20:11:42.000000000 +0200
cf26dbf
***************
cf26dbf
*** 21,26 ****
cf26dbf
--- 21,30 ----
cf26dbf
  a
cf26dbf
  
cf26dbf
  
cf26dbf
+ 
cf26dbf
+ -24
cf26dbf
+ x-22
cf26dbf
+ 0
cf26dbf
  a122
cf26dbf
  a123
cf26dbf
  b123
cf26dbf
*** ../vim-7.3.028/src/version.c	2010-10-14 21:29:31.000000000 +0200
cf26dbf
--- src/version.c	2010-10-15 20:13:52.000000000 +0200
cf26dbf
***************
cf26dbf
*** 716,717 ****
cf26dbf
--- 716,719 ----
cf26dbf
  {   /* Add new patch number below this line */
cf26dbf
+ /**/
cf26dbf
+     29,
cf26dbf
  /**/
cf26dbf
cf26dbf
-- 
cf26dbf
       When danger reared its ugly head,
cf26dbf
       He bravely turned his tail and fled
cf26dbf
       Yes, Brave Sir Robin turned about
cf26dbf
       And gallantly he chickened out
cf26dbf
       Bravely taking to his feet
cf26dbf
       He beat a very brave retreat
cf26dbf
       Bravest of the brave Sir Robin
cf26dbf
       Petrified of being dead
cf26dbf
       Soiled his pants then brave Sir Robin
cf26dbf
       Turned away and fled.
cf26dbf
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
cf26dbf
cf26dbf
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
cf26dbf
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
cf26dbf
\\\        download, build and distribute -- http://www.A-A-P.org        ///
cf26dbf
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///