Patch 8.1.0623
Problem: Iterating through window frames is repeated.
Solution: Define FOR_ALL_FRAMES. (Yegappan Lakshmanan)
Files: src/ex_docmd.c, src/globals.h, src/screen.c, src/window.c
*** ../vim-8.1.0622/src/ex_docmd.c 2018-12-16 16:30:17.810717978 +0100
--- src/ex_docmd.c 2018-12-22 17:01:06.186531011 +0100
***************
*** 11688,11694 ****
{
frame_T *frc;
! for (frc = fr; frc != NULL; frc = frc->fr_next)
if (ses_do_frame(frc))
break;
return frc;
--- 11688,11694 ----
{
frame_T *frc;
! FOR_ALL_FRAMES(frc, fr)
if (ses_do_frame(frc))
break;
return frc;
***************
*** 11705,11711 ****
if (fr->fr_layout == FR_LEAF)
return ses_do_win(fr->fr_win);
! for (frc = fr->fr_child; frc != NULL; frc = frc->fr_next)
if (ses_do_frame(frc))
return TRUE;
return FALSE;
--- 11705,11711 ----
if (fr->fr_layout == FR_LEAF)
return ses_do_win(fr->fr_win);
! FOR_ALL_FRAMES(frc, fr->fr_child)
if (ses_do_frame(frc))
return TRUE;
return FALSE;
*** ../vim-8.1.0622/src/globals.h 2018-12-21 15:16:57.479579788 +0100
--- src/globals.h 2018-12-22 17:01:06.186531011 +0100
***************
*** 564,569 ****
--- 564,571 ----
# define ONE_WINDOW (firstwin == lastwin)
# define W_NEXT(wp) ((wp)->w_next)
# define FOR_ALL_WINDOWS(wp) for (wp = firstwin; wp != NULL; wp = wp->w_next)
+ # define FOR_ALL_FRAMES(frp, first_frame) \
+ for (frp = first_frame; frp != NULL; frp = frp->fr_next)
# define FOR_ALL_TABPAGES(tp) for (tp = first_tabpage; tp != NULL; tp =
tp->tp_next)
# define FOR_ALL_WINDOWS_IN_TAB(tp, wp) \
for ((wp) = ((tp) == NULL || (tp) == curtab) \
*** ../vim-8.1.0622/src/screen.c 2018-12-13 22:17:52.881941445 +0100
--- src/screen.c 2018-12-22 17:01:06.186531011 +0100
***************
*** 6681,6687 ****
frp->fr_win->w_redr_status = TRUE;
else if (frp->fr_layout == FR_ROW)
{
! for (frp = frp->fr_child; frp != NULL; frp = frp->fr_next)
win_redraw_last_status(frp);
}
else /* frp->fr_layout == FR_COL */
--- 6681,6687 ----
frp->fr_win->w_redr_status = TRUE;
else if (frp->fr_layout == FR_ROW)
{
! FOR_ALL_FRAMES(frp, frp->fr_child)
win_redraw_last_status(frp);
}
else /* frp->fr_layout == FR_COL */
*** ../vim-8.1.0622/src/window.c 2018-12-21 16:04:16.320437461 +0100
--- src/window.c 2018-12-22 17:01:06.186531011 +0100
***************
*** 836,843 ****
frp = frp->fr_parent)
{
if (frp->fr_layout == FR_ROW)
! for (frp2 = frp->fr_child; frp2 != NULL;
! frp2 = frp2->fr_next)
if (frp2 != prevfrp)
minwidth += frame_minwidth(frp2, NOWIN);
prevfrp = frp;
--- 836,842 ----
frp = frp->fr_parent)
{
if (frp->fr_layout == FR_ROW)
! FOR_ALL_FRAMES(frp2, frp->fr_child)
if (frp2 != prevfrp)
minwidth += frame_minwidth(frp2, NOWIN);
prevfrp = frp;
***************
*** 920,927 ****
frp = frp->fr_parent)
{
if (frp->fr_layout == FR_COL)
! for (frp2 = frp->fr_child; frp2 != NULL;
! frp2 = frp2->fr_next)
if (frp2 != prevfrp)
minheight += frame_minheight(frp2, NOWIN);
prevfrp = frp;
--- 919,925 ----
frp = frp->fr_parent)
{
if (frp->fr_layout == FR_COL)
! FOR_ALL_FRAMES(frp2, frp->fr_child)
if (frp2 != prevfrp)
minheight += frame_minheight(frp2, NOWIN);
prevfrp = frp;
***************
*** 1078,1084 ****
if (frp->fr_win != NULL)
oldwin->w_frame = frp;
else
! for (frp = frp->fr_child; frp != NULL; frp = frp->fr_next)
frp->fr_parent = curfrp;
}
--- 1076,1082 ----
if (frp->fr_win != NULL)
oldwin->w_frame = frp;
else
! FOR_ALL_FRAMES(frp, frp->fr_child)
frp->fr_parent = curfrp;
}
***************
*** 1605,1612 ****
#endif
/* Check if all frames in this row/col have one window. */
! for (frp = curwin->w_frame->fr_parent->fr_child; frp != NULL;
! frp = frp->fr_next)
if (frp->fr_win == NULL)
{
EMSG(_("E443: Cannot rotate when another window is split"));
--- 1603,1609 ----
#endif
/* Check if all frames in this row/col have one window. */
! FOR_ALL_FRAMES(frp, curwin->w_frame->fr_parent->fr_child)
if (frp->fr_win == NULL)
{
EMSG(_("E443: Cannot rotate when another window is split"));
***************
*** 1856,1862 ****
else
{
next_curwin_size = -1;
! for (fr = topfr->fr_child; fr != NULL; fr = fr->fr_next)
{
/* If 'winfixwidth' set keep the window width if
* possible.
--- 1853,1859 ----
else
{
next_curwin_size = -1;
! FOR_ALL_FRAMES(fr, topfr->fr_child)
{
/* If 'winfixwidth' set keep the window width if
* possible.
***************
*** 1909,1915 ****
--totwincount; /* don't count curwin */
}
! for (fr = topfr->fr_child; fr != NULL; fr = fr->fr_next)
{
wincount = 1;
if (fr->fr_next == NULL)
--- 1906,1912 ----
--totwincount; /* don't count curwin */
}
! FOR_ALL_FRAMES(fr, topfr->fr_child)
{
wincount = 1;
if (fr->fr_next == NULL)
***************
*** 1997,2003 ****
else
{
next_curwin_size = -1;
! for (fr = topfr->fr_child; fr != NULL; fr = fr->fr_next)
{
/* If 'winfixheight' set keep the window height if
* possible.
--- 1994,2000 ----
else
{
next_curwin_size = -1;
! FOR_ALL_FRAMES(fr, topfr->fr_child)
{
/* If 'winfixheight' set keep the window height if
* possible.
***************
*** 2050,2056 ****
--totwincount; /* don't count curwin */
}
! for (fr = topfr->fr_child; fr != NULL; fr = fr->fr_next)
{
wincount = 1;
if (fr->fr_next == NULL)
--- 2047,2053 ----
--totwincount; /* don't count curwin */
}
! FOR_ALL_FRAMES(fr, topfr->fr_child)
{
wincount = 1;
if (fr->fr_next == NULL)
***************
*** 2751,2757 ****
* and remove it. */
frp2->fr_parent->fr_layout = frp2->fr_layout;
frp2->fr_parent->fr_child = frp2->fr_child;
! for (frp = frp2->fr_child; frp != NULL; frp = frp->fr_next)
frp->fr_parent = frp2->fr_parent;
frp2->fr_parent->fr_win = frp2->fr_win;
if (frp2->fr_win != NULL)
--- 2748,2754 ----
* and remove it. */
frp2->fr_parent->fr_layout = frp2->fr_layout;
frp2->fr_parent->fr_child = frp2->fr_child;
! FOR_ALL_FRAMES(frp, frp2->fr_child)
frp->fr_parent = frp2->fr_parent;
frp2->fr_parent->fr_win = frp2->fr_win;
if (frp2->fr_win != NULL)
***************
*** 2883,2889 ****
if (frp->fr_layout == FR_LEAF)
return frp->fr_win == wp;
! for (p = frp->fr_child; p != NULL; p = p->fr_next)
if (frame_has_win(p, wp))
return TRUE;
return FALSE;
--- 2880,2886 ----
if (frp->fr_layout == FR_LEAF)
return frp->fr_win == wp;
! FOR_ALL_FRAMES(p, frp->fr_child)
if (frame_has_win(p, wp))
return TRUE;
return FALSE;
***************
*** 2917,2923 ****
do
{
/* All frames in this row get the same new height. */
! for (frp = topfrp->fr_child; frp != NULL; frp = frp->fr_next)
{
frame_new_height(frp, height, topfirst, wfh);
if (frp->fr_height > height)
--- 2914,2920 ----
do
{
/* All frames in this row get the same new height. */
! FOR_ALL_FRAMES(frp, topfrp->fr_child)
{
frame_new_height(frp, height, topfirst, wfh);
if (frp->fr_height > height)
***************
*** 3014,3020 ****
{
/* The frame is fixed height if one of the frames in the row is fixed
* height. */
! for (frp = frp->fr_child; frp != NULL; frp = frp->fr_next)
if (frame_fixed_height(frp))
return TRUE;
return FALSE;
--- 3011,3017 ----
{
/* The frame is fixed height if one of the frames in the row is fixed
* height. */
! FOR_ALL_FRAMES(frp, frp->fr_child)
if (frame_fixed_height(frp))
return TRUE;
return FALSE;
***************
*** 3022,3028 ****
/* frp->fr_layout == FR_COL: The frame is fixed height if all of the
* frames in the row are fixed height. */
! for (frp = frp->fr_child; frp != NULL; frp = frp->fr_next)
if (!frame_fixed_height(frp))
return FALSE;
return TRUE;
--- 3019,3025 ----
/* frp->fr_layout == FR_COL: The frame is fixed height if all of the
* frames in the row are fixed height. */
! FOR_ALL_FRAMES(frp, frp->fr_child)
if (!frame_fixed_height(frp))
return FALSE;
return TRUE;
***************
*** 3043,3049 ****
{
/* The frame is fixed width if one of the frames in the row is fixed
* width. */
! for (frp = frp->fr_child; frp != NULL; frp = frp->fr_next)
if (frame_fixed_width(frp))
return TRUE;
return FALSE;
--- 3040,3046 ----
{
/* The frame is fixed width if one of the frames in the row is fixed
* width. */
! FOR_ALL_FRAMES(frp, frp->fr_child)
if (frame_fixed_width(frp))
return TRUE;
return FALSE;
***************
*** 3051,3057 ****
/* frp->fr_layout == FR_ROW: The frame is fixed width if all of the
* frames in the row are fixed width. */
! for (frp = frp->fr_child; frp != NULL; frp = frp->fr_next)
if (!frame_fixed_width(frp))
return FALSE;
return TRUE;
--- 3048,3054 ----
/* frp->fr_layout == FR_ROW: The frame is fixed width if all of the
* frames in the row are fixed width. */
! FOR_ALL_FRAMES(frp, frp->fr_child)
if (!frame_fixed_width(frp))
return FALSE;
return TRUE;
***************
*** 3079,3085 ****
else if (frp->fr_layout == FR_ROW)
{
/* Handle all the frames in the row. */
! for (frp = frp->fr_child; frp != NULL; frp = frp->fr_next)
frame_add_statusline(frp);
}
else /* frp->fr_layout == FR_COL */
--- 3076,3082 ----
else if (frp->fr_layout == FR_ROW)
{
/* Handle all the frames in the row. */
! FOR_ALL_FRAMES(frp, frp->fr_child)
frame_add_statusline(frp);
}
else /* frp->fr_layout == FR_COL */
***************
*** 3125,3131 ****
do
{
/* All frames in this column get the same new width. */
! for (frp = topfrp->fr_child; frp != NULL; frp = frp->fr_next)
{
frame_new_width(frp, width, leftfirst, wfw);
if (frp->fr_width > width)
--- 3122,3128 ----
do
{
/* All frames in this column get the same new width. */
! FOR_ALL_FRAMES(frp, topfrp->fr_child)
{
frame_new_width(frp, width, leftfirst, wfw);
if (frp->fr_width > width)
***************
*** 3228,3234 ****
else if (frp->fr_layout == FR_COL)
{
/* Handle all the frames in the column. */
! for (frp = frp->fr_child; frp != NULL; frp = frp->fr_next)
frame_add_vsep(frp);
}
else /* frp->fr_layout == FR_ROW */
--- 3225,3231 ----
else if (frp->fr_layout == FR_COL)
{
/* Handle all the frames in the column. */
! FOR_ALL_FRAMES(frp, frp->fr_child)
frame_add_vsep(frp);
}
else /* frp->fr_layout == FR_ROW */
***************
*** 3295,3301 ****
{
/* get the minimal height from each frame in this row */
m = 0;
! for (frp = topfrp->fr_child; frp != NULL; frp = frp->fr_next)
{
n = frame_minheight(frp, next_curwin);
if (n > m)
--- 3292,3298 ----
{
/* get the minimal height from each frame in this row */
m = 0;
! FOR_ALL_FRAMES(frp, topfrp->fr_child)
{
n = frame_minheight(frp, next_curwin);
if (n > m)
***************
*** 3306,3312 ****
{
/* Add up the minimal heights for all frames in this column. */
m = 0;
! for (frp = topfrp->fr_child; frp != NULL; frp = frp->fr_next)
m += frame_minheight(frp, next_curwin);
}
--- 3303,3309 ----
{
/* Add up the minimal heights for all frames in this column. */
m = 0;
! FOR_ALL_FRAMES(frp, topfrp->fr_child)
m += frame_minheight(frp, next_curwin);
}
***************
*** 3344,3350 ****
{
/* get the minimal width from each frame in this column */
m = 0;
! for (frp = topfrp->fr_child; frp != NULL; frp = frp->fr_next)
{
n = frame_minwidth(frp, next_curwin);
if (n > m)
--- 3341,3347 ----
{
/* get the minimal width from each frame in this column */
m = 0;
! FOR_ALL_FRAMES(frp, topfrp->fr_child)
{
n = frame_minwidth(frp, next_curwin);
if (n > m)
***************
*** 3355,3361 ****
{
/* Add up the minimal widths for all frames in this row. */
m = 0;
! for (frp = topfrp->fr_child; frp != NULL; frp = frp->fr_next)
m += frame_minwidth(frp, next_curwin);
}
--- 3352,3358 ----
{
/* Add up the minimal widths for all frames in this row. */
m = 0;
! FOR_ALL_FRAMES(frp, topfrp->fr_child)
m += frame_minwidth(frp, next_curwin);
}
***************
*** 5023,5029 ****
{
startrow = *row;
startcol = *col;
! for (frp = topfrp->fr_child; frp != NULL; frp = frp->fr_next)
{
if (topfrp->fr_layout == FR_ROW)
*row = startrow; /* all frames are at the same row */
--- 5020,5026 ----
{
startrow = *row;
startcol = *col;
! FOR_ALL_FRAMES(frp, topfrp->fr_child)
{
if (topfrp->fr_layout == FR_ROW)
*row = startrow; /* all frames are at the same row */
***************
*** 5143,5150 ****
{
room = 0;
room_reserved = 0;
! for (frp = curfrp->fr_parent->fr_child; frp != NULL;
! frp = frp->fr_next)
{
if (frp != curfrp
&& frp->fr_win != NULL
--- 5140,5146 ----
{
room = 0;
room_reserved = 0;
! FOR_ALL_FRAMES(frp, curfrp->fr_parent->fr_child)
{
if (frp != curfrp
&& frp->fr_win != NULL
***************
*** 5337,5344 ****
{
room = 0;
room_reserved = 0;
! for (frp = curfrp->fr_parent->fr_child; frp != NULL;
! frp = frp->fr_next)
{
if (frp != curfrp
&& frp->fr_win != NULL
--- 5333,5339 ----
{
room = 0;
room_reserved = 0;
! FOR_ALL_FRAMES(frp, curfrp->fr_parent->fr_child)
{
if (frp != curfrp
&& frp->fr_win != NULL
***************
*** 5562,5568 ****
if (room < 0)
room = 0;
/* sum up the room of frames below of the current one */
! for (fr = curfr->fr_next; fr != NULL; fr = fr->fr_next)
room += fr->fr_height - frame_minheight(fr, NULL);
fr = curfr; /* put fr at window that grows */
}
--- 5557,5563 ----
if (room < 0)
room = 0;
/* sum up the room of frames below of the current one */
! FOR_ALL_FRAMES(fr, curfr->fr_next)
room += fr->fr_height - frame_minheight(fr, NULL);
fr = curfr; /* put fr at window that grows */
}
***************
*** 5676,5682 ****
left = FALSE;
/* sum up the room of frames right of the current one */
room = 0;
! for (fr = curfr->fr_next; fr != NULL; fr = fr->fr_next)
room += fr->fr_width - frame_minwidth(fr, NULL);
fr = curfr; /* put fr at window that grows */
}
--- 5671,5677 ----
left = FALSE;
/* sum up the room of frames right of the current one */
room = 0;
! FOR_ALL_FRAMES(fr, curfr->fr_next)
room += fr->fr_width - frame_minwidth(fr, NULL);
fr = curfr; /* put fr at window that grows */
}
***************
*** 6073,6079 ****
else if (fr->fr_layout == FR_ROW)
{
/* vertically split windows, set status line for each one */
! for (fp = fr->fr_child; fp != NULL; fp = fp->fr_next)
last_status_rec(fp, statusline);
}
else
--- 6068,6074 ----
else if (fr->fr_layout == FR_ROW)
{
/* vertically split windows, set status line for each one */
! FOR_ALL_FRAMES(fp, fr->fr_child)
last_status_rec(fp, statusline);
}
else
***************
*** 6751,6757 ****
return TRUE;
if (topframe->fr_layout == FR_COL)
! for (fr = topframe->fr_child; fr != NULL; fr = fr->fr_next)
if (fr->fr_layout == FR_ROW)
return TRUE;
--- 6746,6752 ----
return TRUE;
if (topframe->fr_layout == FR_COL)
! FOR_ALL_FRAMES(fr, topframe->fr_child)
if (fr->fr_layout == FR_ROW)
return TRUE;
***************
*** 7097,7103 ****
return FALSE;
if (topfrp->fr_layout == FR_ROW)
! for (frp = topfrp->fr_child; frp != NULL; frp = frp->fr_next)
if (frp->fr_height != height)
return FALSE;
--- 7092,7098 ----
return FALSE;
if (topfrp->fr_layout == FR_ROW)
! FOR_ALL_FRAMES(frp, topfrp->fr_child)
if (frp->fr_height != height)
return FALSE;
***************
*** 7116,7122 ****
return FALSE;
if (topfrp->fr_layout == FR_COL)
! for (frp = topfrp->fr_child; frp != NULL; frp = frp->fr_next)
if (frp->fr_width != width)
return FALSE;
--- 7111,7117 ----
return FALSE;
if (topfrp->fr_layout == FR_COL)
! FOR_ALL_FRAMES(frp, topfrp->fr_child)
if (frp->fr_width != width)
return FALSE;
*** ../vim-8.1.0622/src/version.c 2018-12-22 16:49:11.348536036 +0100
--- src/version.c 2018-12-22 17:01:53.558148676 +0100
***************
*** 801,802 ****
--- 801,804 ----
{ /* Add new patch number below this line */
+ /**/
+ 623,
/**/
--
Change is inevitable, except from a vending machine.
/// Bram Moolenaar -- [email protected] -- 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 ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.