Karsten Hopp e78827
To: vim-dev@vim.org
Karsten Hopp e78827
Subject: patch 7.1.068
Karsten Hopp e78827
Fcc: outbox
Karsten Hopp e78827
From: Bram Moolenaar <Bram@moolenaar.net>
Karsten Hopp e78827
Mime-Version: 1.0
Karsten Hopp e78827
Content-Type: text/plain; charset=ISO-8859-1
Karsten Hopp e78827
Content-Transfer-Encoding: 8bit
Karsten Hopp e78827
------------
Karsten Hopp e78827
Karsten Hopp e78827
Patch 7.1.068
Karsten Hopp e78827
Problem:    When 'equalalways' is set and splitting a window, it's possible
Karsten Hopp e78827
	    that another small window gets bigger.
Karsten Hopp e78827
Solution:   Only equalize window sizes when after a split the windows are
Karsten Hopp e78827
	    smaller than another window. (Martin Toft)
Karsten Hopp e78827
Files:	    runtime/doc/options.txt, runtime/doc/windows.txt, src/window.c
Karsten Hopp e78827
Karsten Hopp e78827
Karsten Hopp e78827
*** ../vim-7.1.067/runtime/doc/options.txt	Sat May 12 16:27:04 2007
Karsten Hopp e78827
--- runtime/doc/options.txt	Sat Aug 11 17:25:38 2007
Karsten Hopp e78827
***************
Karsten Hopp e78827
*** 1,4 ****
Karsten Hopp e78827
! *options.txt*	For Vim version 7.1.  Last change: 2007 May 11
Karsten Hopp e78827
  
Karsten Hopp e78827
  
Karsten Hopp e78827
  		  VIM REFERENCE MANUAL	  by Bram Moolenaar
Karsten Hopp e78827
--- 1,4 ----
Karsten Hopp e78827
! *options.txt*	For Vim version 7.1.  Last change: 2007 Aug 10
Karsten Hopp e78827
  
Karsten Hopp e78827
  
Karsten Hopp e78827
  		  VIM REFERENCE MANUAL	  by Bram Moolenaar
Karsten Hopp e78827
***************
Karsten Hopp e78827
*** 2415,2422 ****
Karsten Hopp e78827
  	When mixing vertically and horizontally split windows, a minimal size
Karsten Hopp e78827
  	is computed and some windows may be larger if there is room.  The
Karsten Hopp e78827
  	'eadirection' option tells in which direction the size is affected.
Karsten Hopp e78827
! 	Changing the height of a window can be avoided by setting
Karsten Hopp e78827
! 	'winfixheight'.
Karsten Hopp e78827
  
Karsten Hopp e78827
  						*'equalprg'* *'ep'*
Karsten Hopp e78827
  'equalprg' 'ep'		string	(default "")
Karsten Hopp e78827
--- 2418,2425 ----
Karsten Hopp e78827
  	When mixing vertically and horizontally split windows, a minimal size
Karsten Hopp e78827
  	is computed and some windows may be larger if there is room.  The
Karsten Hopp e78827
  	'eadirection' option tells in which direction the size is affected.
Karsten Hopp e78827
! 	Changing the height and width of a window can be avoided by setting
Karsten Hopp e78827
! 	'winfixheight' and 'winfixwidth', respectively.
Karsten Hopp e78827
  
Karsten Hopp e78827
  						*'equalprg'* *'ep'*
Karsten Hopp e78827
  'equalprg' 'ep'		string	(default "")
Karsten Hopp e78827
*** ../vim-7.1.067/runtime/doc/windows.txt	Sat May 12 16:42:48 2007
Karsten Hopp e78827
--- runtime/doc/windows.txt	Sat Aug 11 17:25:38 2007
Karsten Hopp e78827
***************
Karsten Hopp e78827
*** 132,138 ****
Karsten Hopp e78827
  		the same file.  Make new window N high (default is to use half
Karsten Hopp e78827
  		the height of the current window).  Reduces the current window
