diff options
-rw-r--r-- | src/ex_cmds.c | 18 | ||||
-rw-r--r-- | src/testdir/test57.in | 6 | ||||
-rw-r--r-- | src/testdir/test57.ok | 4 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 22 insertions, 8 deletions
diff --git a/src/ex_cmds.c b/src/ex_cmds.c index fb32545c1..b3f761921 100644 --- a/src/ex_cmds.c +++ b/src/ex_cmds.c @@ -323,7 +323,8 @@ sort_compare(s1, s2) /* When sorting numbers "start_col_nr" is the number, not the column * number. */ if (sort_nr) - result = l1.start_col_nr - l2.start_col_nr; + result = l1.start_col_nr == l2.start_col_nr ? 0 + : l1.start_col_nr > l2.start_col_nr ? 1 : -1; else { /* We need to copy one line into "sortbuf1", because there is no @@ -482,7 +483,7 @@ ex_sort(eap) * of the match, by temporarily terminating the string there */ s2 = s + end_col; c = *s2; - (*s2) = 0; + *s2 = NUL; /* Sorting on number: Store the number itself. */ p = s + start_col; if (sort_hex) @@ -491,9 +492,13 @@ ex_sort(eap) s = skiptodigit(p); if (s > p && s[-1] == '-') --s; /* include preceding negative sign */ - vim_str2nr(s, NULL, NULL, sort_oct, sort_hex, - &nrs[lnum - eap->line1].start_col_nr, NULL); - (*s2) = c; + if (*s == NUL) + /* empty line should sort before any number */ + nrs[lnum - eap->line1].start_col_nr = -MAXLNUM; + else + vim_str2nr(s, NULL, NULL, sort_oct, sort_hex, + &nrs[lnum - eap->line1].start_col_nr, NULL); + *s2 = c; } else { @@ -6556,8 +6561,7 @@ typedef struct sign sign_T; struct sign { sign_T *sn_next; /* next sign in list */ - int sn_typenr; /* type number of sign (negative if not equal - to name) */ + int sn_typenr; /* type number of sign */ char_u *sn_name; /* name of sign */ char_u *sn_icon; /* name of pixmap */ #ifdef FEAT_SIGN_ICONS diff --git a/src/testdir/test57.in b/src/testdir/test57.in index d74af5791..8d972e4a6 100644 --- a/src/testdir/test57.in +++ b/src/testdir/test57.in @@ -53,15 +53,19 @@ b321b t02: numeric abc ab -a a321 a123 a122 +a +x-22 b321 b123 + c123d +-24 123b c321d +0 b322b b321 b321b diff --git a/src/testdir/test57.ok b/src/testdir/test57.ok index 177713342..aa3d37318 100644 --- a/src/testdir/test57.ok +++ b/src/testdir/test57.ok @@ -21,6 +21,10 @@ ab a + +-24 +x-22 +0 a122 a123 b123 diff --git a/src/version.c b/src/version.c index 9b49122ee..9584550ba 100644 --- a/src/version.c +++ b/src/version.c @@ -715,6 +715,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 29, +/**/ 28, /**/ 27, |