To: vim-dev@vim.org
Subject: Patch 7.3.008
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.008
Problem:    'cursorbind' is kept in places where 'scrollbind' is reset.
Solution:   Reset 'cursorbind'.
Files:	    src/buffer.c, src/diff.c, src/ex_cmds.c, src/ex_cmds2.c,
	    src/ex_docmd.c, src/ex_getln.c, src/if_cscope.c, src/macros.h,
	    src/quickfix.c, src/search.c, src/tag.c, src/window.c


*** ../vim-7.3.007/src/buffer.c	2010-08-15 21:57:32.000000000 +0200
--- src/buffer.c	2010-09-21 16:54:19.000000000 +0200
***************
*** 1288,1296 ****
      /* Go to the other buffer. */
      set_curbuf(buf, action);
  
! #if defined(FEAT_LISTCMDS) && defined(FEAT_SCROLLBIND)
      if (action == DOBUF_SPLIT)
! 	curwin->w_p_scb = FALSE;	/* reset 'scrollbind' */
  #endif
  
  #if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL)
--- 1288,1299 ----
      /* Go to the other buffer. */
      set_curbuf(buf, action);
  
! #if defined(FEAT_LISTCMDS) \
! 	&& (defined(FEAT_SCROLLBIND) || defined(FEAT_CURSORBIND))
      if (action == DOBUF_SPLIT)
!     {
! 	RESET_BINDING(curwin);	/* reset 'scrollbind' and 'cursorbind' */
!     }
  #endif
  
  #if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL)
***************
*** 1917,1925 ****
  		tabpage_new();
  	    else if (win_split(0, 0) == FAIL)	/* Open in a new window */
  		return FAIL;
! # ifdef FEAT_SCROLLBIND
! 	    curwin->w_p_scb = FALSE;
! # endif
  	}
      }
  #endif
--- 1920,1926 ----
  		tabpage_new();
  	    else if (win_split(0, 0) == FAIL)	/* Open in a new window */
  		return FAIL;
! 	    RESET_BINDING(curwin);
  	}
      }
  #endif
*** ../vim-7.3.007/src/diff.c	2010-08-15 21:57:32.000000000 +0200
--- src/diff.c	2010-09-21 16:14:07.000000000 +0200
***************
*** 1127,1137 ****
  # endif
  
      wp->w_p_diff = TRUE;
  #ifdef FEAT_CURSORBIND
-     /* Use cursorbind if it's available */
      wp->w_p_crb = TRUE;
  #endif
-     wp->w_p_scb = TRUE;
      wp->w_p_wrap = FALSE;
  # ifdef FEAT_FOLDING
      curwin = wp;
--- 1127,1139 ----
  # endif
  
      wp->w_p_diff = TRUE;
+     /* Use 'scrollbind' and 'cursorbind' when available */
+ #ifdef FEAT_SCROLLBIND
+     wp->w_p_scb = TRUE;
+ #endif
  #ifdef FEAT_CURSORBIND
      wp->w_p_crb = TRUE;
  #endif
      wp->w_p_wrap = FALSE;
  # ifdef FEAT_FOLDING
      curwin = wp;