Karsten Hopp e78827
  		height to create room (and others, if the 'equalalways' option
Karsten Hopp e78827
! 		is set and 'eadirection' isn't "hor").
Karsten Hopp e78827
  		Note: CTRL-S does not work on all terminals and might block
Karsten Hopp e78827
  		further input, use CTRL-Q to get going again.
Karsten Hopp e78827
  		Also see |++opt| and |+cmd|.
Karsten Hopp e78827
--- 132,139 ----
Karsten Hopp e78827
  		the same file.  Make new window N high (default is to use half
Karsten Hopp e78827
  		the height of the current window).  Reduces the current window
Karsten Hopp e78827
  		height to create room (and others, if the 'equalalways' option
Karsten Hopp e78827
! 		is set, 'eadirection' isn't "hor", and one of them is higher
Karsten Hopp e78827
! 		than the current or the new window).
Karsten Hopp e78827
  		Note: CTRL-S does not work on all terminals and might block
Karsten Hopp e78827
  		further input, use CTRL-Q to get going again.
Karsten Hopp e78827
  		Also see |++opt| and |+cmd|.
Karsten Hopp e78827
***************
Karsten Hopp e78827
*** 140,148 ****
Karsten Hopp e78827
  CTRL-W CTRL-V						*CTRL-W_CTRL-V*
Karsten Hopp e78827
  CTRL-W v						*CTRL-W_v*
Karsten Hopp e78827
  :[N]vs[plit] [++opt] [+cmd] [file]			*:vs* *:vsplit*
Karsten Hopp e78827
! 		Like |:split|, but split vertically.  If 'equalalways' is set
Karsten Hopp e78827
! 		and 'eadirection' isn't "ver" the windows will be spread out
Karsten Hopp e78827
! 		horizontally, unless a width was specified.
Karsten Hopp e78827
  		Note: In other places CTRL-Q does the same as CTRL-V, but here
Karsten Hopp e78827
  		it doesn't!
Karsten Hopp e78827
  
Karsten Hopp e78827
--- 141,153 ----
Karsten Hopp e78827
  CTRL-W CTRL-V						*CTRL-W_CTRL-V*
Karsten Hopp e78827
  CTRL-W v						*CTRL-W_v*
Karsten Hopp e78827
  :[N]vs[plit] [++opt] [+cmd] [file]			*:vs* *:vsplit*
Karsten Hopp e78827
! 		Like |:split|, but split vertically.  The windows will be
Karsten Hopp e78827
! 		spread out horizontally if
Karsten Hopp e78827
! 		1. a width was not specified,
Karsten Hopp e78827
! 		2. 'equalalways' is set,
Karsten Hopp e78827
! 		3. 'eadirection' isn't "ver", and
Karsten Hopp e78827
! 		4. one of the other windows are wider than the current or new
Karsten Hopp e78827
! 		   window.
Karsten Hopp e78827
  		Note: In other places CTRL-Q does the same as CTRL-V, but here
Karsten Hopp e78827
  		it doesn't!
Karsten Hopp e78827
  
Karsten Hopp e78827
*** ../vim-7.1.067/src/window.c	Sat Aug 11 13:37:36 2007
Karsten Hopp e78827
--- src/window.c	Sat Aug 11 17:25:38 2007
Karsten Hopp e78827
***************
Karsten Hopp e78827
*** 733,739 ****
Karsten Hopp e78827
      if (flags & WSP_VERT)
Karsten Hopp e78827
      {
Karsten Hopp e78827
  	layout = FR_ROW;
Karsten Hopp e78827
- 	do_equal = (p_ea && new_size == 0 && *p_ead != 'v');
Karsten Hopp e78827
  
Karsten Hopp e78827
  	/*
Karsten Hopp e78827
  	 * Check if we are able to split the current window and compute its
Karsten Hopp e78827
--- 733,738 ----
Karsten Hopp e78827
***************
Karsten Hopp e78827
*** 770,785 ****
Karsten Hopp e78827
  	 * instead, if possible. */
Karsten Hopp e78827
  	if (oldwin->w_p_wfw)
Karsten Hopp e78827
  	    win_setwidth_win(oldwin->w_width + new_size, oldwin);
Karsten Hopp e78827
      }
Karsten Hopp e78827
      else
Karsten Hopp e78827
  #endif
Karsten Hopp e78827
      {
Karsten Hopp e78827
  	layout = FR_COL;
Karsten Hopp e78827
- 	do_equal = (p_ea && new_size == 0
Karsten Hopp e78827
- #ifdef FEAT_VERTSPLIT
Karsten Hopp e78827
- 		&& *p_ead != 'h'
Karsten Hopp e78827
- #endif
Karsten Hopp e78827
- 		);
Karsten Hopp e78827
  
Karsten Hopp e78827
  	/*
Karsten Hopp e78827
  	 * Check if we are able to split the current window and compute its
Karsten Hopp e78827
--- 769,799 ----
Karsten Hopp e78827
  	 * instead, if possible. */
Karsten Hopp e78827
  	if (oldwin->w_p_wfw)
Karsten Hopp e78827
  	    win_setwidth_win(oldwin->w_width + new_size, oldwin);
Karsten Hopp e78827
+ 
Karsten Hopp e78827
+ 	/* Only make all windows the same width if one of them (except oldwin)
Karsten Hopp e78827
+ 	 * is wider than one of the split windows. */
Karsten Hopp e78827
+ 	if (!do_equal && p_ea && size == 0 && *p_ead != 'v'
Karsten Hopp e78827
+ 	   && oldwin->w_frame->fr_parent != NULL)
Karsten Hopp e78827
+ 	{
Karsten Hopp e78827
+ 	    frp = oldwin->w_frame->fr_parent->fr_child;
Karsten Hopp e78827
+ 	    while (frp != NULL)
Karsten Hopp e78827
+ 	    {
Karsten Hopp e78827
+ 		if (frp->fr_win != oldwin && frp->fr_win != NULL
Karsten Hopp e78827
+ 			&& (frp->fr_win->w_width > new_size
Karsten Hopp e78827
+ 			    || frp->fr_win->w_width > oldwin->w_width
Karsten Hopp e78827
+ 						   - new_size - STATUS_HEIGHT))
Karsten Hopp e78827
+ 		{
Karsten Hopp e78827
+ 		    do_equal = TRUE;
Karsten Hopp e78827
+ 		    break;
Karsten Hopp e78827
+ 		}
Karsten Hopp e78827
+ 		frp = frp->fr_next;
Karsten Hopp e78827
+ 	    }
Karsten Hopp e78827
+ 	}
Karsten Hopp e78827
      }
Karsten Hopp e78827
      else
Karsten Hopp e78827
  #endif
Karsten Hopp e78827
      {
Karsten Hopp e78827
  	layout = FR_COL;
Karsten Hopp e78827
  
Karsten Hopp e78827
  	/*
Karsten Hopp e78827
  	 * Check if we are able to split the current window and compute its
Karsten Hopp e78827
***************
Karsten Hopp e78827
*** 831,836 ****
Karsten Hopp e78827
--- 845,873 ----
Karsten Hopp e78827
  	    oldwin_height = oldwin->w_height;
Karsten Hopp e78827
  	    if (need_status)
Karsten Hopp e78827
  		oldwin_height -= STATUS_HEIGHT;
Karsten Hopp e78827
+ 	}
Karsten Hopp e78827
+ 
Karsten Hopp e78827
+ 	/* Only make all windows the same height if one of them (except oldwin)
Karsten Hopp e78827
+ 	 * is higher than one of the split windows. */
Karsten Hopp e78827
+ 	if (!do_equal && p_ea && size == 0
Karsten Hopp e78827
+ #ifdef FEAT_VERTSPLIT
Karsten Hopp e78827
+ 		&& *p_ead != 'h'
Karsten Hopp e78827
+ #endif
Karsten Hopp e78827
+ 	   && oldwin->w_frame->fr_parent != NULL)
Karsten Hopp e78827
+ 	{
Karsten Hopp e78827
+ 	    frp = oldwin->w_frame->fr_parent->fr_child;
Karsten Hopp e78827
+ 	    while (frp != NULL)
Karsten Hopp e78827
+ 	    {
Karsten Hopp e78827
+ 		if (frp->fr_win != oldwin && frp->fr_win != NULL
Karsten Hopp e78827
+ 			&& (frp->fr_win->w_height > new_size
Karsten Hopp e78827
+ 			    || frp->fr_win->w_height > oldwin_height - new_size
Karsten Hopp e78827
+ 							      - STATUS_HEIGHT))
Karsten Hopp e78827
+ 		{
Karsten Hopp e78827
+ 		    do_equal = TRUE;
Karsten Hopp e78827
+ 		    break;
Karsten Hopp e78827
+ 		}
Karsten Hopp e78827
+ 		frp = frp->fr_next;
Karsten Hopp e78827
+ 	    }
Karsten Hopp e78827
  	}
Karsten Hopp e78827
      }
Karsten Hopp e78827
  
Karsten Hopp e78827
*** ../vim-7.1.067/src/version.c	Sun Aug 12 16:38:03 2007
Karsten Hopp e78827
--- src/version.c	Sun Aug 12 16:51:36 2007
Karsten Hopp e78827
***************
Karsten Hopp e78827
*** 668,669 ****
Karsten Hopp e78827
--- 668,671 ----
Karsten Hopp e78827
  {   /* Add new patch number below this line */
Karsten Hopp e78827
+ /**/
Karsten Hopp e78827
+     68,
Karsten Hopp e78827
  /**/
Karsten Hopp e78827
Karsten Hopp e78827
-- 
Karsten Hopp e78827
hundred-and-one symptoms of being an internet addict:
Karsten Hopp e78827
129. You cancel your newspaper subscription.
Karsten Hopp e78827
Karsten Hopp e78827
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
Karsten Hopp e78827
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
Karsten Hopp e78827
\\\        download, build and distribute -- http://www.A-A-P.org        ///
Karsten Hopp e78827
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///