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