***************
*** 1177,1186 ****
  	{
  	    /* Set 'diff', 'scrollbind' off and 'wrap' on. */
  	    wp->w_p_diff = FALSE;
! #ifdef FEAT_CURSORBIND
! 	    wp->w_p_crb = FALSE;
! #endif
! 	    wp->w_p_scb = FALSE;
  	    wp->w_p_wrap = TRUE;
  #ifdef FEAT_FOLDING
  	    curwin = wp;
--- 1179,1185 ----
  	{
  	    /* Set 'diff', 'scrollbind' off and 'wrap' on. */
  	    wp->w_p_diff = FALSE;
! 	    RESET_BINDING(wp);
  	    wp->w_p_wrap = TRUE;
  #ifdef FEAT_FOLDING
  	    curwin = wp;
*** ../vim-7.3.007/src/ex_cmds.c	2010-08-15 21:57:26.000000000 +0200
--- src/ex_cmds.c	2010-09-21 16:15:07.000000000 +0200
***************
*** 3498,3506 ****
  	curbuf->b_p_bin = FALSE;	/* reset 'bin' before reading file */
  	curwin->w_p_nu = 0;		/* no line numbers */
  	curwin->w_p_rnu = 0;		/* no relative line numbers */
! #ifdef FEAT_SCROLLBIND
! 	curwin->w_p_scb = FALSE;	/* no scroll binding */
! #endif
  #ifdef FEAT_ARABIC
  	curwin->w_p_arab = FALSE;	/* no arabic mode */
  #endif
--- 3498,3504 ----
  	curbuf->b_p_bin = FALSE;	/* reset 'bin' before reading file */
  	curwin->w_p_nu = 0;		/* no line numbers */
  	curwin->w_p_rnu = 0;		/* no relative line numbers */
! 	RESET_BINDING(curwin);		/* no scroll or cursor binding */
  #ifdef FEAT_ARABIC
  	curwin->w_p_arab = FALSE;	/* no arabic mode */
  #endif
***************
*** 5471,5479 ****
  		return FALSE;
  	    curwin->w_p_pvw = TRUE;
  	    curwin->w_p_wfh = TRUE;
! # ifdef FEAT_SCROLLBIND
! 	    curwin->w_p_scb = FALSE;	    /* don't take over 'scrollbind' */
! # endif
  # ifdef FEAT_DIFF
  	    curwin->w_p_diff = FALSE;	    /* no 'diff' */
  # endif
--- 5469,5476 ----
  		return FALSE;
  	    curwin->w_p_pvw = TRUE;
  	    curwin->w_p_wfh = TRUE;
! 	    RESET_BINDING(curwin);	    /* don't take over 'scrollbind'
! 					       and 'cursorbind' */
  # ifdef FEAT_DIFF
  	    curwin->w_p_diff = FALSE;	    /* no 'diff' */
  # endif
*** ../vim-7.3.007/src/ex_cmds2.c	2010-08-15 21:57:31.000000000 +0200
--- src/ex_cmds2.c	2010-09-21 16:15:17.000000000 +0200
***************
*** 2165,2173 ****
  	{
  	    if (win_split(0, 0) == FAIL)
  		return;
! # ifdef FEAT_SCROLLBIND
! 	    curwin->w_p_scb = FALSE;
! # endif
  	}
  	else
  #endif
--- 2165,2171 ----
  	{
  	    if (win_split(0, 0) == FAIL)
  		return;
! 	    RESET_BINDING(curwin);
  	}
  	else
  #endif
*** ../vim-7.3.007/src/ex_docmd.c	2010-08-16 22:33:55.000000000 +0200
--- src/ex_docmd.c	2010-09-21 16:15:39.000000000 +0200
***************
*** 6898,6906 ****
  # ifdef FEAT_WINDOWS
  	if (win_split(0, 0) == FAIL)
  	    return;
! #  ifdef FEAT_SCROLLBIND
! 	curwin->w_p_scb = FALSE;
! #  endif
  
  	/* When splitting the window, create a new alist.  Otherwise the
  	 * existing one is overwritten. */
--- 6898,6904 ----
  # ifdef FEAT_WINDOWS
  	if (win_split(0, 0) == FAIL)
  	    return;
! 	RESET_BINDING(curwin);
  
  	/* When splitting the window, create a new alist.  Otherwise the
  	 * existing one is overwritten. */
***************
*** 7300,7306 ****
  		|| cmdmod.browse
  #  endif
  	   )
! 	    curwin->w_p_scb = FALSE;
  	else
  	    do_check_scrollbind(FALSE);
  # endif
--- 7298,7306 ----
  		|| cmdmod.browse
  #  endif
  	   )
! 	{
! 	    RESET_BINDING(curwin);
! 	}
  	else
  	    do_check_scrollbind(FALSE);
  # endif
