]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
updated for version 7.3.861 v7.3.861
authorBram Moolenaar <Bram@vim.org>
Wed, 13 Mar 2013 19:42:32 +0000 (20:42 +0100)
committerBram Moolenaar <Bram@vim.org>
Wed, 13 Mar 2013 19:42:32 +0000 (20:42 +0100)
Problem:    ":setlocal number" clears global value of 'relativenumber'.
Solution:   Do it properly. (Markus Heidelberg)

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

index f9d9fd5c258f883dcc2e632d533a198672ddf2cb..467d578a6fa43e08c0c55f3ee8b5edde716e68b0 100644 (file)
@@ -7631,22 +7631,33 @@ set_bool_option(opt_idx, varp, value, opt_flags)
     }
 #endif
 
-    /* 'number', 'relativenumber' */
-    else if ((int *)varp == &curwin->w_p_nu
-         || (int *)varp == &curwin->w_p_rnu)
+    /* If 'number' is set, reset 'relativenumber'. */
+    /* If 'relativenumber' is set, reset 'number'. */
+    else if ((int *)varp == &curwin->w_p_nu && curwin->w_p_nu)
     {
-       /* If 'number' is set, reset 'relativenumber'. */
-       /* If 'relativenumber' is set, reset 'number'. */
-       if ((int *)varp == &curwin->w_p_nu && curwin->w_p_nu)
-       {
-           curwin->w_p_rnu = FALSE;
+       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;
-       }
-       if ((int *)varp == &curwin->w_p_rnu && curwin->w_p_rnu)
-       {
-           curwin->w_p_nu = 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)
index 7b25b20c154a8d907b914ad5b0e9bdba8d51335e..122165d4f07cb9e12e884f6e4bbf4ef7ddb9ceec 100644 (file)
@@ -10,6 +10,43 @@ STARTTEST
 :$put ='results:'
 :$put a
 :$put b
+:"
+:set nonu nornu
+:setglobal nu
+:setlocal rnu
+:redir @c | setglobal nu? | redir END
+:set nonu nornu
+:setglobal rnu
+:setlocal nu
+:redir @d | setglobal rnu? | redir END
+:$put =':setlocal must NOT reset the other global value'
+:$put c
+:$put d
+:"
+:set nonu nornu
+:setglobal nu
+:setglobal rnu
+:redir @e | setglobal nu? | redir END
+:set nonu nornu
+:setglobal rnu
+:setglobal nu
+:redir @f | setglobal rnu? | redir END
+:$put =':setglobal MUST reset the other global value'
+:$put e
+:$put f
+:"
+:set nonu nornu
+:set nu
+:set rnu
+:redir @g | setglobal nu? | redir END
+:set nonu nornu
+:set rnu
+:set nu
+:redir @h | setglobal rnu? | redir END
+:$put =':set MUST reset the other global value'
+:$put g
+:$put h
+:"
 :/^results/,$w! test.out
 :q!
 ENDTEST
index 0f45471dc924899db7e8e15e58221733f96b8bb0..93824bb947d0b97d32fe20e3547c78db37108e6a 100644 (file)
@@ -5,3 +5,18 @@ nonumber
 
 nonumber
   relativenumber
+:setlocal must NOT reset the other global value
+
+  number
+
+  relativenumber
+:setglobal MUST reset the other global value
+
+nonumber
+
+norelativenumber
+:set MUST reset the other global value
+
+nonumber
+
+norelativenumber
index 237ec19dcbd97f0d9220aad0863d1f4a7a468073..cf24d39aa50e435f29f2c4f017af7069dcf0ecaf 100644 (file)
@@ -728,6 +728,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    861,
 /**/
     860,
 /**/