]> granicus.if.org Git - vim/commitdiff
updated for version 7.3.1115 v7.3.1115
authorBram Moolenaar <Bram@vim.org>
Tue, 4 Jun 2013 20:13:50 +0000 (22:13 +0200)
committerBram Moolenaar <Bram@vim.org>
Tue, 4 Jun 2013 20:13:50 +0000 (22:13 +0200)
Problem:    Many users don't like the cursor line number when 'relativenumber'
            is set.
Solution:   Have four combinations with 'number' and 'relativenumber'.
            (Christian Brabandt)

src/option.c
src/screen.c
src/testdir/test89.in
src/testdir/test89.ok
src/version.c

index a9ee0673cd81bb2a2e816c674579beff42474997..fa28e840ac2d0ec482b2d41b1cc42a7b5313087a 100644 (file)
@@ -7647,35 +7647,6 @@ set_bool_option(opt_idx, varp, value, opt_flags)
     }
 #endif
 
-    /* If 'number' is set, reset 'relativenumber'. */
-    /* If 'relativenumber' is set, reset 'number'. */
-    else if ((int *)varp == &curwin->w_p_nu && curwin->w_p_nu)
-    {
-       curwin->w_p_rnu = FALSE;
-
-       /* Only reset the global value if the own value is set globally. */
-       if (((opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0))
-           curwin->w_allbuf_opt.wo_rnu = FALSE;
-    }
-    else if ((int *)varp == &curwin->w_p_rnu && curwin->w_p_rnu)
-    {
-       curwin->w_p_nu = FALSE;
-
-       /* Only reset the global value if the own value is set globally. */
-       if (((opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0))
-           curwin->w_allbuf_opt.wo_nu = FALSE;
-    }
-    else if ((int *)varp == &curwin->w_allbuf_opt.wo_nu
-                                               && curwin->w_allbuf_opt.wo_nu)
-    {
-        curwin->w_allbuf_opt.wo_rnu = FALSE;
-    }
-    else if ((int *)varp == &curwin->w_allbuf_opt.wo_rnu
-                                              && curwin->w_allbuf_opt.wo_rnu)
-    {
-        curwin->w_allbuf_opt.wo_nu = FALSE;
-    }
-
     else if ((int *)varp == &curbuf->b_p_ro)
     {
        /* when 'readonly' is reset globally, also reset readonlymode */
index cc8afa6d215ad201eb018ae8ae08743df6471dc4..cf6ed7306e713c7ae6e758f73b6bf2e5b104eeee 100644 (file)
@@ -2329,15 +2329,17 @@ fold_line(wp, fold_count, foldinfo, lnum, row)
            if (len > w + 1)
                len = w + 1;
 
-           if (wp->w_p_nu)
-               /* 'number' */
+           if (wp->w_p_nu && !wp->w_p_rnu)
+               /* 'number' + 'norelativenumber' */
                num = (long)lnum;
            else
            {
                /* 'relativenumber', don't use negative numbers */
                num = labs((long)get_cursor_rel_lnum(wp, lnum));
-               if (num == 0)
+               if (num == 0 && wp->w_p_nu && wp->w_p_rnu)
                {
+                   /* 'number' + 'relativenumber': cursor line shows absolute
+                    * line number */
                    num = lnum;
                    fmt = "%-*ld ";
                }
@@ -3499,15 +3501,16 @@ win_line(wp, lnum, startrow, endrow, nochange)
                        long num;
                        char *fmt = "%*ld ";
 
-                       if (wp->w_p_nu)
-                           /* 'number' */
+                       if (wp->w_p_nu && !wp->w_p_rnu)
+                           /* 'number' + 'norelativenumber' */
                            num = (long)lnum;
                        else
                        {
                            /* 'relativenumber', don't use negative numbers */
                            num = labs((long)get_cursor_rel_lnum(wp, lnum));
-                           if (num == 0)
+                           if (num == 0 && wp->w_p_nu && wp->w_p_rnu)
                            {
+                               /* 'number' + 'relativenumber' */
                                num = lnum;
                                fmt = "%-*ld ";
                            }
@@ -10260,7 +10263,12 @@ number_width(wp)
     int                n;
     linenr_T   lnum;
 
-    lnum = wp->w_buffer->b_ml.ml_line_count;
+    if (wp->w_p_rnu && !wp->w_p_nu)
+       /* cursor line shows "0" */
+       lnum = wp->w_height;
+    else
+       /* cursor line shows absolute line number */
+       lnum = wp->w_buffer->b_ml.ml_line_count;
 
     if (lnum == wp->w_nrwidth_line_count)
        return wp->w_nrwidth_width;
index 4306edda59f057d734619cf7c1f49ea68f7045c1..8e53c917650bcd1dee38df324e2b87e7ed33004b 100644 (file)
@@ -1,4 +1,6 @@
 Some tests for setting 'number' and 'relativenumber'
+This is not all that useful now that the options are no longer reset when
+setting the other.
 
 STARTTEST
 :so small.vim
index 93824bb947d0b97d32fe20e3547c78db37108e6a..17bb5d764a549b71853f406658a1e3a03533cfb9 100644 (file)
@@ -1,9 +1,9 @@
 results:
 
-nonumber
+  number
   relativenumber
 
-nonumber
+  number
   relativenumber
 :setlocal must NOT reset the other global value
 
@@ -12,11 +12,11 @@ nonumber
   relativenumber
 :setglobal MUST reset the other global value
 
-nonumber
+  number
 
-norelativenumber
+  relativenumber
 :set MUST reset the other global value
 
-nonumber
+  number
 
-norelativenumber
+  relativenumber
index a2d70370b9265a57122e92c41c3e75a4d75c6d07..cf536b8de13e56b0d0e54bd65b7334469f0a973e 100644 (file)
@@ -728,6 +728,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1115,
 /**/
     1114,
 /**/