*** ../vim-7.3.007/src/ex_getln.c	2010-08-15 21:57:28.000000000 +0200
--- src/ex_getln.c	2010-09-21 16:15:55.000000000 +0200
***************
*** 6147,6155 ****
      curwin->w_p_rl = cmdmsg_rl;
      cmdmsg_rl = FALSE;
  # endif
! # ifdef FEAT_SCROLLBIND
!     curwin->w_p_scb = FALSE;
! # endif
  
  # ifdef FEAT_AUTOCMD
      /* Do execute autocommands for setting the filetype (load syntax). */
--- 6147,6153 ----
      curwin->w_p_rl = cmdmsg_rl;
      cmdmsg_rl = FALSE;
  # endif
!     RESET_BINDING(curwin);
  
  # ifdef FEAT_AUTOCMD
      /* Do execute autocommands for setting the filetype (load syntax). */
*** ../vim-7.3.007/src/if_cscope.c	2010-08-15 21:57:32.000000000 +0200
--- src/if_cscope.c	2010-09-21 16:16:26.000000000 +0200
***************
*** 1274,1282 ****
  		{
  		    win_split(postponed_split > 0 ? postponed_split : 0,
  						       postponed_split_flags);
! #  ifdef FEAT_SCROLLBIND
! 		    curwin->w_p_scb = FALSE;
! #  endif
  		    postponed_split = 0;
  		}
  # endif
--- 1274,1280 ----
  		{
  		    win_split(postponed_split > 0 ? postponed_split : 0,
  						       postponed_split_flags);
! 		    RESET_BINDING(curwin);
  		    postponed_split = 0;
  		}
  # endif
*** ../vim-7.3.007/src/macros.h	2010-08-15 21:57:28.000000000 +0200
--- src/macros.h	2010-09-21 16:13:10.000000000 +0200
***************
*** 285,287 ****
--- 285,301 ----
  #else
  # define DO_AUTOCHDIR
  #endif
+ 
+ #if defined(FEAT_SCROLLBIND) && defined(FEAT_CURSORBIND)
+ # define RESET_BINDING(wp)  (wp)->w_p_scb = FALSE; (wp)->w_p_crb = FALSE
+ #else
+ # if defined(FEAT_SCROLLBIND)
+ #  define RESET_BINDING(wp)  (wp)->w_p_scb = FALSE
+ # else
+ #  if defined(FEAT_CURSORBIND)
+ #   define RESET_BINDING(wp)  (wp)->w_p_crb = FALSE
+ #  else
+ #   define RESET_BINDING(wp)
+ #  endif
+ # endif
+ #endif
*** ../vim-7.3.007/src/quickfix.c	2010-08-17 20:23:18.000000000 +0200
--- src/quickfix.c	2010-09-21 16:17:17.000000000 +0200
***************
*** 1656,1664 ****
  	    opened_window = TRUE;	/* close it when fail */
  	    p_swb = empty_option;	/* don't split again */
  	    swb_flags = 0;
