To: vim_dev@googlegroups.com
Subject: Patch 7.3.861
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.861
Problem:    ":setlocal number" clears global value of 'relativenumber'.
Solution:   Do it properly. (Markus Heidelberg)
Files:	    src/testdir/test89.in, src/testdir/test89.ok, src/option.c


*** ../vim-7.3.860/src/testdir/test89.in	2013-02-14 20:10:28.000000000 +0100
--- src/testdir/test89.in	2013-03-13 20:27:10.000000000 +0100
***************
*** 10,15 ****
--- 10,52 ----
  :$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
*** ../vim-7.3.860/src/testdir/test89.ok	2013-02-13 15:44:22.000000000 +0100
--- src/testdir/test89.ok	2013-03-13 20:27:10.000000000 +0100
***************
*** 5,7 ****
--- 5,22 ----
  
  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
*** ../vim-7.3.860/src/option.c	2013-03-13 19:29:24.000000000 +0100
--- src/option.c	2013-03-13 20:35:20.000000000 +0100
***************
*** 7631,7652 ****
      }
  #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'. */
! 	if ((int *)varp == &curwin->w_p_nu && curwin->w_p_nu)
! 	{
! 	    curwin->w_p_rnu = FALSE;
  	    curwin->w_allbuf_opt.wo_rnu = FALSE;
! 	}
! 	if ((int *)varp == &curwin->w_p_rnu && curwin->w_p_rnu)
! 	{
! 	    curwin->w_p_nu = FALSE;
  	    curwin->w_allbuf_opt.wo_nu = FALSE;
! 	}
      }
  
      else if ((int *)varp == &curbuf->b_p_ro)
--- 7631,7663 ----
      }
  #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)
*** ../vim-7.3.860/src/version.c	2013-03-13 20:23:17.000000000 +0100
--- src/version.c	2013-03-13 20:42:09.000000000 +0100
***************
*** 730,731 ****
--- 730,733 ----
  {   /* Add new patch number below this line */
+ /**/
+     861,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
43. You tell the kids they can't use the computer because "Daddy's got work to
    do" and you don't even have a job.

 /// 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    ///