! # ifdef FEAT_SCROLLBIND
! 	    curwin->w_p_scb = FALSE;
! # endif
  	    if (ll_ref != NULL)
  	    {
  		/* The new window should use the location list from the
--- 1656,1662 ----
  	    opened_window = TRUE;	/* close it when fail */
  	    p_swb = empty_option;	/* don't split again */
  	    swb_flags = 0;
! 	    RESET_BINDING(curwin);
  	    if (ll_ref != NULL)
  	    {
  		/* The new window should use the location list from the
***************
*** 2334,2342 ****
  	    win_goto(lastwin);
  	if (win_split(height, WSP_BELOW | WSP_NEWLOC) == FAIL)
  	    return;		/* not enough room for window */
! #ifdef FEAT_SCROLLBIND
! 	curwin->w_p_scb = FALSE;
! #endif
  
  	if (eap->cmdidx == CMD_lopen || eap->cmdidx == CMD_lwindow)
  	{
--- 2332,2338 ----
  	    win_goto(lastwin);
  	if (win_split(height, WSP_BELOW | WSP_NEWLOC) == FAIL)
  	    return;		/* not enough room for window */
! 	RESET_BINDING(curwin);
  
  	if (eap->cmdidx == CMD_lopen || eap->cmdidx == CMD_lwindow)
  	{
*** ../vim-7.3.007/src/search.c	2010-08-15 21:57:32.000000000 +0200
--- src/search.c	2010-09-21 16:17:28.000000000 +0200
***************
*** 5075,5083 ****
  			if (win_split(0, 0) == FAIL)
  #endif
  			    break;
! #ifdef FEAT_SCROLLBIND
! 			curwin->w_p_scb = FALSE;
! #endif
  		    }
  		    if (depth == -1)
  		    {
--- 5075,5081 ----
  			if (win_split(0, 0) == FAIL)
  #endif
  			    break;
! 			RESET_BINDING(curwin);
  		    }
  		    if (depth == -1)
  		    {
*** ../vim-7.3.007/src/tag.c	2010-08-15 21:57:25.000000000 +0200
--- src/tag.c	2010-09-21 16:17:51.000000000 +0200
***************
*** 3143,3151 ****
      {
  	win_split(postponed_split > 0 ? postponed_split : 0,
  						       postponed_split_flags);
! # ifdef FEAT_SCROLLBIND
! 	curwin->w_p_scb = FALSE;
! # endif
      }
  #endif
  
--- 3143,3149 ----
      {
  	win_split(postponed_split > 0 ? postponed_split : 0,
  						       postponed_split_flags);
! 	RESET_BINDING(curwin);
      }
  #endif
  
*** ../vim-7.3.007/src/window.c	2010-08-15 21:57:32.000000000 +0200
--- src/window.c	2010-09-21 16:18:44.000000000 +0200
***************
*** 525,533 ****
  		    setpcmark();
  		    if (win_split(0, 0) == OK)
  		    {
! # ifdef FEAT_SCROLLBIND
! 			curwin->w_p_scb = FALSE;
! # endif
  			(void)do_ecmd(0, ptr, NULL, NULL, ECMD_LASTL,
  							   ECMD_HIDE, NULL);
  			if (nchar == 'F' && lnum >= 0)
--- 525,531 ----
  		    setpcmark();
  		    if (win_split(0, 0) == OK)
  		    {
! 			RESET_BINDING(curwin);
  			(void)do_ecmd(0, ptr, NULL, NULL, ECMD_LASTL,
  							   ECMD_HIDE, NULL);
  			if (nchar == 'F' && lnum >= 0)
***************
*** 3277,3285 ****
      if (aucmd_win != NULL)
      {
  	win_init_some(aucmd_win, curwin);
! # ifdef FEAT_SCROLLBIND
! 	aucmd_win->w_p_scb = FALSE;
! # endif
  	new_frame(aucmd_win);
      }
  }
--- 3275,3281 ----
      if (aucmd_win != NULL)
      {
  	win_init_some(aucmd_win, curwin);
! 	RESET_BINDING(aucmd_win);
  	new_frame(aucmd_win);
      }
  }
***************
*** 3320,3329 ****
  	/* First window in new tab page, initialize it from "oldwin". */
  	win_init(curwin, oldwin, 0);
  
! # ifdef FEAT_SCROLLBIND
! 	/* We don't want scroll-binding in the first window. */
! 	curwin->w_p_scb = FALSE;
! # endif
      }
  #endif
  
--- 3316,3323 ----
  	/* First window in new tab page, initialize it from "oldwin". */
  	win_init(curwin, oldwin, 0);
  
! 	/* We don't want cursor- and scroll-binding in the first window. */
! 	RESET_BINDING(curwin);
      }
  #endif
  
*** ../vim-7.3.007/src/version.c	2010-09-21 16:49:29.000000000 +0200
--- src/version.c	2010-09-21 16:53:16.000000000 +0200
***************
*** 716,717 ****
--- 716,719 ----
  {   /* Add new patch number below this line */
+ /**/
+     8,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
181. You make up words that go with the "happy tune" your modem makes
     while dialing your ISP.

 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
