patch 9.1.1425: tabpanel: there are still some problems with the tabpanel Commit: https://github.com/vim/vim/commit/3b9b95dc63c9db85ae827e66a1f2d7830264ccf3 Author: Hirohito Higashi <h.east....@gmail.com> Date: Sun Jun 1 20:22:55 2025 +0200
patch 9.1.1425: tabpanel: there are still some problems with the tabpanel Problem: tabpanel: there are still some problems with the tabpanel with column handling Solution: fix the problems and refactor Tabpanel feature (Hirohito Higashi). fixes: #17423 fixes: #17332 closes: #17336 Signed-off-by: Hirohito Higashi <h.east....@gmail.com> Signed-off-by: Christian Brabandt <c...@256bit.org> diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt index a15a20aa5..8cce98a3f 100644 --- a/runtime/doc/builtin.txt +++ b/runtime/doc/builtin.txt @@ -1,4 +1,4 @@ -*builtin.txt* For Vim version 9.1. Last change: 2025 May 28 +*builtin.txt* For Vim version 9.1. Last change: 2025 Jun 01 VIM REFERENCE MANUAL by Bram Moolenaar @@ -4728,10 +4728,9 @@ getmousepos() *getmousepos()* start of the clicked char All numbers are 1-based. - If not over a window, e.g. when in the command line, then only - "screenrow" and "screencol" are valid, the others are zero. - - When on the |tabpanel|, "wincol" value is zero. + If not over a window, e.g. when in the command line or within + |tabpanel|, then only "screenrow" and "screencol" are valid, + the others are zero. When on the status line below a window or the vertical separator right of a window, the "line" and "column" values diff --git a/src/clipboard.c b/src/clipboard.c index d0feb2ff1..fb967dc40 100644 --- a/src/clipboard.c +++ b/src/clipboard.c @@ -404,7 +404,7 @@ clip_invert_rectangle( gui_mch_invert_rectangle(row, col, height, width); else #endif - screen_draw_rectangle(row, col + TPL_LCOL(NULL), height, width, invert); + screen_draw_rectangle(row, col, height, width, invert); #ifdef FEAT_PROP_POPUP screen_zindex = 0; #endif diff --git a/src/drawline.c b/src/drawline.c index 3be9a3a4d..84a1d895b 100644 --- a/src/drawline.c +++ b/src/drawline.c @@ -875,7 +875,7 @@ wlv_screen_line(win_T *wp, winlinevars_T *wlv, int clear_end) } } - screen_line(wp, wlv->screen_row, wp->w_wincol + TPL_LCOL(wp), wlv->col, + screen_line(wp, wlv->screen_row, wp->w_wincol, wlv->col, clear_end ? wp->w_width : -wp->w_width, wlv->vcol - 1, wlv->screen_line_flags); } @@ -4355,7 +4355,7 @@ win_line( #ifdef FEAT_PROP_POPUP && !text_prop_above && !text_prop_follows #endif - && wp->w_width == COLUMNS_WITHOUT_TPL()) + && wp->w_width == Columns) { // Remember that the line wraps, used for modeless copy. LineWraps[wlv.screen_row - 1] = TRUE; @@ -4380,7 +4380,7 @@ win_line( == 2 || (*mb_off2cells)( LineOffset[wlv.screen_row - 1] - + (int)COLUMNS_WITHOUT_TPL() - 2, + + (int)topframe->fr_width - 2, LineOffset[wlv.screen_row] + screen_Columns) == 2))) { @@ -4390,17 +4390,17 @@ win_line( // auto-wrap, we overwrite the character. if (screen_cur_col != wp->w_width) screen_char(LineOffset[wlv.screen_row - 1] - + (unsigned)COLUMNS_WITHOUT_TPL() - 1, - wlv.screen_row - 1, (int)(COLUMNS_WITHOUT_TPL() - 1)); + + (unsigned)topframe->fr_width - 1, + wlv.screen_row - 1, (int)(topframe->fr_width - 1)); // When there is a multi-byte character, just output a // space to keep it simple. if (has_mbyte && MB_BYTE2LEN(ScreenLines[LineOffset[ - wlv.screen_row - 1] + (COLUMNS_WITHOUT_TPL() - 1)]) > 1) + wlv.screen_row - 1] + (topframe->fr_width - 1)]) > 1) out_char(' '); else out_char(ScreenLines[LineOffset[wlv.screen_row - 1] - + (COLUMNS_WITHOUT_TPL() - 1)]); + + (topframe->fr_width - 1)]); // force a redraw of the first char on the next line ScreenAttrs[LineOffset[wlv.screen_row]] = (sattr_T)-1; screen_start(); // don't know where cursor is now diff --git a/src/drawscreen.c b/src/drawscreen.c index 1e71caef1..60b76d57c 100644 --- a/src/drawscreen.c +++ b/src/drawscreen.c @@ -541,13 +541,13 @@ win_redr_status(win_T *wp, int ignore_pum UNUSED) plen = this_ru_col - 1; } - screen_puts(p, row, wp->w_wincol + TPL_LCOL(wp), attr); - screen_fill(row, row + 1, plen + wp->w_wincol + TPL_LCOL(wp), - this_ru_col + wp->w_wincol + TPL_LCOL(wp), fillchar, fillchar, attr); + screen_puts(p, row, wp->w_wincol, attr); + screen_fill(row, row + 1, plen + wp->w_wincol, + this_ru_col + wp->w_wincol, fillchar, fillchar, attr); if ((NameBufflen = get_keymap_str(wp, (char_u *)"<%s>", NameBuff, MAXPATHL)) > 0 && (this_ru_col - plen) > (NameBufflen + 1)) screen_puts(NameBuff, row, (int)(this_ru_col - NameBufflen - - 1 + wp->w_wincol + TPL_LCOL(wp)), attr); + - 1 + wp->w_wincol), attr); win_redr_ruler(wp, TRUE, ignore_pum); @@ -572,8 +572,7 @@ win_redr_status(win_T *wp, int ignore_pum UNUSED) fillchar = fillchar_status(&attr, wp); else fillchar = fillchar_vsep(&attr, wp); - if (W_ENDCOL(wp) < COLUMNS_WITHOUT_TPL()) - screen_putchar(fillchar, row, W_ENDCOL(wp) + TPL_LCOL(wp), attr); + screen_putchar(fillchar, row, W_ENDCOL(wp), attr); } busy = FALSE; } @@ -798,11 +797,11 @@ win_redr_ruler(win_T *wp, int always, int ignore_pum) buffer[bufferlen] = NUL; } - screen_puts(buffer, row, this_ru_col + off + TPL_LCOL(wp), attr); + screen_puts(buffer, row, this_ru_col + off, attr); n1 = redraw_cmdline; screen_fill(row, row + 1, - this_ru_col + off + bufferlen + TPL_LCOL(wp), - (off + width) + TPL_LCOL(wp), + this_ru_col + off + bufferlen, + (off + width), fillchar, fillchar, attr); // don't redraw the cmdline because of showing the ruler redraw_cmdline = n1; @@ -1043,7 +1042,7 @@ redraw_win_toolbar(win_T *wp) } wp->w_winbar_items[item_idx].wb_menu = NULL; // end marker - screen_line(wp, wp->w_winrow, wp->w_wincol + TPL_LCOL(wp), wp->w_width, + screen_line(wp, wp->w_winrow, wp->w_wincol, wp->w_width, wp->w_width, -1, 0); } #endif @@ -1378,8 +1377,8 @@ fold_line( } #endif - screen_line(wp, row + W_WINROW(wp), wp->w_wincol + TPL_LCOL(wp), - wp->w_width, wp->w_width, -1, 0); + screen_line(wp, row + W_WINROW(wp), wp->w_wincol, wp->w_width, wp->w_width, + -1, 0); // Update w_cline_height and w_cline_folded if the cursor line was // updated (saves a call to plines() later). @@ -2613,13 +2612,16 @@ win_update(win_T *wp) for (k = 0; k < Rows; ++k) if (enc_utf8) - if ((*mb_off2cells)(LineOffset[k] + Columns - 2, + if ((*mb_off2cells)(LineOffset[k] + topframe->fr_width - 2, LineOffset[k] + screen_Columns) > 1) - screen_draw_rectangle(k, Columns - 2, 1, 2, FALSE); + screen_draw_rectangle(k, topframe->fr_width - 2, 1, 2, + FALSE); else - screen_draw_rectangle(k, Columns - 1, 1, 1, FALSE); + screen_draw_rectangle(k, topframe->fr_width - 1, 1, 1, + FALSE); else - screen_char(LineOffset[k] + Columns - 1, k, Columns - 1); + screen_char(LineOffset[k] + topframe->fr_width - 1, k, + Columns - 1); } #endif @@ -2689,8 +2691,8 @@ win_update(win_T *wp) // Last line isn't finished: Display "@@@" at the end. screen_fill(W_WINROW(wp) + wp->w_height - 1, W_WINROW(wp) + wp->w_height, - (start_col < wp->w_wincol ? wp->w_wincol : start_col) + TPL_LCOL(wp), - (int)W_ENDCOL(wp) + TPL_LCOL(wp), + (start_col < wp->w_wincol ? wp->w_wincol : start_col), + (int)W_ENDCOL(wp), symbol, symbol, HL_ATTR(HLF_AT)); set_empty_rows(wp, srow); wp->w_botline = lnum; diff --git a/src/edit.c b/src/edit.c index 366108883..b4e6767f2 100644 --- a/src/edit.c +++ b/src/edit.c @@ -1716,7 +1716,7 @@ edit_putchar(int c, int highlight) if (fix_col != pc_col) { - screen_putchar(' ', pc_row, fix_col + TPL_LCOL(NULL), attr); + screen_putchar(' ', pc_row, fix_col, attr); --curwin->w_wcol; pc_status = PC_STATUS_RIGHT; } @@ -1736,7 +1736,7 @@ edit_putchar(int c, int highlight) screen_getbytes(pc_row, pc_col, pc_bytes, &pc_attr); pc_status = PC_STATUS_SET; } - screen_putchar(c, pc_row, pc_col + TPL_LCOL(NULL), attr); + screen_putchar(c, pc_row, pc_col, attr); } #if defined(FEAT_JOB_CHANNEL) || defined(PROTO) diff --git a/src/ex_docmd.c b/src/ex_docmd.c index a92946558..08d2c1e66 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -8234,7 +8234,7 @@ ex_sleep(exarg_T *eap) { n = W_WINROW(curwin) + curwin->w_wrow - msg_scrolled; if (n >= 0) - windgoto(n, curwin->w_wincol + curwin->w_wcol + TPL_LCOL(curwin)); + windgoto(n, curwin->w_wincol + curwin->w_wcol); } len = eap->line2; diff --git a/src/gui.c b/src/gui.c index 41647d61d..fbbfb8721 100644 --- a/src/gui.c +++ b/src/gui.c @@ -4907,8 +4907,6 @@ xy2win(int x, int y, mouse_find_T popup) row = Y_2_ROW(y); col = X_2_COL(x); - col -= TPL_LCOL(NULL); - if (row < 0 || col < 0) // before first window return NULL; wp = mouse_find_win(&row, &col, popup); @@ -5379,8 +5377,6 @@ gui_wingoto_xy(int x, int y) int col = X_2_COL(x); win_T *wp; - col -= TPL_LCOL(NULL); - if (row < 0 || col < 0) return; diff --git a/src/mouse.c b/src/mouse.c index 65540e555..0d05e643d 100644 --- a/src/mouse.c +++ b/src/mouse.c @@ -479,9 +479,11 @@ do_mouse( start_visual.lnum = 0; - // Check for clicking in the tab page line. + // Check for clicking in the tab page panel. #if defined(FEAT_TABPANEL) - if (mouse_col < TPL_LCOL(NULL)) + if (mouse_row < firstwin->w_winrow + topframe->fr_height + && (mouse_col < firstwin->w_wincol + || mouse_col >= firstwin->w_wincol + topframe->fr_width)) { if (is_drag) { @@ -499,7 +501,7 @@ do_mouse( # ifdef FEAT_CMDWIN && cmdwin_type == 0 # endif - && mouse_col < Columns) + ) { in_tabpanel = TRUE; c1 = get_tabpagenr_on_tabpanel(); @@ -568,7 +570,8 @@ do_mouse( } // click in a tab selects that tab page - if (is_click && cmdwin_type == 0 && mouse_col < Columns) + if (is_click && cmdwin_type == 0 + && mouse_col < firstwin->w_wincol + topframe->fr_width) { in_tab_line = TRUE; c1 = TabPageIdxs[mouse_col]; @@ -1725,10 +1728,6 @@ jump_to_mouse( int mouse_char = ' '; #endif - col -= TPL_LCOL(NULL); - if (col < 0) - return IN_TABPANEL; - mouse_past_bottom = FALSE; mouse_past_eol = FALSE; @@ -1813,7 +1812,7 @@ retnomove: if (!(flags & MOUSE_FOCUS)) { - if (row < 0 || col + TPL_LCOL(NULL) < 0) // check if it makes sense + if (row < 0 || col < 0) // check if it makes sense return IN_UNKNOWN; // find the window where the row is in and adjust "row" and "col" to be @@ -3220,7 +3219,14 @@ mouse_find_win(int *rowp, int *colp, mouse_find_T popup UNUSED) #endif fp = topframe; + + if (*colp < firstwin->w_wincol + || *colp >= firstwin->w_wincol + fp->fr_width + || *rowp < firstwin->w_winrow) + return NULL; + *rowp -= firstwin->w_winrow; + *colp -= firstwin->w_wincol; for (;;) { if (fp->fr_layout == FR_LEAF) @@ -3333,9 +3339,6 @@ f_getmousepos(typval_T *argvars UNUSED, typval_T *rettv) winid = wp->w_id; winrow = row + 1; wincol = col + 1; - wincol -= TPL_LCOL(NULL); - if (wincol < 0) - wincol = 0; row -= top_off; col -= left_off; if (row >= 0 && row < wp->w_height && col >= 0 && col < wp->w_width) diff --git a/src/popupmenu.c b/src/popupmenu.c index 6d91c33ee..fb32017f3 100644 --- a/src/popupmenu.c +++ b/src/popupmenu.c @@ -658,25 +658,22 @@ pum_display_rtl_text( width = cells + over_cell + 1; rt = orig_rt; - screen_putchar(truncrl, row, - col - width + 1 + TPL_LCOL(NULL), trunc_attr); + screen_putchar(truncrl, row, col - width + 1, trunc_attr); if (over_cell > 0) - screen_fill(row, row + 1, col - width + 2 + TPL_LCOL(NULL), - col - width + 2 + over_cell + TPL_LCOL(NULL), ' ', ' ', - attr); + screen_fill(row, row + 1, col - width + 2, + col - width + 2 + over_cell, ' ', ' ', attr); } if (attrs == NULL) - screen_puts_len(rt, (int)STRLEN(rt), row, - col - cells + 1 + TPL_LCOL(NULL), attr); + screen_puts_len(rt, (int)STRLEN(rt), row, col - cells + 1, attr); else - pum_screen_puts_with_attrs(row, col - cells + 1 + TPL_LCOL(NULL), - cells, rt, (int)STRLEN(rt), attrs); + pum_screen_puts_with_attrs(row, col - cells + 1, cells, rt, + (int)STRLEN(rt), attrs); vim_free(rt_start); VIM_CLEAR(st); - return col - width + TPL_LCOL(NULL); + return col - width; } #endif @@ -750,19 +747,17 @@ pum_display_ltr_text( } if (attrs == NULL) - screen_puts_len(st, size, row, col + TPL_LCOL(NULL), attr); + screen_puts_len(st, size, row, col, attr); else - pum_screen_puts_with_attrs(row, col + TPL_LCOL(NULL), cells, st, size, - attrs); + pum_screen_puts_with_attrs(row, col, cells, st, size, attrs); if (truncated) { if (over_cell > 0) - screen_fill(row, row + 1, col + cells + TPL_LCOL(NULL), - col + cells + over_cell + TPL_LCOL(NULL), ' ', ' ', attr); + screen_fill(row, row + 1, col + cells, + col + cells + over_cell, ' ', ' ', attr); - screen_putchar(trunc, row, - col + cells + over_cell + TPL_LCOL(NULL), trunc_attr); + screen_putchar(trunc, row, col + cells + over_cell, trunc_attr); } VIM_CLEAR(st); @@ -873,10 +868,10 @@ pum_draw_scrollbar( #ifdef FEAT_RIGHTLEFT if (pum_rl) - screen_putchar(' ', row, pum_col - pum_width + TPL_LCOL(NULL), attr); + screen_putchar(' ', row, pum_col - pum_width, attr); else #endif - screen_putchar(' ', row, pum_col + pum_width + TPL_LCOL(NULL), attr); + screen_putchar(' ', row, pum_col + pum_width, attr); } /* @@ -959,12 +954,12 @@ pum_redraw(void) if (pum_rl) { if (pum_col < curwin->w_wincol + curwin->w_width - 1) - screen_putchar(' ', row, pum_col + 1 + TPL_LCOL(NULL), attr); + screen_putchar(' ', row, pum_col + 1, attr); } else #endif if (pum_col > 0) - screen_putchar(' ', row, pum_col - 1 + TPL_LCOL(NULL), attr); + screen_putchar(' ', row, pum_col - 1, attr); // Display each entry, use two spaces for a Tab. // Do this 3 times and order from p_cia @@ -1005,16 +1000,15 @@ pum_redraw(void) #ifdef FEAT_RIGHTLEFT if (pum_rl) { - screen_fill(row, row + 1, pum_col - basic_width - n + 1 + TPL_LCOL(NULL), - col + 1 + TPL_LCOL(NULL), ' ', ' ', orig_attr); + screen_fill(row, row + 1, pum_col - basic_width - n + 1, + col + 1, ' ', ' ', orig_attr); col = pum_col - basic_width - n; } else #endif { - screen_fill(row, row + 1, col + TPL_LCOL(NULL), - pum_col + basic_width + n + TPL_LCOL(NULL), ' ', ' ', - orig_attr); + screen_fill(row, row + 1, col, pum_col + basic_width + n, + ' ', ' ', orig_attr); col = pum_col + basic_width + n; } totwidth = basic_width + n; @@ -1022,14 +1016,12 @@ pum_redraw(void) #ifdef FEAT_RIGHTLEFT if (pum_rl) - screen_fill(row, row + 1, - pum_col - pum_width + 1 + TPL_LCOL(NULL), - col + 1 + TPL_LCOL(NULL), ' ', ' ', orig_attr); + screen_fill(row, row + 1, pum_col - pum_width + 1, col + 1, ' ', + ' ', orig_attr); else #endif - screen_fill(row, row + 1, col + TPL_LCOL(NULL), - pum_col + pum_width + TPL_LCOL(NULL), - ' ', ' ', orig_attr); + screen_fill(row, row + 1, col, pum_col + pum_width, ' ', ' ', + orig_attr); pum_draw_scrollbar(row, i, thumb_pos, thumb_height); ++row; diff --git a/src/popupwin.c b/src/popupwin.c index a9a284377..199ffaf8d 100644 --- a/src/popupwin.c +++ b/src/popupwin.c @@ -86,7 +86,7 @@ popup_options_one(dict_T *dict, char_u *key) if (STRCMP(key, "line") == 0) n = screen_screenrow() + 1 + n; else // "col" - n = screen_screencol() + 1 + n - TPL_LCOL(NULL); + n = screen_screencol() + 1 + n; // Zero means "not set", use -1 instead. if (n == 0) @@ -1354,15 +1354,15 @@ popup_adjust_position(win_T *wp) { wp->w_wincol = wantcol - 1; // Need to see at least one character after the decoration. - if (wp->w_wincol > Columns - left_extra - 1) - wp->w_wincol = Columns - left_extra - 1; + if (wp->w_wincol > firstwin->w_wincol + topframe->fr_width - left_extra - 1) + wp->w_wincol = firstwin->w_wincol + topframe->fr_width - left_extra - 1; } } // When centering or right aligned, use maximum width. // When left aligned use the space available, but shift to the left when we // hit the right of the screen. - maxspace = Columns - wp->w_wincol - left_extra; + maxspace = firstwin->w_wincol + topframe->fr_width - wp->w_wincol - left_extra; maxwidth = maxspace; if (wp->w_maxwidth > 0 && maxwidth > wp->w_maxwidth) { @@ -1545,7 +1545,7 @@ popup_adjust_position(win_T *wp) } if (center_hor) { - wp->w_wincol = (Columns - wp->w_width - extra_width - TPL_LCOL(NULL)) / 2; + wp->w_wincol = (firstwin->w_wincol + topframe->fr_width - wp->w_width - extra_width) / 2; if (wp->w_wincol < 0) wp->w_wincol = 0; } @@ -1581,9 +1581,9 @@ popup_adjust_position(win_T *wp) // try to show the right border and any scrollbar want_col = left_extra + wp->w_width + right_extra; if (want_col > 0 && wp->w_wincol > 0 - && wp->w_wincol + want_col >= Columns) + && wp->w_wincol + want_col >= firstwin->w_wincol + topframe->fr_width) { - wp->w_wincol = Columns - want_col; + wp->w_wincol = firstwin->w_wincol + topframe->fr_width - want_col; if (wp->w_wincol < 0) wp->w_wincol = 0; } @@ -1673,6 +1673,13 @@ popup_adjust_position(win_T *wp) else if (wp->w_winrow < 0) wp->w_winrow = 0; + if (wp->w_wincol + wp->w_width > firstwin->w_wincol + topframe->fr_width) + wp->w_wincol = firstwin->w_wincol + topframe->fr_width - wp->w_width; + else if (wp->w_wincol < firstwin->w_wincol) + wp->w_wincol = firstwin->w_wincol; + if (wp->w_wincol < 0) + wp->w_wincol = 0; + if (wp->w_height != org_height) win_comp_scroll(wp); @@ -4081,7 +4088,7 @@ update_popups(void (*win_update)(win_T *wp)) // win_update() doesn't handle them. top_off = popup_top_extra(wp); left_extra = wp->w_popup_padding[3] + wp->w_popup_border[3] - + TPL_LCOL(NULL) - wp->w_popup_leftoff; + - wp->w_popup_leftoff; if (wp->w_wincol + left_extra < 0) left_extra = -wp->w_wincol; wp->w_winrow += top_off; @@ -4163,7 +4170,7 @@ update_popups(void (*win_update)(win_T *wp)) } // Title goes on top of border or padding. - title_wincol = wp->w_wincol + 1 + TPL_LCOL(NULL); + title_wincol = wp->w_wincol + 1; if (wp->w_popup_title != NULL) { title_len = vim_strsize(wp->w_popup_title); @@ -4191,7 +4198,7 @@ update_popups(void (*win_update)(win_T *wp)) wp->w_popup_border[0] > 0 ? border_attr[0] : popup_attr); } - wincol = wp->w_wincol - wp->w_popup_leftoff + TPL_LCOL(NULL); + wincol = wp->w_wincol - wp->w_popup_leftoff; top_padding = wp->w_popup_padding[0]; if (wp->w_popup_border[0] > 0) { @@ -4229,7 +4236,7 @@ update_popups(void (*win_update)(win_T *wp)) { padcol = wincol + wp->w_popup_border[3]; padendcol = wp->w_wincol + total_width - wp->w_popup_border[1] - + TPL_LCOL(NULL) - wp->w_has_scrollbar; + - wp->w_has_scrollbar; if (padcol < 0) { padendcol += padcol; @@ -4327,7 +4334,7 @@ update_popups(void (*win_update)(win_T *wp)) if (wp->w_has_scrollbar) { int line = i - top_off; - int scroll_col = wp->w_wincol + total_width - 1 + TPL_LCOL(NULL) + int scroll_col = wp->w_wincol + total_width - 1 - wp->w_popup_border[1]; if (line >= 0 && line < wp->w_height) diff --git a/src/screen.c b/src/screen.c index d8a060f0c..f262cf4c0 100644 --- a/src/screen.c +++ b/src/screen.c @@ -156,13 +156,13 @@ screen_fill_end( if (wp->w_p_rl) { screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow, - W_ENDCOL(wp) - nn + TPL_LCOL(wp), (int)W_ENDCOL(wp) - off + TPL_LCOL(wp), + W_ENDCOL(wp) - nn, (int)W_ENDCOL(wp) - off, c1, c2, attr); } else #endif screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow, - wp->w_wincol + off + TPL_LCOL(wp), (int)wp->w_wincol + nn + TPL_LCOL(wp), + wp->w_wincol + off, (int)wp->w_wincol + nn, c1, c2, attr); return nn; } @@ -215,18 +215,15 @@ win_draw_end( if (wp->w_p_rl) { screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow, - wp->w_wincol + TPL_LCOL(wp), W_ENDCOL(wp) - 1 - n + - TPL_LCOL(wp), c2, c2, attr); + wp->w_wincol, W_ENDCOL(wp) - 1 - n, c2, c2, attr); screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow, - W_ENDCOL(wp) - 1 - n + TPL_LCOL(wp), W_ENDCOL(wp) - n + - TPL_LCOL(wp), c1, c2, attr); + W_ENDCOL(wp) - 1 - n, W_ENDCOL(wp) - n, c1, c2, attr); } else #endif { screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + endrow, - wp->w_wincol + n + TPL_LCOL(wp), (int)W_ENDCOL(wp) + TPL_LCOL(wp), - c1, c2, attr); + wp->w_wincol + n, (int)W_ENDCOL(wp), c1, c2, attr); } set_empty_rows(wp, row); @@ -369,6 +366,9 @@ char_needs_redraw(int off_from, int off_to, int cols) && ScreenLines[off_from + 1] != ScreenLines[off_to + 1]))))) return TRUE; + // TODO: This is a temporary solution until the root cause is fixed. + if (firstwin->w_wincol > 0) + return TRUE; return FALSE; } @@ -395,9 +395,7 @@ blocked_by_popup(int row, int col) if (!popup_visible) return FALSE; - if (col < TPL_LCOL(NULL)) - return FALSE; - off = row * screen_Columns + col - TPL_LCOL(NULL); + off = row * screen_Columns + col; return popup_mask[off] > screen_zindex || popup_transparent[off]; } #endif @@ -857,7 +855,7 @@ screen_line( { // For a window that has a right neighbor, draw the separator char // right of the window contents. But not on top of a popup window. - if (coloff + col < TPL_LCOL(NULL) + COLUMNS_WITHOUT_TPL()) + if (coloff + col < firstwin->w_wincol + topframe->fr_width) { if (!skip_for_popup(row, col + coloff)) { @@ -922,14 +920,10 @@ draw_vsep_win(win_T *wp, int row) if (!wp->w_vsep_width) return; - if (COLUMNS_WITHOUT_TPL() <= W_ENDCOL(wp) + 1) - return; - // draw the vertical separator right of this window c = fillchar_vsep(&hl, wp); screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + wp->w_height, - W_ENDCOL(wp) + TPL_LCOL(wp), W_ENDCOL(wp) + 1 + TPL_LCOL(wp), - c, ' ', hl); + W_ENDCOL(wp), W_ENDCOL(wp) + 1, c, ' ', hl); } /* @@ -1056,9 +1050,10 @@ win_redr_custom( // Use 'tabline'. Always at the first line of the screen. stl = p_tal; row = 0; + col = firstwin->w_wincol; fillchar = ' '; attr = HL_ATTR(HLF_TPF); - maxwidth = COLUMNS_WITHOUT_TPL(); + maxwidth = topframe->fr_width; opt_name = (char_u *)"tabline"; } else @@ -1155,7 +1150,7 @@ win_redr_custom( for (n = 0; hltab[n].start != NULL; n++) { len = (int)(hltab[n].start - p); - screen_puts_len(p, len, row, col + TPL_LCOL(wp), curattr); + screen_puts_len(p, len, row, col, curattr); col += vim_strnsize(p, len); p = hltab[n].start; @@ -1176,12 +1171,12 @@ win_redr_custom( else curattr = highlight_user[hltab[n].userhl - 1]; } - screen_puts(p, row, col + TPL_LCOL(wp), curattr); + screen_puts(p, row, col, curattr); if (wp == NULL) { // Fill the TabPageIdxs[] array for clicking in the tab pagesline. - col = 0; + col = firstwin->w_wincol; len = 0; p = buf; fillchar = 0; @@ -1193,7 +1188,7 @@ win_redr_custom( p = tabtab[n].start; fillchar = tabtab[n].userhl; } - while (col < COLUMNS_WITHOUT_TPL()) + while (col < Columns) TabPageIdxs[col++] = fillchar; } @@ -2132,15 +2127,15 @@ redraw_block(int row, int end, win_T *wp) if (wp == NULL) { - col = 0; - width = COLUMNS_WITHOUT_TPL(); + col = firstwin->w_wincol; + width = topframe->fr_width; } else { col = wp->w_wincol; width = wp->w_width; } - screen_draw_rectangle(row, col + TPL_LCOL(wp), end - row, width, FALSE); + screen_draw_rectangle(row, col, end - row, width, FALSE); } void @@ -2918,11 +2913,6 @@ linecopy(int to, int from, win_T *wp) unsigned off_to = LineOffset[to] + wp->w_wincol; unsigned off_from = LineOffset[from] + wp->w_wincol; -#if defined(FEAT_TABPANEL) - off_to += TPL_LCOL(wp); - off_from += TPL_LCOL(wp); -#endif - mch_memmove(ScreenLines + off_to, ScreenLines + off_from, wp->w_width * sizeof(schar_T)); if (enc_utf8) @@ -3256,7 +3246,7 @@ setcursor_mayforce(int force) && (*mb_ptr2cells)(ml_get_cursor()) == 2 && vim_isprintc(gchar_cursor())) ? 2 : 1)) : #endif - curwin->w_wcol) + TPL_LCOL(NULL)); + curwin->w_wcol)); } } @@ -3326,8 +3316,7 @@ win_ins_lines( if (lastrow > Rows) lastrow = Rows; screen_fill(nextrow - line_count, lastrow - line_count, - wp->w_wincol + TPL_LCOL(wp), (int)W_ENDCOL(wp) + TPL_LCOL(wp), - ' ', ' ', 0); + wp->w_wincol, (int)W_ENDCOL(wp), ' ', ' ', 0); } if (screen_ins_lines(0, W_WINROW(wp) + row, line_count, (int)Rows, 0, NULL) @@ -3425,7 +3414,7 @@ win_do_lines( // only a few lines left: redraw is faster if (mayclear && Rows - line_count < 5 - && wp->w_width == COLUMNS_WITHOUT_TPL()) + && wp->w_width == topframe->fr_width) { if (!no_win_do_lines_ins) screenclear(); // will set wp->w_lines_valid to 0 @@ -3442,8 +3431,7 @@ win_do_lines( if (row + line_count >= wp->w_height) { screen_fill(W_WINROW(wp) + row, W_WINROW(wp) + wp->w_height, - wp->w_wincol + TPL_LCOL(wp), (int)W_ENDCOL(wp) + TPL_LCOL(wp), - ' ', ' ', 0); + wp->w_wincol, (int)W_ENDCOL(wp), ' ', ' ', 0); return OK; } @@ -3464,9 +3452,9 @@ win_do_lines( * a character in the lower right corner of the scroll region may cause a * scroll-up . */ - if (scroll_region || wp->w_width != COLUMNS_WITHOUT_TPL()) + if (scroll_region || wp->w_width != topframe->fr_width) { - if (scroll_region && (wp->w_width == COLUMNS_WITHOUT_TPL() + if (scroll_region && (wp->w_width == topframe->fr_width || *T_CSV != NUL)) scroll_region_set(wp, row); if (del) @@ -3475,7 +3463,7 @@ win_do_lines( else retval = screen_ins_lines(W_WINROW(wp) + row, 0, line_count, wp->w_height - row, clear_attr, wp); - if (scroll_region && (wp->w_width == COLUMNS_WITHOUT_TPL() + if (scroll_region && (wp->w_width == topframe->fr_width || *T_CSV != NUL)) scroll_region_reset(); return retval; @@ -3599,7 +3587,7 @@ screen_ins_lines( * exists. */ result_empty = (row + line_count >= end); - if (wp != NULL && wp->w_width != COLUMNS_WITHOUT_TPL() && *T_CSV == NUL) + if (wp != NULL && wp->w_width != topframe->fr_width && *T_CSV == NUL) { // Avoid that lines are first cleared here and then redrawn, which // results in many characters updated twice. This happens with CTRL-F @@ -3645,7 +3633,7 @@ screen_ins_lines( #ifdef FEAT_CLIPBOARD // Remove a modeless selection when inserting lines halfway the screen // or not the full width of the screen. - if (off + row > 0 || (wp != NULL && wp->w_width != COLUMNS_WITHOUT_TPL())) + if (off + row > 0 || (wp != NULL && wp->w_width != topframe->fr_width)) clip_clear_selection(&clip_star); else clip_scroll_selection(-line_count); @@ -3677,7 +3665,7 @@ screen_ins_lines( end += off; for (i = 0; i < line_count; ++i) { - if (wp != NULL && wp->w_width != COLUMNS_WITHOUT_TPL()) + if (wp != NULL && wp->w_width != topframe->fr_width) { // need to copy part of a line j = end - 1 - i; @@ -3685,11 +3673,10 @@ screen_ins_lines( linecopy(j + line_count, j, wp); j += line_count; if (can_clear((char_u *)" ")) - lineclear(LineOffset[j] + wp->w_wincol + TPL_LCOL(wp), + lineclear(LineOffset[j] + wp->w_wincol, wp->w_width, clear_attr); else - lineinvalid(LineOffset[j] + wp->w_wincol + TPL_LCOL(wp), - wp->w_width); + lineinvalid(LineOffset[j] + wp->w_wincol, wp->w_width); LineWraps[j] = FALSE; } else @@ -3704,10 +3691,9 @@ screen_ins_lines( LineOffset[j + line_count] = temp; LineWraps[j + line_count] = FALSE; if (can_clear((char_u *)" ")) - lineclear(temp + TPL_LCOL(wp), COLUMNS_WITHOUT_TPL(), - clear_attr); + lineclear(temp, topframe->fr_width, clear_attr); else - lineinvalid(temp + TPL_LCOL(wp), COLUMNS_WITHOUT_TPL()); + lineinvalid(temp, topframe->fr_width); } } @@ -3840,7 +3826,7 @@ screen_del_lines( * 5. Use T_DL (delete line) if it exists. * 6. redraw the characters from ScreenLines[]. */ - if (wp != NULL && wp->w_width != COLUMNS_WITHOUT_TPL() && *T_CSV == NUL) + if (wp != NULL && wp->w_width != topframe->fr_width && *T_CSV == NUL) { // Avoid that lines are first cleared here and then redrawn, which // results in many characters updated twice. This happens with CTRL-F @@ -3863,7 +3849,7 @@ screen_del_lines( else if (*T_CDL != NUL && line_count > 1 && can_delete) type = USE_T_CDL; else if (can_clear(T_CE) && result_empty - && (wp == NULL || wp->w_width == COLUMNS_WITHOUT_TPL())) + && (wp == NULL || wp->w_width == topframe->fr_width)) type = USE_T_CE; else if (*T_DL != NUL && can_delete) type = USE_T_DL; @@ -3875,7 +3861,7 @@ screen_del_lines( #ifdef FEAT_CLIPBOARD // Remove a modeless selection when deleting lines halfway the screen or // not the full width of the screen. - if (off + row > 0 || (wp != NULL && wp->w_width != COLUMNS_WITHOUT_TPL())) + if (off + row > 0 || (wp != NULL && wp->w_width != topframe->fr_width)) clip_clear_selection(&clip_star); else clip_scroll_selection(line_count); @@ -3914,7 +3900,7 @@ screen_del_lines( end += off; for (i = 0; i < line_count; ++i) { - if (wp != NULL && wp->w_width != COLUMNS_WITHOUT_TPL()) + if (wp != NULL && wp->w_width != topframe->fr_width) { // need to copy part of a line j = row + i; @@ -3922,11 +3908,10 @@ screen_del_lines( linecopy(j - line_count, j, wp); j -= line_count; if (can_clear((char_u *)" ")) - lineclear(LineOffset[j] + wp->w_wincol + TPL_LCOL(wp), + lineclear(LineOffset[j] + wp->w_wincol, wp->w_width, clear_attr); else - lineinvalid(LineOffset[j] + wp->w_wincol + TPL_LCOL(wp), - wp->w_width); + lineinvalid(LineOffset[j] + wp->w_wincol, wp->w_width); LineWraps[j] = FALSE; } else @@ -3942,10 +3927,9 @@ screen_del_lines( LineOffset[j - line_count] = temp; LineWraps[j - line_count] = FALSE; if (can_clear((char_u *)" ")) - lineclear(temp + TPL_LCOL(NULL), COLUMNS_WITHOUT_TPL(), - clear_attr); + lineclear(temp, (int)Columns, clear_attr); else - lineinvalid(temp + TPL_LCOL(NULL), COLUMNS_WITHOUT_TPL()); + lineinvalid(temp, (int)Columns); } } @@ -4333,7 +4317,7 @@ draw_tabline(void) ); #if defined(FEAT_TABPANEL) - col = TPL_LCOL(NULL); + col = firstwin->w_wincol; #endif if (ScreenLines == NULL) @@ -4364,7 +4348,7 @@ draw_tabline(void) FOR_ALL_TABPAGES(tp) ++tabcount; - tabwidth = (COLUMNS_WITHOUT_TPL() - 1 + tabcount / 2) / tabcount; + tabwidth = (topframe->fr_width - 1 + tabcount / 2) / tabcount; if (tabwidth < 6) tabwidth = 6; diff --git a/src/tabpanel.c b/src/tabpanel.c index 599e434cb..3845faa8f 100644 --- a/src/tabpanel.c +++ b/src/tabpanel.c @@ -164,7 +164,7 @@ draw_tabpanel(void) int row = 0; int off = 0; #endif -int vsrow = 0; + int vsrow = 0; int is_right = tpl_align == ALIGN_RIGHT; if (maxwidth == 0) @@ -198,14 +198,10 @@ int vsrow = 0; maxwidth - VERT_LEN, &curtab_row, NULL); do_by_tplmode(TPLMODE_REDRAW, VERT_LEN, maxwidth, &curtab_row, NULL); - // clear for multi-byte vert separater - screen_fill(0, cmdline_row, COLUMNS_WITHOUT_TPL(), - COLUMNS_WITHOUT_TPL() + VERT_LEN, - TPL_FILLCHAR, TPL_FILLCHAR, vs_attr); - // draw vert separater in tabpanel + // draw vert separator in tabpanel for (vsrow = 0; vsrow < cmdline_row; vsrow++) screen_putchar(curwin->w_fill_chars.tpl_vert, vsrow, - COLUMNS_WITHOUT_TPL(), vs_attr); + topframe->fr_width, vs_attr); } else { @@ -214,10 +210,7 @@ int vsrow = 0; &curtab_row, NULL); do_by_tplmode(TPLMODE_REDRAW, 0, maxwidth - VERT_LEN, &curtab_row, NULL); - // clear for multi-byte vert separater - screen_fill(0, cmdline_row, maxwidth - VERT_LEN, - maxwidth, TPL_FILLCHAR, TPL_FILLCHAR, vs_attr); - // draw vert separater in tabpanel + // draw vert separator in tabpanel for (vsrow = 0; vsrow < cmdline_row; vsrow++) screen_putchar(curwin->w_fill_chars.tpl_vert, vsrow, maxwidth - VERT_LEN, vs_attr); @@ -272,8 +265,8 @@ screen_fill_tailing_area( int is_right = tpl_align == ALIGN_RIGHT; if (tplmode == TPLMODE_REDRAW) screen_fill(row_start, row_end, - (is_right ? COLUMNS_WITHOUT_TPL() : 0) + col_start, - (is_right ? COLUMNS_WITHOUT_TPL() : 0) + col_end, + (is_right ? topframe->fr_width : 0) + col_start, + (is_right ? topframe->fr_width : 0) + col_end, TPL_FILLCHAR, TPL_FILLCHAR, attr); } @@ -356,7 +349,7 @@ screen_puts_len_for_tabpanel( if (*pargs->pcol + chcells <= pargs->col_end) { int off = (tpl_align == ALIGN_RIGHT) - ? COLUMNS_WITHOUT_TPL() + ? topframe->fr_width : 0; if (TPLMODE_REDRAW == tplmode && (*pargs->prow - pargs->offsetrow >= 0 @@ -628,7 +621,7 @@ do_by_tplmode( p++; } - while (p[i] != ' ' && p[i] != ' ' && (p[i] != NUL)) + while (p[i] != ' ' && p[i] != ' ' && p[i] != NUL) { if (i + 1 >= sizeof(buf)) break; diff --git a/src/term.c b/src/term.c index 2d2c94061..bf5636129 100644 --- a/src/term.c +++ b/src/term.c @@ -3630,7 +3630,17 @@ win_new_shellsize(void) if (old_Columns != Columns) { old_Columns = Columns; - shell_new_columns(); // update window sizes + + tabpage_T *save_curtab = curtab; + tabpage_T *tp; + FOR_ALL_TABPAGES(tp) + { + unuse_tabpage(curtab); + use_tabpage(tp); + shell_new_columns(); + } + unuse_tabpage(curtab); + use_tabpage(save_curtab); } } @@ -4454,16 +4464,9 @@ scroll_region_set(win_T *wp, int off) { OUT_STR(tgoto((char *)T_CS, W_WINROW(wp) + wp->w_height - 1, W_WINROW(wp) + off)); -#if defined(FEAT_TABPANEL) - if (*T_CSV != NUL) - OUT_STR(tgoto((char *)T_CSV, - wp->w_wincol + wp->w_width - 1 + TPL_LCOL(NULL), - wp->w_wincol + TPL_LCOL(NULL))); -#else - if (*T_CSV != NUL && wp->w_width != Columns) + if (*T_CSV != NUL && wp->w_width != topframe->fr_width) OUT_STR(tgoto((char *)T_CSV, wp->w_wincol + wp->w_width - 1, wp->w_wincol)); -#endif screen_start(); // don't know where cursor is now } @@ -4475,7 +4478,7 @@ scroll_region_reset(void) { OUT_STR(tgoto((char *)T_CS, (int)Rows - 1, 0)); if (*T_CSV != NUL) - OUT_STR(tgoto((char *)T_CSV, COLUMNS_WITHOUT_TPL() - 1, 0)); + OUT_STR(tgoto((char *)T_CSV, topframe->fr_width - 1, 0)); screen_start(); // don't know where cursor is now } diff --git a/src/terminal.c b/src/terminal.c index a0758409e..921b234de 100644 --- a/src/terminal.c +++ b/src/terminal.c @@ -1351,7 +1351,7 @@ update_cursor(term_T *term, int redraw) // do not use the window cursor position position_cursor(curwin, &curbuf->b_term->tl_cursor_pos); windgoto(W_WINROW(curwin) + curwin->w_wrow, - curwin->w_wincol + curwin->w_wcol + TPL_LCOL(NULL)); + curwin->w_wincol + curwin->w_wcol); } if (redraw) { @@ -4120,8 +4120,7 @@ term_update_window(win_T *wp) #ifdef FEAT_MENU + winbar_height(wp) #endif - , wp->w_wincol + TPL_LCOL(wp), pos.col, - wp->w_width, -1, + , wp->w_wincol, pos.col, wp->w_width, -1, #ifdef FEAT_PROP_POPUP popup_is_popup(wp) ? SLF_POPUP : #endif diff --git a/src/testdir/dumps/Test_tabpanel_dont_overflow_into_tabpanel_0.dump b/src/testdir/dumps/Test_tabpanel_dont_overflow_into_tabpanel_0.dump index 5fd8f9b11..6076978d0 100644 --- a/src/testdir/dumps/Test_tabpanel_dont_overflow_into_tabpanel_0.dump +++ b/src/testdir/dumps/Test_tabpanel_dont_overflow_into_tabpanel_0.dump @@ -7,4 +7,4 @@ | +1#0000000&@9|~+0#4040ff13&| @33 | +1#0000000&@9|~+0#4040ff13&| @33 | +1#0000000&@9|~+0#4040ff13&| @33 -| +0#0000000&@36|1|,|1| @4 +| +0#0000000&@26|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_tabpanel_drawing_01.dump b/src/testdir/dumps/Test_tabpanel_drawing_01.dump index 860154222..74ba073e0 100644 --- a/src/testdir/dumps/Test_tabpanel_drawing_01.dump +++ b/src/testdir/dumps/Test_tabpanel_drawing_01.dump @@ -3,4 +3,4 @@ | +1#0000000&@15|~+0#4040ff13&| @27 | +1#0000000&@15|~+0#4040ff13&| @27 | +1#0000000&@15|~+0#4040ff13&| @27 -| +0#0000000&@26|0|,|0|-|1| @8|A|l|0|, +| +0#0000000&@26|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_tabpanel_drawing_04.dump b/src/testdir/dumps/Test_tabpanel_drawing_04.dump index 61b759e67..dd3c82e1a 100644 --- a/src/testdir/dumps/Test_tabpanel_drawing_04.dump +++ b/src/testdir/dumps/Test_tabpanel_drawing_04.dump @@ -3,4 +3,4 @@ | +1&&@15|f+0&&| @27 | +1&&@15|~+0#4040ff13&| @27 | +1#0000000&@15|~+0#4040ff13&| @27 -| +0#0000000&@42|1|, +| +0#0000000&@26|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_tabpanel_drawing_05.dump b/src/testdir/dumps/Test_tabpanel_drawing_05.dump index e9ea7cbdb..08e040bdf 100644 --- a/src/testdir/dumps/Test_tabpanel_drawing_05.dump +++ b/src/testdir/dumps/Test_tabpanel_drawing_05.dump @@ -3,4 +3,4 @@ | +2&&@15|f+0&&| @27 |2+2&&|:|X+0#4040ff13&|t|a|b|p|a|n|e|l|2| +2#0000000&@3|~+0#4040ff13&| @27 | +1#0000000&@15|~+0#4040ff13&| @27 -| +0#0000000&@42|1|, +| +0#0000000&@26|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_tabpanel_drawing_fill_tailing_0.dump b/src/testdir/dumps/Test_tabpanel_drawing_fill_tailing_0.dump index 40e3bd74c..4ca56d419 100644 --- a/src/testdir/dumps/Test_tabpanel_drawing_fill_tailing_0.dump +++ b/src/testdir/dumps/Test_tabpanel_drawing_fill_tailing_0.dump @@ -7,4 +7,4 @@ |b+2#0000000&@2|.|t|x|t| @12|~+0#4040ff13&| @23 |B+2#0000000&|O|T@1|O|M| @13|~+0#4040ff13&| @23 | +1#0000000&@19|~+0#4040ff13&| @23 -| +0#0000000&@44 +| +0#0000000&@26|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_tabpanel_drawing_pum_0.dump b/src/testdir/dumps/Test_tabpanel_drawing_pum_0.dump index 190e5d99f..d98dbfdd6 100644 --- a/src/testdir/dumps/Test_tabpanel_drawing_pum_0.dump +++ b/src/testdir/dumps/Test_tabpanel_drawing_pum_0.dump @@ -1,10 +1,10 @@ -|a+8#0000001#e0e0e08@2|.|t|x|t| @12|!+0#0000000#ffffff0> @23 -|b+2&&@2|.|t|x|t| @12|!+0#0000001#e0e0e08| @14| +0#0000000#0000001| +0#4040ff13#ffffff0@7 -| +1#0000000&@19|#+0#0000001#ffd7ff255| @14| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@7 -| +1#0000000&@19|&+0#0000001#ffd7ff255| @14| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@7 -| +1#0000000&@19|*+0#0000001#ffd7ff255| @14| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@7 -| +1#0000000&@19|++0#0000001#ffd7ff255@1| @13| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@7 -| +1#0000000&@19|-+0#0000001#ffd7ff255@1| @13| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@7 -| +1#0000000&@19|<+0#0000001#ffd7ff255| @14| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@7 -| +1#0000000&@19|=+0#0000001#ffd7ff255| @14| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@7 -|-+2#0000000&@1| |m+0#00e0003&|a|t|c|h| |1| |o|f| |5|9|6| +0#0000000&@27 +|a+8#0000001#e0e0e08@2|.|t|x|t| @12|a+0#0000000#ffffff0@1> @22 +|++2&&| |b@2|.|t|x|t| @9| +0#0000001#e0e0e08|a@1| @12| +0#0000000#ffffff0@9 +| +1&&@18| +0#0000001#ffd7ff255|a@3| @10| +0#0000000#ffffff0@9 +| +1&&@18| +0#0000001#ffd7ff255|a@2|c| @10| +0#0000000#ffffff0@9 +| +1&&@18| +0#0000001#ffd7ff255|a@2|b| @10| +0#0000000#ffffff0@9 +| +1&&@19| +0&&@24 +| +1&&@19|~+0#4040ff13&| @23 +| +1#0000000&@19|~+0#4040ff13&| @23 +| +1#0000000&@19|~+0#4040ff13&| @23 +|-+2#0000000&@1| |m+0#00e0003&|a|t|c|h| |1| |o|f| |4| +0#0000000&@29 diff --git a/src/testdir/dumps/Test_tabpanel_drawing_pum_1.dump b/src/testdir/dumps/Test_tabpanel_drawing_pum_1.dump index 9888bc0cc..17e0c971f 100644 --- a/src/testdir/dumps/Test_tabpanel_drawing_pum_1.dump +++ b/src/testdir/dumps/Test_tabpanel_drawing_pum_1.dump @@ -1,10 +1,10 @@ -|a+8#0000001#e0e0e08@2|.|t|x|t| @12|!+0#0000000#ffffff0| @23 -|++2&&| |b@2|.|t|x|t| @10| +0&&@1|a|b@1|r|e|v|i|a|t|e> @12 -| +1&&@19|~+0#4040ff13&| +0#0000001#e0e0e08|a|b@1|r|e|v|i|a|t|e| @4| +0#4040ff13#ffffff0@7 -| +1#0000000&@19|~+0#4040ff13&| +0#0000001#ffd7ff255|a|b|c|l|e|a|r| @7| +0#4040ff13#ffffff0@7 -| +1#0000000&@19|~+0#4040ff13&| +0#0000001#ffd7ff255|a|b|o|v|e|l|e|f|t| @5| +0#4040ff13#ffffff0@7 -| +1#0000000&@19|~+0#4040ff13&| +0#0000001#ffd7ff255|a|b|s|t|r|a|c|t| @6| +0#4040ff13#ffffff0@7 -| +1#0000000&@19|~+0#4040ff13&| @23 -| +1#0000000&@19|~+0#4040ff13&| @23 +|a+8#0000001#e0e0e08@2|.|t|x|t| @12|a+0#0000000#ffffff0@1| @22 +|++2&&| |b@2|.|t|x|t| @10|a+0&&@1| @22 +| +1&&@19|a+0&&| +0#0000001#ffd7ff255|a@1| @12| +0#0000000#ffffff0@7 +| +1&&@19|a+0&&| +0#0000001#ffd7ff255|a@3| @10| +0#0000000#ffffff0@7 +| +1&&@19|a+0&&| +0#0000001#ffd7ff255|a@2|c| @10| +0#0000000#ffffff0@7 +| +1&&@19| +0&&| +0#0000001#e0e0e08|a@2|b| @10| +0#0000000#ffffff0@7 +| +1&&@19| +0&&@1|a@2|b> @18 +| +1&&@19|~+0#4040ff13&| @23 | +1#0000000&@19|~+0#4040ff13&| @23 |-+2#0000000&@1| |m+0#00e0003&|a|t|c|h| |1| |o|f| |4| +0#0000000&@29 diff --git a/src/testdir/dumps/Test_tabpanel_drawing_pum_2.dump b/src/testdir/dumps/Test_tabpanel_drawing_pum_2.dump new file mode 100644 index 000000000..4ea7b9140 --- /dev/null +++ b/src/testdir/dumps/Test_tabpanel_drawing_pum_2.dump @@ -0,0 +1,10 @@ +|a+0&#ffffff0@1| @22|a+8#0000001#e0e0e08@2|.|t|x|t| @12 +|a+0#0000000#ffffff0@1| @22|++2&&| |b@2|.|t|x|t| @10 +|a+0&&@3| @20| +1&&@19 +|a+0&&@2|c| @17| +0#0000001#e0e0e08|a@1| @12| +1#0000000#ffffff0@6 +|a+0&&@2|b| @17| +0#0000001#ffd7ff255|a@3| @10| +1#0000000#ffffff0@6 +| +0&&@21| +0#0000001#ffd7ff255|a@2|c| @10| +1#0000000#ffffff0@6 +| +0&&@21| +0#0000001#ffd7ff255|a@2|b| @10| +1#0000000#ffffff0@6 +| +0&&@22|a@1| +1&&@19 +>~+0#4040ff13&| @23| +1#0000000&@19 +|-+2&&@1| |m+0#00e0003&|a|t|c|h| |1| |o|f| |4| +0#0000000&@29 diff --git a/src/testdir/dumps/Test_tabpanel_drawing_with_popupwin_0.dump b/src/testdir/dumps/Test_tabpanel_drawing_with_popupwin_0.dump index 080fa2788..7f390e77d 100644 --- a/src/testdir/dumps/Test_tabpanel_drawing_with_popupwin_0.dump +++ b/src/testdir/dumps/Test_tabpanel_drawing_with_popupwin_0.dump @@ -1,10 +1,10 @@ -|[+8#0000001#e0e0e08|N|o| |N|a|m|e|]| @10|╔+0#0000000#ffffff0|═|╗|.@18|╔|═|╗ -|[+2&&|S|c|r|a|t|c|h|]| @10|║+0&&|@|║|.@18|║|@|║ -| +1&&@19|╚+0&&|═|╝|.@5|a|t|c|u|r|s|o|r|.@4|╚|═|╝ -| +1&&@19|.+0&&@8>.@15 -| +1&&@19|.+0&&@24 -| +1&&@19|╔+0&&|═|╗|.@18|╔|═|╗ -| +1&&@19|║+0&&|@|║|.@18|║|@|║ -| +1&&@19|╚+0&&|═|╝|.@18|╚|═|╝ -| +1&&@19|.+0&&@24 +|╔+0#ffffff16#e000002|═|╗|.+0#0000000#ffffff0@38|╔+0#ffffff16#e000002|═|╗ +|║|@|║|.+0#0000000#ffffff0@38|║+0#ffffff16#e000002|@|║ +|╚|═|╝|.+0#0000000#ffffff0@38|╚+0#ffffff16#e000002|═|╝ +|.+0#0000000#ffffff0@8|a+0#00e0003&|t|c|u|r|s|o|r|.+0#0000000&@27 +@9>.@35 +@45 +@45 +@45 +@45 | @44 diff --git a/src/testdir/dumps/Test_tabpanel_drawing_with_popupwin_1.dump b/src/testdir/dumps/Test_tabpanel_drawing_with_popupwin_1.dump new file mode 100644 index 000000000..72cf385ac --- /dev/null +++ b/src/testdir/dumps/Test_tabpanel_drawing_with_popupwin_1.dump @@ -0,0 +1,10 @@ +|[+8#0000001#e0e0e08|N|o| |N|a|m|e|]| @10|╔+0#ffffff16#e000002|═|╗|.+0#0000000#ffffff0@18|╔+0#ffffff16#e000002|═|╗ +|[+2#0000000#ffffff0|S|c|r|a|t|c|h|]| @10|║+0#ffffff16#e000002|@|║|.+0#0000000#ffffff0@18|║+0#ffffff16#e000002|@|║ +| +1#0000000#ffffff0@19|╚+0#ffffff16#e000002|═|╝|.+0#0000000#ffffff0@18|╚+0#ffffff16#e000002|═|╝ +| +1#0000000#ffffff0@19|a+0#00e0003&|t|c|u|r|s|o|r|.+0#0000000&@16 +| +1&&@19|.+0&&@8>.@15 +| +1&&@19|.+0&&@24 +| +1&&@19|.+0&&@24 +| +1&&@19|.+0&&@24 +| +1&&@19|.+0&&@24 +| @44 diff --git a/src/testdir/dumps/Test_tabpanel_drawing_with_popupwin_2.dump b/src/testdir/dumps/Test_tabpanel_drawing_with_popupwin_2.dump new file mode 100644 index 000000000..bee1803c7 --- /dev/null +++ b/src/testdir/dumps/Test_tabpanel_drawing_with_popupwin_2.dump @@ -0,0 +1,10 @@ +|╔+0#ffffff16#e000002|═|╗|.+0#0000000#ffffff0@18|╔+0#ffffff16#e000002|═|╗|[+8#0000001#e0e0e08|N|o| |N|a|m|e|]| @10 +|║+0#ffffff16#e000002|@|║|.+0#0000000#ffffff0@18|║+0#ffffff16#e000002|@|║|[+2#0000000#ffffff0|S|c|r|a|t|c|h|]| @10 +|╚+0#ffffff16#e000002|═|╝|.+0#0000000#ffffff0@18|╚+0#ffffff16#e000002|═|╝| +1#0000000#ffffff0@19 +|.+0&&@8|a+0#00e0003&|t|c|u|r|s|o|r|.+0#0000000&@7| +1&&@19 +|.+0&&@8>.@15| +1&&@19 +|.+0&&@24| +1&&@19 +|.+0&&@24| +1&&@19 +|.+0&&@24| +1&&@19 +|.+0&&@24| +1&&@19 +| +0&&@44 diff --git a/src/testdir/dumps/Test_tabpanel_eval_tabpanel_statusline_tabline_0.dump b/src/testdir/dumps/Test_tabpanel_eval_tabpanel_statusline_tabline_0.dump index 9214434ec..dd930c451 100644 --- a/src/testdir/dumps/Test_tabpanel_eval_tabpanel_statusline_tabline_0.dump +++ b/src/testdir/dumps/Test_tabpanel_eval_tabpanel_statusline_tabline_0.dump @@ -1,10 +1,10 @@ -|$+8#0000001#e0e0e08| |[|a@2|]| |$|│+1#0000000#ffffff0|$| @13|[|c@2|]| @13|$ -|$+8#0000001#e0e0e08| |[|b@2|]| |$|│+1#0000000#ffffff0> +0&&@34 -|$+2&&| |[|c@2|]| |$|│+1&&|~+0#4040ff13&| @33 -| +1#0000000&@8|│|~+0#4040ff13&| @33 -| +1#0000000&@8|│|~+0#4040ff13&| @33 -| +1#0000000&@8|│|~+0#4040ff13&| @33 -| +1#0000000&@8|│|~+0#4040ff13&| @33 -| +1#0000000&@8|│|~+0#4040ff13&| @33 -| +1#0000000&@8|│|$+3&&| @13|[|c@2|]| @13|$ +|$+8#0000001#e0e0e08| |[|a@2|]| |$||+1#0000000#ffffff0|$| @13|[|c@2|]| @13|$ +|$+8#0000001#e0e0e08| |[|b@2|]| |$||+1#0000000#ffffff0> +0&&@34 +|$+2&&| |[|c@2|]| |$||+1&&|~+0#4040ff13&| @33 +| +1#0000000&@8|||~+0#4040ff13&| @33 +| +1#0000000&@8|||~+0#4040ff13&| @33 +| +1#0000000&@8|||~+0#4040ff13&| @33 +| +1#0000000&@8|||~+0#4040ff13&| @33 +| +1#0000000&@8|||~+0#4040ff13&| @33 +| +1#0000000&@8|||$+3&&| @13|[|c@2|]| @13|$ |"+0&&|c@2|"| |[|N|e|w|]| @33 diff --git a/src/testdir/dumps/Test_tabpanel_eval_tabpanel_statusline_tabline_1.dump b/src/testdir/dumps/Test_tabpanel_eval_tabpanel_statusline_tabline_1.dump index dae0d0b05..21bb63b84 100644 --- a/src/testdir/dumps/Test_tabpanel_eval_tabpanel_statusline_tabline_1.dump +++ b/src/testdir/dumps/Test_tabpanel_eval_tabpanel_statusline_tabline_1.dump @@ -1,10 +1,10 @@ -|$+1&#ffffff0| @13|[|c@2|]| @13|$|│|$+8#0000001#e0e0e08| |[|a@2|]| |$ -> +0#0000000#ffffff0@34|│+1&&|$+8#0000001#e0e0e08| |[|b@2|]| |$ -|~+0#4040ff13#ffffff0| @33|│+1#0000000&|$+2&&| |[|c@2|]| |$ -|~+0#4040ff13&| @33|│+1#0000000&| @8 -|~+0#4040ff13&| @33|│+1#0000000&| @8 -|~+0#4040ff13&| @33|│+1#0000000&| @8 -|~+0#4040ff13&| @33|│+1#0000000&| @8 -|~+0#4040ff13&| @33|│+1#0000000&| @8 -|$+3&&| @13|[|c@2|]| @13|$|│+1&&| @8 +|$+1&#ffffff0| @13|[|c@2|]| @13|$|||$+8#0000001#e0e0e08| |[|a@2|]| |$ +> +0#0000000#ffffff0@34||+1&&|$+8#0000001#e0e0e08| |[|b@2|]| |$ +|~+0#4040ff13#ffffff0| @33||+1#0000000&|$+2&&| |[|c@2|]| |$ +|~+0#4040ff13&| @33||+1#0000000&| @8 +|~+0#4040ff13&| @33||+1#0000000&| @8 +|~+0#4040ff13&| @33||+1#0000000&| @8 +|~+0#4040ff13&| @33||+1#0000000&| @8 +|~+0#4040ff13&| @33||+1#0000000&| @8 +|$+3&&| @13|[|c@2|]| @13|$||+1&&| @8 |:+0&&|s|e|t| |t|a|b|p|a|n|e|l|o|p|t|+|=|a|l|i|g|n|:|r|i|g|h|t| @15 diff --git a/src/testdir/dumps/Test_tabpanel_eval_tabpanel_with_linebreaks_0.dump b/src/testdir/dumps/Test_tabpanel_eval_tabpanel_with_linebreaks_0.dump index dd55218ad..b062f214d 100644 --- a/src/testdir/dumps/Test_tabpanel_eval_tabpanel_with_linebreaks_0.dump +++ b/src/testdir/dumps/Test_tabpanel_eval_tabpanel_with_linebreaks_0.dump @@ -7,4 +7,4 @@ |t+2#0000000&|o|p| @6|~+0#4040ff13&| @33 |$+2#0000000&| |[|c@2|]| @1|$|~+0#4040ff13&| @33 |b+2#0000000&|o|t@1|o|m| @3|~+0#4040ff13&| @33 -|"+0#0000000&|c@2|"| |[|N|e|w|]| @25|0|,|0|-|1| @2 +|"+0#0000000&|c@2|"| |[|N|e|w|]| @33 diff --git a/src/testdir/dumps/Test_tabpanel_eval_tabpanel_with_linebreaks_1.dump b/src/testdir/dumps/Test_tabpanel_eval_tabpanel_with_linebreaks_1.dump index 84bf683e2..4e5a3fb1d 100644 --- a/src/testdir/dumps/Test_tabpanel_eval_tabpanel_with_linebreaks_1.dump +++ b/src/testdir/dumps/Test_tabpanel_eval_tabpanel_with_linebreaks_1.dump @@ -7,4 +7,4 @@ |~+0#4040ff13#ffffff0| @33|t+2#0000000&|o|p| @6 |~+0#4040ff13&| @33|$+2#0000000&| |[|c@2|]| @1|$ |~+0#4040ff13&| @33|b+2#0000000&|o|t@1|o|m| @3 -|:+0&&|s|e|t| |t|a|b|p|a|n|e|l|o|p|t|+|=|a|l|i|g|n|:|r|i|g|0|,|0|-|1| @8|A|l@1| +|:+0&&|s|e|t| |t|a|b|p|a|n|e|l|o|p|t|+|=|a|l|i|g|n|:|r|i|g|h|t| @15 diff --git a/src/testdir/dumps/Test_tabpanel_many_tabpages_0.dump b/src/testdir/dumps/Test_tabpanel_many_tabpages_0.dump index e97438175..d5a0e4a00 100644 --- a/src/testdir/dumps/Test_tabpanel_many_tabpages_0.dump +++ b/src/testdir/dumps/Test_tabpanel_many_tabpages_0.dump @@ -7,4 +7,4 @@ |7+8#0000001#e0e0e08|:|t|a|b| @4|~+0#4040ff13#ffffff0| @33 |8+8#0000001#e0e0e08|:|t|a|b| @4|~+0#4040ff13#ffffff0| @33 |9+8#0000001#e0e0e08|:|t|a|b| @4|~+0#4040ff13#ffffff0| @33 -| +0#0000000&@36|0|,|0|-|1| @2 +| +0#0000000&@26|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_tabpanel_many_tabpages_1.dump b/src/testdir/dumps/Test_tabpanel_many_tabpages_1.dump index 3ac3dde14..d946a3190 100644 --- a/src/testdir/dumps/Test_tabpanel_many_tabpages_1.dump +++ b/src/testdir/dumps/Test_tabpanel_many_tabpages_1.dump @@ -7,4 +7,4 @@ |7+8#0000001#e0e0e08|:|t|a|b| @4|~+0#4040ff13#ffffff0| @33 |8+8#0000001#e0e0e08|:|t|a|b| @4|~+0#4040ff13#ffffff0| @33 |9+8#0000001#e0e0e08|:|t|a|b| @4|~+0#4040ff13#ffffff0| @33 -| +0#0000000&@36|0|,|0|-|1| @2 +| +0#0000000&@26|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_tabpanel_many_tabpages_2.dump b/src/testdir/dumps/Test_tabpanel_many_tabpages_2.dump index 7b980e6e8..74b2b7b4e 100644 --- a/src/testdir/dumps/Test_tabpanel_many_tabpages_2.dump +++ b/src/testdir/dumps/Test_tabpanel_many_tabpages_2.dump @@ -7,4 +7,4 @@ |7+8#0000001#e0e0e08|:|t|a|b| @4|~+0#4040ff13#ffffff0| @33 |8+8#0000001#e0e0e08|:|t|a|b| @4|~+0#4040ff13#ffffff0| @33 |9+8#0000001#e0e0e08|:|t|a|b| @4|~+0#4040ff13#ffffff0| @33 -| +0#0000000&@36|0|,|0|-|1| @2 +| +0#0000000&@26|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_tabpanel_many_tabpages_3.dump b/src/testdir/dumps/Test_tabpanel_many_tabpages_3.dump index fa3c09c41..037a53a32 100644 --- a/src/testdir/dumps/Test_tabpanel_many_tabpages_3.dump +++ b/src/testdir/dumps/Test_tabpanel_many_tabpages_3.dump @@ -7,4 +7,4 @@ |7+8#0000001#e0e0e08|:|t|a|b| @4|~+0#4040ff13#ffffff0| @33 |8+8#0000001#e0e0e08|:|t|a|b| @4|~+0#4040ff13#ffffff0| @33 |9+8#0000001#e0e0e08|:|t|a|b| @4|~+0#4040ff13#ffffff0| @33 -| +0#0000000&@36|0|,|0|-|1| @2 +| +0#0000000&@26|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_tabpanel_many_tabpages_4.dump b/src/testdir/dumps/Test_tabpanel_many_tabpages_4.dump index 07ff180c0..70905a6b9 100644 --- a/src/testdir/dumps/Test_tabpanel_many_tabpages_4.dump +++ b/src/testdir/dumps/Test_tabpanel_many_tabpages_4.dump @@ -7,4 +7,4 @@ |1+8#0000001#e0e0e08|6|:|t|a|b| @3|~+0#4040ff13#ffffff0| @33 |1+8#0000001#e0e0e08|7|:|t|a|b| @3|~+0#4040ff13#ffffff0| @33 |1+8#0000001#e0e0e08|8|:|t|a|b| @3|~+0#4040ff13#ffffff0| @33 -|:+0#0000000&|t|a|b|n|e|x|t| |-|3| @25|0|,|0|-|1| @2 +|:+0#0000000&|t|a|b|n|e|x|t| |-|3| @15|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_tabpanel_noeval_tabpanel_statusline_tabline_0.dump b/src/testdir/dumps/Test_tabpanel_noeval_tabpanel_statusline_tabline_0.dump index 9214434ec..dd930c451 100644 --- a/src/testdir/dumps/Test_tabpanel_noeval_tabpanel_statusline_tabline_0.dump +++ b/src/testdir/dumps/Test_tabpanel_noeval_tabpanel_statusline_tabline_0.dump @@ -1,10 +1,10 @@ -|$+8#0000001#e0e0e08| |[|a@2|]| |$|│+1#0000000#ffffff0|$| @13|[|c@2|]| @13|$ -|$+8#0000001#e0e0e08| |[|b@2|]| |$|│+1#0000000#ffffff0> +0&&@34 -|$+2&&| |[|c@2|]| |$|│+1&&|~+0#4040ff13&| @33 -| +1#0000000&@8|│|~+0#4040ff13&| @33 -| +1#0000000&@8|│|~+0#4040ff13&| @33 -| +1#0000000&@8|│|~+0#4040ff13&| @33 -| +1#0000000&@8|│|~+0#4040ff13&| @33 -| +1#0000000&@8|│|~+0#4040ff13&| @33 -| +1#0000000&@8|│|$+3&&| @13|[|c@2|]| @13|$ +|$+8#0000001#e0e0e08| |[|a@2|]| |$||+1#0000000#ffffff0|$| @13|[|c@2|]| @13|$ +|$+8#0000001#e0e0e08| |[|b@2|]| |$||+1#0000000#ffffff0> +0&&@34 +|$+2&&| |[|c@2|]| |$||+1&&|~+0#4040ff13&| @33 +| +1#0000000&@8|||~+0#4040ff13&| @33 +| +1#0000000&@8|||~+0#4040ff13&| @33 +| +1#0000000&@8|||~+0#4040ff13&| @33 +| +1#0000000&@8|||~+0#4040ff13&| @33 +| +1#0000000&@8|||~+0#4040ff13&| @33 +| +1#0000000&@8|||$+3&&| @13|[|c@2|]| @13|$ |"+0&&|c@2|"| |[|N|e|w|]| @33 diff --git a/src/testdir/dumps/Test_tabpanel_noeval_tabpanel_statusline_tabline_1.dump b/src/testdir/dumps/Test_tabpanel_noeval_tabpanel_statusline_tabline_1.dump index dae0d0b05..21bb63b84 100644 --- a/src/testdir/dumps/Test_tabpanel_noeval_tabpanel_statusline_tabline_1.dump +++ b/src/testdir/dumps/Test_tabpanel_noeval_tabpanel_statusline_tabline_1.dump @@ -1,10 +1,10 @@ -|$+1&#ffffff0| @13|[|c@2|]| @13|$|│|$+8#0000001#e0e0e08| |[|a@2|]| |$ -> +0#0000000#ffffff0@34|│+1&&|$+8#0000001#e0e0e08| |[|b@2|]| |$ -|~+0#4040ff13#ffffff0| @33|│+1#0000000&|$+2&&| |[|c@2|]| |$ -|~+0#4040ff13&| @33|│+1#0000000&| @8 -|~+0#4040ff13&| @33|│+1#0000000&| @8 -|~+0#4040ff13&| @33|│+1#0000000&| @8 -|~+0#4040ff13&| @33|│+1#0000000&| @8 -|~+0#4040ff13&| @33|│+1#0000000&| @8 -|$+3&&| @13|[|c@2|]| @13|$|│+1&&| @8 +|$+1&#ffffff0| @13|[|c@2|]| @13|$|||$+8#0000001#e0e0e08| |[|a@2|]| |$ +> +0#0000000#ffffff0@34||+1&&|$+8#0000001#e0e0e08| |[|b@2|]| |$ +|~+0#4040ff13#ffffff0| @33||+1#0000000&|$+2&&| |[|c@2|]| |$ +|~+0#4040ff13&| @33||+1#0000000&| @8 +|~+0#4040ff13&| @33||+1#0000000&| @8 +|~+0#4040ff13&| @33||+1#0000000&| @8 +|~+0#4040ff13&| @33||+1#0000000&| @8 +|~+0#4040ff13&| @33||+1#0000000&| @8 +|$+3&&| @13|[|c@2|]| @13|$||+1&&| @8 |:+0&&|s|e|t| |t|a|b|p|a|n|e|l|o|p|t|+|=|a|l|i|g|n|:|r|i|g|h|t| @15 diff --git a/src/testdir/dumps/Test_tabpanel_quitall_0.dump b/src/testdir/dumps/Test_tabpanel_quitall_0.dump new file mode 100644 index 000000000..7399ca1a7 --- /dev/null +++ b/src/testdir/dumps/Test_tabpanel_quitall_0.dump @@ -0,0 +1,10 @@ +|[+8#0000001#e0e0e08|N|o| |N|a|m|e|]| @11|[|N|o| |N|a|m|e|]| | +2#0000000#ffffff0|+| |N|o| |N|a|m|e|]| | +1&&|X+8#0000001#e0e0e08 +|++2#0000000#ffffff0| |[|N|o| |N|a|m|e|]| @8>a+0&&@2| @21 +| +1&&@19|~+0#4040ff13&| @23 +| +1#0000000&@19|~+0#4040ff13&| @23 +| +1#0000000&@19|~+0#4040ff13&| @23 +| +1#0000000&@19|~+0#4040ff13&| @23 +| +1#0000000&@19|~+0#4040ff13&| @23 +| +1#0000000&@19|~+0#4040ff13&| @23 +| +1#0000000&@19|<+3&&|o| |N|a|m|e|]| |[|+|]| |1|,|1| @5|A|l@1 +| +0&&@44 diff --git a/src/testdir/dumps/Test_tabpanel_ruler_0.dump b/src/testdir/dumps/Test_tabpanel_ruler_0.dump new file mode 100644 index 000000000..d1e2d7594 --- /dev/null +++ b/src/testdir/dumps/Test_tabpanel_ruler_0.dump @@ -0,0 +1,10 @@ +|[+8#0000001#e0e0e08|N|o| |N|a|m|e|]| @11|[|N|o| |N|a|m|e|]| | +2#0000000#ffffff0|[|N|o| |N|a|m|e|]| | +1&&@1|X+8#0000001#e0e0e08 +|[+2#0000000#ffffff0|N|o| |N|a|m|e|]| @10> +0&&@24 +| +1&&@19|~+0#4040ff13&| @23 +| +1#0000000&@19|~+0#4040ff13&| @23 +| +1#0000000&@19|~+0#4040ff13&| @23 +| +1#0000000&@19|~+0#4040ff13&| @23 +| +1#0000000&@19|~+0#4040ff13&| @23 +| +1#0000000&@19|~+0#4040ff13&| @23 +| +1#0000000&@19|~+0#4040ff13&| @23 +| +0#0000000&@26|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_tabpanel_stpl_eq_1_0.dump b/src/testdir/dumps/Test_tabpanel_stpl_eq_1_0.dump new file mode 100644 index 000000000..4c7589564 --- /dev/null +++ b/src/testdir/dumps/Test_tabpanel_stpl_eq_1_0.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@77 +|~+0#4040ff13&| @76 +|~| @76 +|~| @76 +|~| @76 +|~| @76 +|~| @76 +|~| @76 +|~| @76 +| +0#0000000&@77 diff --git a/src/testdir/dumps/Test_tabpanel_stpl_eq_1_1.dump b/src/testdir/dumps/Test_tabpanel_stpl_eq_1_1.dump new file mode 100644 index 000000000..ac616493b --- /dev/null +++ b/src/testdir/dumps/Test_tabpanel_stpl_eq_1_1.dump @@ -0,0 +1,10 @@ +|[+8#0000001#e0e0e08|N|o| |N|a|m|e|]| @11|[|N|o| |N|a|m|e|]| | +2#0000000#ffffff0|[|N|o| |N|a|m|e|]| | +1&&@34|X+8#0000001#e0e0e08 +|[+2#0000000#ffffff0|N|o| |N|a|m|e|]| @10> +0&&@57 +| +1&&@19|~+0#4040ff13&| @56 +| +1#0000000&@19|~+0#4040ff13&| @56 +| +1#0000000&@19|~+0#4040ff13&| @56 +| +1#0000000&@19|~+0#4040ff13&| @56 +| +1#0000000&@19|~+0#4040ff13&| @56 +| +1#0000000&@19|~+0#4040ff13&| @56 +| +1#0000000&@19|~+0#4040ff13&| @56 +| +0#0000000&@77 diff --git a/src/testdir/dumps/Test_tabpanel_stpl_eq_1_2.dump b/src/testdir/dumps/Test_tabpanel_stpl_eq_1_2.dump new file mode 100644 index 000000000..619903666 --- /dev/null +++ b/src/testdir/dumps/Test_tabpanel_stpl_eq_1_2.dump @@ -0,0 +1,10 @@ +|2+2#e000e06#ffffff0| +2#0000000&|[|N|o| |N|a|m|e|]| @9|2+2#e000e06&| +2#0000000&|[|N|o| |N|a|m|e|]| | +8#0000001#e0e0e08|[|N|o| |N|a|m|e|]| | +1#0000000#ffffff0@32|X+8#0000001#e0e0e08 +|[|N|o| |N|a|m|e|]| @10> +0#0000000#ffffff0@28||+1&&| +0&&@27 +| +1&&@19|~+0#4040ff13&| @27||+1#0000000&|~+0#4040ff13&| @26 +| +1#0000000&@19|~+0#4040ff13&| @27||+1#0000000&|~+0#4040ff13&| @26 +| +1#0000000&@19|~+0#4040ff13&| @27||+1#0000000&|~+0#4040ff13&| @26 +| +1#0000000&@19|~+0#4040ff13&| @27||+1#0000000&|~+0#4040ff13&| @26 +| +1#0000000&@19|~+0#4040ff13&| @27||+1#0000000&|~+0#4040ff13&| @26 +| +1#0000000&@19|~+0#4040ff13&| @27||+1#0000000&|~+0#4040ff13&| @26 +| +1#0000000&@19|[+3&&|N|o| |N|a|m|e|]| @20|[+1&&|N|o| |N|a|m|e|]| @18 +| +0&&@77 diff --git a/src/testdir/dumps/Test_tabpanel_stpl_eq_1_3.dump b/src/testdir/dumps/Test_tabpanel_stpl_eq_1_3.dump new file mode 100644 index 000000000..6311208a2 --- /dev/null +++ b/src/testdir/dumps/Test_tabpanel_stpl_eq_1_3.dump @@ -0,0 +1,10 @@ +| +8#0000001#e0e0e08|[|N|o| |N|a|m|e|]| | +2#0000000#ffffff0|[|N|o| |N|a|m|e|]| | +1&&@35|[+8#0000001#e0e0e08|N|o| |N|a|m|e|]| @10 +> +0#0000000#ffffff0@57|[+2&&|N|o| |N|a|m|e|]| @10 +|~+0#4040ff13&| @56| +1#0000000&@19 +|~+0#4040ff13&| @56| +1#0000000&@19 +|~+0#4040ff13&| @56| +1#0000000&@19 +|~+0#4040ff13&| @56| +1#0000000&@19 +|~+0#4040ff13&| @56| +1#0000000&@19 +|~+0#4040ff13&| @56| +1#0000000&@19 +|~+0#4040ff13&| @56| +1#0000000&@19 +| +0&&@77 diff --git a/src/testdir/dumps/Test_tabpanel_stpl_eq_1_4.dump b/src/testdir/dumps/Test_tabpanel_stpl_eq_1_4.dump new file mode 100644 index 000000000..3c882693c --- /dev/null +++ b/src/testdir/dumps/Test_tabpanel_stpl_eq_1_4.dump @@ -0,0 +1,10 @@ +| +2&#ffffff0|2+2#e000e06&| +2#0000000&|[|N|o| |N|a|m|e|]| | +8#0000001#e0e0e08|[|N|o| |N|a|m|e|]| | +1#0000000#ffffff0@33|2+2#e000e06&| +2#0000000&|[|N|o| |N|a|m|e|]| @8 +> +0&&@28||+1&&| +0&&@27|[+8#0000001#e0e0e08|N|o| |N|a|m|e|]| @10 +|~+0#4040ff13#ffffff0| @27||+1#0000000&|~+0#4040ff13&| @26| +1#0000000&@19 +|~+0#4040ff13&| @27||+1#0000000&|~+0#4040ff13&| @26| +1#0000000&@19 +|~+0#4040ff13&| @27||+1#0000000&|~+0#4040ff13&| @26| +1#0000000&@19 +|~+0#4040ff13&| @27||+1#0000000&|~+0#4040ff13&| @26| +1#0000000&@19 +|~+0#4040ff13&| @27||+1#0000000&|~+0#4040ff13&| @26| +1#0000000&@19 +|~+0#4040ff13&| @27||+1#0000000&|~+0#4040ff13&| @26| +1#0000000&@19 +|[+3&&|N|o| |N|a|m|e|]| @20|[+1&&|N|o| |N|a|m|e|]| @38 +| +0&&@77 diff --git a/src/testdir/dumps/Test_tabpanel_tabline_and_tabpanel_0.dump b/src/testdir/dumps/Test_tabpanel_tabline_and_tabpanel_0.dump index fdca7f100..14400e598 100644 --- a/src/testdir/dumps/Test_tabpanel_tabline_and_tabpanel_0.dump +++ b/src/testdir/dumps/Test_tabpanel_tabline_and_tabpanel_0.dump @@ -7,4 +7,4 @@ | +1#0000000&@8|│|~+0#4040ff13&| @33 | +1#0000000&@8|│|~+0#4040ff13&| @33 | +1#0000000&@8|│|~+0#4040ff13&| @33 -|"+0#0000000&|c@2|.|t|x|t|"| |[|N|e|w|]| @21|0|,|0|-|1| @2 +|"+0#0000000&|c@2|.|t|x|t|"| |[|N|e|w|]| @11|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_tabpanel_vert_is_multibytes_left_0.dump b/src/testdir/dumps/Test_tabpanel_vert_is_multibytes_left_0.dump index a50355f1e..284e23ab3 100644 --- a/src/testdir/dumps/Test_tabpanel_vert_is_multibytes_left_0.dump +++ b/src/testdir/dumps/Test_tabpanel_vert_is_multibytes_left_0.dump @@ -7,4 +7,4 @@ | +1#0000000&@8|│|~+0#4040ff13&| @33 | +1#0000000&@8|│|~+0#4040ff13&| @33 | +1#0000000&@8|│|~+0#4040ff13&| @33 -| +0#0000000&@36|0|,|0|-|1| @2 +| +0#0000000&@26|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_tabpanel_vert_is_multibytes_left_1.dump b/src/testdir/dumps/Test_tabpanel_vert_is_multibytes_left_1.dump index e347c7e52..d3fec7301 100644 --- a/src/testdir/dumps/Test_tabpanel_vert_is_multibytes_left_1.dump +++ b/src/testdir/dumps/Test_tabpanel_vert_is_multibytes_left_1.dump @@ -7,4 +7,4 @@ |│+1#0000000&|~+0#4040ff13&| @42 |│+1#0000000&|~+0#4040ff13&| @42 |│+1#0000000&|~+0#4040ff13&| @42 -|:+0#0000000&|s|e|t| |t|a|b|p|a|n|e|l|o|p|t|=|c|o|l|u|m|n|s|:|1|,|v|0|,|0|-|1| @8|A|l@1 +|:+0#0000000&|s|e|t| |t|a|b|p|a|n|e|l|o|p|t|=|c|o|l|u|m|n|s|:|1|,|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_tabpanel_vert_is_multibytes_left_2.dump b/src/testdir/dumps/Test_tabpanel_vert_is_multibytes_left_2.dump index d1c5b9241..fc0b17abb 100644 --- a/src/testdir/dumps/Test_tabpanel_vert_is_multibytes_left_2.dump +++ b/src/testdir/dumps/Test_tabpanel_vert_is_multibytes_left_2.dump @@ -7,4 +7,4 @@ | +1#0000000&@8|│|~+0#4040ff13&| @33 | +1#0000000&@8|│|~+0#4040ff13&| @33 | +1#0000000&@8|│|~+0#4040ff13&| @33 -|:+0#0000000&|s|e|t| |t|a|b|p|a|n|e|l|o|p|t|=|c|o|l|u|m|n|s|:|1|0|,|v|e|r|t| @4|0|,|0|-|1| @2 +|:+0#0000000&|s|e|t| |t|a|b|p|a|n|e|l|o|p|t|=|c|o|l|u|m|n|s|:|1|0@1|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_tabpanel_vert_is_multibytes_left_3.dump b/src/testdir/dumps/Test_tabpanel_vert_is_multibytes_left_3.dump index fc84c0bb5..24db3dd3c 100644 --- a/src/testdir/dumps/Test_tabpanel_vert_is_multibytes_left_3.dump +++ b/src/testdir/dumps/Test_tabpanel_vert_is_multibytes_left_3.dump @@ -7,4 +7,4 @@ | +1#0000000&|│|~+0#4040ff13&| @41 | +1#0000000&|│|~+0#4040ff13&| @41 | +1#0000000&|│|~+0#4040ff13&| @41 -|:+0#0000000&|s|e|t| |t|a|b|p|a|n|e|l|o|p|t|=|c|o|l|u|m|n|s|:|2|,|v|e|0|,|0|-|1| @8|A|l +|:+0#0000000&|s|e|t| |t|a|b|p|a|n|e|l|o|p|t|=|c|o|l|u|m|n|s|:|2|,|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_tabpanel_visual_0.dump b/src/testdir/dumps/Test_tabpanel_visual_0.dump index af7ba65c9..14d50afd9 100644 --- a/src/testdir/dumps/Test_tabpanel_visual_0.dump +++ b/src/testdir/dumps/Test_tabpanel_visual_0.dump @@ -7,4 +7,4 @@ | +1#0000000&@9|~+0#4040ff13&| @33 | +1#0000000&@9|~+0#4040ff13&| @33 | +1#0000000&@9|~+0#4040ff13&| @33 -|-+2#0000000&@1| |V|I|S|U|A|L| |-@1| +0&&@4|1@1| @17|1|,|1@1| @3 +|-+2#0000000&@1| |V|I|S|U|A|L| |-@1| +0&&@4|1@1| @7|1|,|1@1| @9|A|l@1| diff --git a/src/testdir/dumps/Test_tabpanel_visual_1.dump b/src/testdir/dumps/Test_tabpanel_visual_1.dump index 0cdc5f2a6..5d4a66080 100644 --- a/src/testdir/dumps/Test_tabpanel_visual_1.dump +++ b/src/testdir/dumps/Test_tabpanel_visual_1.dump @@ -7,4 +7,4 @@ | +1#0000000&@9|~+0#4040ff13&| @33 | +1#0000000&@9|~+0#4040ff13&| @33 | +1#0000000&@9|~+0#4040ff13&| @33 -|-+2#0000000&@1| |V|I|S|U|A|L| |-@1| +0&&@4|9| @18|2|,|1|4| @3 +|-+2#0000000&@1| |V|I|S|U|A|L| |-@1| +0&&@4|9| @8|2|,|1|4| @9|A|l@1| diff --git a/src/testdir/dumps/Test_tabpanel_visual_2.dump b/src/testdir/dumps/Test_tabpanel_visual_2.dump index 9a307c18e..c80068427 100644 --- a/src/testdir/dumps/Test_tabpanel_visual_2.dump +++ b/src/testdir/dumps/Test_tabpanel_visual_2.dump @@ -7,4 +7,4 @@ | +1#0000000&@9|~+0#4040ff13&| @33 | +1#0000000&@9|~+0#4040ff13&| @33 | +1#0000000&@9|~+0#4040ff13&| @33 -|b+0#0000000&@2|2| |c@2|2| @27|2|,|6| @4 +|b+0#0000000&@2|2| |c@2|2| @17|2|,|6| @10|A|l@1| diff --git a/src/testdir/dumps/Test_tabpanel_with_vsplit_0.dump b/src/testdir/dumps/Test_tabpanel_with_vsplit_0.dump new file mode 100644 index 000000000..836e07b2a --- /dev/null +++ b/src/testdir/dumps/Test_tabpanel_with_vsplit_0.dump @@ -0,0 +1,10 @@ +|[+8#0000001#e0e0e08|N|o| |N|a|m|e|]| @10> +0#0000000#ffffff0@57 +|[+2&&|N|o| |N|a|m|e|]| @10|~+0#4040ff13&| @56 +| +1#0000000&@19|~+0#4040ff13&| @56 +| +1#0000000&@19|~+0#4040ff13&| @56 +| +1#0000000&@19|~+0#4040ff13&| @56 +| +1#0000000&@19|~+0#4040ff13&| @56 +| +1#0000000&@19|~+0#4040ff13&| @56 +| +1#0000000&@19|~+0#4040ff13&| @56 +| +1#0000000&@19|~+0#4040ff13&| @56 +| +0#0000000&@59|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_tabpanel_with_vsplit_1.dump b/src/testdir/dumps/Test_tabpanel_with_vsplit_1.dump new file mode 100644 index 000000000..81653d784 --- /dev/null +++ b/src/testdir/dumps/Test_tabpanel_with_vsplit_1.dump @@ -0,0 +1,10 @@ +|[+8#0000001#e0e0e08|N|o| |N|a|m|e|]| @10> +0#0000000#ffffff0@28||+1&&| +0&&@27 +|2+2#e000e06&| +2#0000000&|[|N|o| |N|a|m|e|]| @8|~+0#4040ff13&| @27||+1#0000000&|~+0#4040ff13&| @26 +| +1#0000000&@19|~+0#4040ff13&| @27||+1#0000000&|~+0#4040ff13&| @26 +| +1#0000000&@19|~+0#4040ff13&| @27||+1#0000000&|~+0#4040ff13&| @26 +| +1#0000000&@19|~+0#4040ff13&| @27||+1#0000000&|~+0#4040ff13&| @26 +| +1#0000000&@19|~+0#4040ff13&| @27||+1#0000000&|~+0#4040ff13&| @26 +| +1#0000000&@19|~+0#4040ff13&| @27||+1#0000000&|~+0#4040ff13&| @26 +| +1#0000000&@19|~+0#4040ff13&| @27||+1#0000000&|~+0#4040ff13&| @26 +| +1#0000000&@19|[+3&&|N|o| |N|a|m|e|]| @5|0|,|0|-|1| @5|A|l@1| |[+1&&|N|o| |N|a|m|e|]| @4|0|,|0|-|1| @5|A|l@1 +|:+0&&|v|s|p|l|i|t| @70 diff --git a/src/testdir/dumps/Test_tabpanel_with_vsplit_2.dump b/src/testdir/dumps/Test_tabpanel_with_vsplit_2.dump new file mode 100644 index 000000000..82d335644 --- /dev/null +++ b/src/testdir/dumps/Test_tabpanel_with_vsplit_2.dump @@ -0,0 +1,10 @@ +|[+8#0000001#e0e0e08|N|o| |N|a|m|e|]| @10> +0#0000000#ffffff0@19||+1&&| +0&&@17||+1&&| +0&&@17 +|3+2#e000e06&| +2#0000000&|[|N|o| |N|a|m|e|]| @8|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @16||+1#0000000&|~+0#4040ff13&| @16 +| +1#0000000&@19|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @16||+1#0000000&|~+0#4040ff13&| @16 +| +1#0000000&@19|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @16||+1#0000000&|~+0#4040ff13&| @16 +| +1#0000000&@19|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @16||+1#0000000&|~+0#4040ff13&| @16 +| +1#0000000&@19|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @16||+1#0000000&|~+0#4040ff13&| @16 +| +1#0000000&@19|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @16||+1#0000000&|~+0#4040ff13&| @16 +| +1#0000000&@19|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @16||+1#0000000&|~+0#4040ff13&| @16 +| +1#0000000&@19|<+3&&|N|o| |N|a|m|e|]| |0|,|0|-|1| @1|A|l@1| |<+1&&|o| |N|a|m|e|]| |0|,|0|-|1| |A|l@1| |<|o| |N|a|m|e|]| |0|,|0|-|1| |A|l@1 +|:+0&&|v|s|p|l|i|t| @70 diff --git a/src/testdir/dumps/Test_tabpanel_with_vsplit_3.dump b/src/testdir/dumps/Test_tabpanel_with_vsplit_3.dump new file mode 100644 index 000000000..6e5f8e447 --- /dev/null +++ b/src/testdir/dumps/Test_tabpanel_with_vsplit_3.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@57||+1&&|[+8#0000001#e0e0e08|N|o| |N|a|m|e|]| @9 +|~+0#4040ff13#ffffff0| @56||+1#0000000&|[+2&&|N|o| |N|a|m|e|]| @9 +|~+0#4040ff13&| @56||+1#0000000&| @18 +|~+0#4040ff13&| @56||+1#0000000&| @18 +|~+0#4040ff13&| @56||+1#0000000&| @18 +|~+0#4040ff13&| @56||+1#0000000&| @18 +|~+0#4040ff13&| @56||+1#0000000&| @18 +|~+0#4040ff13&| @56||+1#0000000&| @18 +|~+0#4040ff13&| @56||+1#0000000&| @18 +|:+0&&|s|e|t| |t|a|b|p|a|n|e|l|o|p|t|=|a|l|i|g|n|:|r|i|g|h|t|,|v|e|r|t| @26|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_tabpanel_with_vsplit_4.dump b/src/testdir/dumps/Test_tabpanel_with_vsplit_4.dump new file mode 100644 index 000000000..797894361 --- /dev/null +++ b/src/testdir/dumps/Test_tabpanel_with_vsplit_4.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@28||+1&&| +0&&@27||+1&&|[+8#0000001#e0e0e08|N|o| |N|a|m|e|]| @9 +|~+0#4040ff13#ffffff0| @27||+1#0000000&|~+0#4040ff13&| @26||+1#0000000&|2+2#e000e06&| +2#0000000&|[|N|o| |N|a|m|e|]| @7 +|~+0#4040ff13&| @27||+1#0000000&|~+0#4040ff13&| @26||+1#0000000&| @18 +|~+0#4040ff13&| @27||+1#0000000&|~+0#4040ff13&| @26||+1#0000000&| @18 +|~+0#4040ff13&| @27||+1#0000000&|~+0#4040ff13&| @26||+1#0000000&| @18 +|~+0#4040ff13&| @27||+1#0000000&|~+0#4040ff13&| @26||+1#0000000&| @18 +|~+0#4040ff13&| @27||+1#0000000&|~+0#4040ff13&| @26||+1#0000000&| @18 +|~+0#4040ff13&| @27||+1#0000000&|~+0#4040ff13&| @26||+1#0000000&| @18 +|[+3&&|N|o| |N|a|m|e|]| @5|0|,|0|-|1| @5|A|l@1| |[+1&&|N|o| |N|a|m|e|]| @4|0|,|0|-|1| @5|A|l@1||| @18 +|:+0&&|v|s|p|l|i|t| @70 diff --git a/src/testdir/dumps/Test_tabpanel_with_vsplit_5.dump b/src/testdir/dumps/Test_tabpanel_with_vsplit_5.dump new file mode 100644 index 000000000..5744d130e --- /dev/null +++ b/src/testdir/dumps/Test_tabpanel_with_vsplit_5.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@19||+1&&| +0&&@17||+1&&| +0&&@17||+1&&|[+8#0000001#e0e0e08|N|o| |N|a|m|e|]| @9 +|~+0#4040ff13#ffffff0| @18||+1#0000000&|~+0#4040ff13&| @16||+1#0000000&|~+0#4040ff13&| @16||+1#0000000&|3+2#e000e06&| +2#0000000&|[|N|o| |N|a|m|e|]| @7 +|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @16||+1#0000000&|~+0#4040ff13&| @16||+1#0000000&| @18 +|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @16||+1#0000000&|~+0#4040ff13&| @16||+1#0000000&| @18 +|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @16||+1#0000000&|~+0#4040ff13&| @16||+1#0000000&| @18 +|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @16||+1#0000000&|~+0#4040ff13&| @16||+1#0000000&| @18 +|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @16||+1#0000000&|~+0#4040ff13&| @16||+1#0000000&| @18 +|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @16||+1#0000000&|~+0#4040ff13&| @16||+1#0000000&| @18 +|<+3&&|N|o| |N|a|m|e|]| |0|,|0|-|1| @1|A|l@1| |<+1&&|o| |N|a|m|e|]| |0|,|0|-|1| |A|l@1| |<|o| |N|a|m|e|]| |0|,|0|-|1| |A|l@1||| @18 +|:+0&&|v|s|p|l|i|t| @70 diff --git a/src/testdir/test_tabpanel.vim b/src/testdir/test_tabpanel.vim index e0a6a8c61..c3288f8c1 100644 --- a/src/testdir/test_tabpanel.vim +++ b/src/testdir/test_tabpanel.vim @@ -10,6 +10,64 @@ function s:reset() set showtabpanel& endfunc +function Test_tabpanel_showtabpanel_eq_1() + CheckScreendump + + let lines =<< trim END + set showtabpanel=1 + set noruler + END + call writefile(lines, 'XTest_tabpanel_stpl_eq_1', 'D') + + let buf = RunVimInTerminal('-S XTest_tabpanel_stpl_eq_1', {'rows': 10, 'cols': 78}) + call term_sendkeys(buf, "\<C-L>") + call VerifyScreenDump(buf, 'Test_tabpanel_stpl_eq_1_0', {}) + call term_sendkeys(buf, ":tabnew\<CR>\<C-L>") + call VerifyScreenDump(buf, 'Test_tabpanel_stpl_eq_1_1', {}) + call term_sendkeys(buf, ":tabfirst\<CR>:vsplit\<CR>\<C-L>") + call VerifyScreenDump(buf, 'Test_tabpanel_stpl_eq_1_2', {}) + call term_sendkeys(buf, ":tabclose\<CR>\<C-L>") + call VerifyScreenDump(buf, 'Test_tabpanel_stpl_eq_1_0', {}) + + call term_sendkeys(buf, ":set tabpanelopt=align:right\<CR>\<C-L>") + call VerifyScreenDump(buf, 'Test_tabpanel_stpl_eq_1_0', {}) + call term_sendkeys(buf, ":tabnew\<CR>\<C-L>") + call VerifyScreenDump(buf, 'Test_tabpanel_stpl_eq_1_3', {}) + call term_sendkeys(buf, ":tabfirst\<CR>:vsplit\<CR>\<C-L>") + call VerifyScreenDump(buf, 'Test_tabpanel_stpl_eq_1_4', {}) + call term_sendkeys(buf, ":tabclose\<CR>\<C-L>") + call VerifyScreenDump(buf, 'Test_tabpanel_stpl_eq_1_0', {}) + call StopVimInTerminal(buf) +endfunc + +function Test_tabpanel_with_vsplit() + CheckScreendump + + let lines =<< trim END + set showtabpanel=2 + set tabpanelopt=columns:20 + set showtabline=0 + tabnew + END + call writefile(lines, 'XTest_tabpanel_with_vsplit', 'D') + + let buf = RunVimInTerminal('-S XTest_tabpanel_with_vsplit', {'rows': 10, 'cols': 78}) + call VerifyScreenDump(buf, 'Test_tabpanel_with_vsplit_0', {}) + call term_sendkeys(buf, ":vsplit\<CR>") + call VerifyScreenDump(buf, 'Test_tabpanel_with_vsplit_1', {}) + call term_sendkeys(buf, ":vsplit\<CR>") + call VerifyScreenDump(buf, 'Test_tabpanel_with_vsplit_2', {}) + + call term_sendkeys(buf, ":only\<CR>") + call term_sendkeys(buf, ":set tabpanelopt=align:right,vert\<CR>") + call VerifyScreenDump(buf, 'Test_tabpanel_with_vsplit_3', {}) + call term_sendkeys(buf, ":vsplit\<CR>") + call VerifyScreenDump(buf, 'Test_tabpanel_with_vsplit_4', {}) + call term_sendkeys(buf, ":vsplit\<CR>") + call VerifyScreenDump(buf, 'Test_tabpanel_with_vsplit_5', {}) + call StopVimInTerminal(buf) +endfunc + function Test_tabpanel_mouse() let save_showtabline = &showtabline let save_mouse = &mouse @@ -37,7 +95,8 @@ function Test_tabpanel_mouse() call feedkeys("\<LeftMouse>", 'xt') call test_setmouse(2, 3) let pos = getmousepos() - call assert_equal(2, pos['winrow']) + call assert_equal(0, pos['winid']) + call assert_equal(0, pos['winrow']) call assert_equal(0, pos['wincol']) call assert_equal(2, pos['screenrow']) call assert_equal(3, pos['screencol']) @@ -45,6 +104,7 @@ function Test_tabpanel_mouse() call test_setmouse(1, 11) call feedkeys("\<LeftMouse>", 'xt') let pos = getmousepos() + call assert_notequal(0, pos['winid']) call assert_equal(1, pos['winrow']) call assert_equal(1, pos['wincol']) call assert_equal(1, pos['screenrow']) @@ -56,6 +116,7 @@ function Test_tabpanel_mouse() call test_setmouse(10, 11) call feedkeys("\<LeftMouse>", 'xt') let pos = getmousepos() + call assert_notequal(0, pos['winid']) call assert_equal(10, pos['winrow']) call assert_equal(1, pos['wincol']) call assert_equal(10, pos['screenrow']) @@ -113,37 +174,39 @@ endfunc function Test_tabpanel_drawing_with_popupwin() CheckScreendump + let tcols = 45 let lines =<< trim END - set showtabpanel=2 + set showtabpanel=0 set tabpanelopt=columns:20 set showtabline=0 + set nowrap + set noruler tabnew setlocal buftype=nofile - call setbufline(bufnr(), 1, repeat([repeat('.', &columns - 20)], &lines)) - highlight TestingForTabPanelPopupwin guibg=#7777ff guifg=#000000 - for line in [1, &lines] - for col in [1, &columns - 20 - 2] - call popup_create([ - \ '@', - \ ], { - \ 'line': line, - \ 'col': col, - \ 'border': [], - \ 'highlight': 'TestingForTabPanelPopupwin', - \ }) - endfor + call setbufline(bufnr(), 1, repeat([repeat('.', &columns)], &lines - &ch)) + for col in [1, &columns - 2] + call popup_create(['@'], + \ { + \ 'line': 1, + \ 'col': col, + \ 'border': [], + \ 'highlight': 'ErrorMsg', + \ }) endfor - call cursor(4, 10) + call cursor(5, 10) call popup_atcursor('atcursor', { - \ 'highlight': 'TestingForTabPanelPopupwin', + \ 'highlight': 'Question', \ }) END call writefile(lines, 'XTest_tabpanel_with_popupwin', 'D') - - let buf = RunVimInTerminal('-S XTest_tabpanel_with_popupwin', {'rows': 10, 'cols': 45}) - + let buf = RunVimInTerminal('-S XTest_tabpanel_with_popupwin', {'rows': 10, 'cols': tcols}) + call VerifyScreenDump(buf, 'Test_tabpanel_drawing_with_popupwin_0', {}) + call term_sendkeys(buf, ":set showtabpanel=2\<CR>\<C-L>") + call VerifyScreenDump(buf, 'Test_tabpanel_drawing_with_popupwin_1', {}) + call term_sendkeys(buf, ":set tabpanelopt+=align:right\<CR>\<C-L>") + call VerifyScreenDump(buf, 'Test_tabpanel_drawing_with_popupwin_2', {}) + call term_sendkeys(buf, ":set showtabpanel=0\<CR>\<C-L>") call VerifyScreenDump(buf, 'Test_tabpanel_drawing_with_popupwin_0', {}) - call StopVimInTerminal(buf) endfunc @@ -186,12 +249,20 @@ function Test_tabpanel_drawing_pum() let buf = RunVimInTerminal('-S XTest_tabpanel_pum', {'rows': 10, 'cols': 45}) - call term_sendkeys(buf, "i\<C-x>\<C-v>") + call term_sendkeys(buf, "i\<CR>aa\<CR>aaaa\<CR>aaac\<CR>aaab\<CR>\<Esc>") + call term_sendkeys(buf, "ggi\<C-X>\<C-N>") call VerifyScreenDump(buf, 'Test_tabpanel_drawing_pum_0', {}) - call term_sendkeys(buf, "\<CR> ab\<C-x>\<C-v>") + call term_sendkeys(buf, "\<Esc>Go a\<C-X>\<C-P>") call VerifyScreenDump(buf, 'Test_tabpanel_drawing_pum_1', {}) + call term_sendkeys(buf, "\<C-U>\<CR>\<Esc>") + call term_sendkeys(buf, ":set tabpanelopt+=align:right\<CR>") + let num = 45 - 20 - 2 " term-win-width - tabpanel-columns - 2 + call term_sendkeys(buf, num .. "a \<Esc>") + call term_sendkeys(buf, "a\<C-X>\<C-N>") + call VerifyScreenDump(buf, 'Test_tabpanel_drawing_pum_2', {}) + call StopVimInTerminal(buf) endfunc @@ -338,59 +409,59 @@ function Test_tabpanel_dont_overflow_into_tabpanel() call StopVimInTerminal(buf) endfunc -function Test_tabpanel_dont_vert_is_multibytes_left() - CheckScreendump - - let lines =<< trim END - set showtabpanel=2 - set tabpanelopt=columns:10,vert - set fillchars=tpl_vert:│ - set showtabline=2 - tabnew - END - call writefile(lines, 'XTest_tabpanel_vert_is_multibyte_lefts', 'D') - - let buf = RunVimInTerminal('-S XTest_tabpanel_vert_is_multibyte_lefts', {'rows': 10, 'cols': 45}) - call VerifyScreenDump(buf, 'Test_tabpanel_vert_is_multibytes_left_0', {}) - - call term_sendkeys(buf, ":set tabpanelopt=columns:1,vert\<CR>") - call VerifyScreenDump(buf, 'Test_tabpanel_vert_is_multibytes_left_1', {}) - - call term_sendkeys(buf, ":set tabpanelopt=columns:10,vert\<CR>") - call VerifyScreenDump(buf, 'Test_tabpanel_vert_is_multibytes_left_2', {}) - - call term_sendkeys(buf, ":set tabpanelopt=columns:2,vert\<CR>") - call VerifyScreenDump(buf, 'Test_tabpanel_vert_is_multibytes_left_3', {}) - - call StopVimInTerminal(buf) -endfunc - -function Test_tabpanel_dont_vert_is_multibytes_right() - CheckScreendump - - let lines =<< trim END - set showtabpanel=2 - set tabpanelopt=align:right,columns:10,vert - set fillchars=tpl_vert:│ - set showtabline=2 - tabnew - END - call writefile(lines, 'XTest_tabpanel_vert_is_multibytes_right', 'D') - - let buf = RunVimInTerminal('-S XTest_tabpanel_vert_is_multibytes_right', {'rows': 10, 'cols': 45}) - call VerifyScreenDump(buf, 'Test_tabpanel_vert_is_multibytes_right_0', {}) - - call term_sendkeys(buf, ":set tabpanelopt=align:right,columns:1,vert\<CR>") - call VerifyScreenDump(buf, 'Test_tabpanel_vert_is_multibytes_right_1', {}) - - call term_sendkeys(buf, ":set tabpanelopt=align:right,columns:10,vert\<CR>") - call VerifyScreenDump(buf, 'Test_tabpanel_vert_is_multibytes_right_2', {}) - - call term_sendkeys(buf, ":set tabpanelopt=align:right,columns:2,vert\<CR>") - call VerifyScreenDump(buf, 'Test_tabpanel_vert_is_multibytes_right_3', {}) - - call StopVimInTerminal(buf) -endfunc +"""function Test_tabpanel_dont_vert_is_multibytes_left() +""" CheckScreendump +""" +""" let lines =<< trim END +""" set showtabpanel=2 +""" set tabpanelopt=columns:10,vert +""" set fillchars=tpl_vert:│ +""" set showtabline=2 +""" tabnew +""" END +""" call writefile(lines, 'XTest_tabpanel_vert_is_multibyte_lefts', 'D') +""" +""" let buf = RunVimInTerminal('-S XTest_tabpanel_vert_is_multibyte_lefts', {'rows': 10, 'cols': 45}) +""" call VerifyScreenDump(buf, 'Test_tabpanel_vert_is_multibytes_left_0', {}) +""" +""" call term_sendkeys(buf, ":set tabpanelopt=columns:1,vert\<CR>") +""" call VerifyScreenDump(buf, 'Test_tabpanel_vert_is_multibytes_left_1', {}) +""" +""" call term_sendkeys(buf, ":set tabpanelopt=columns:10,vert\<CR>") +""" call VerifyScreenDump(buf, 'Test_tabpanel_vert_is_multibytes_left_2', {}) +""" +""" call term_sendkeys(buf, ":set tabpanelopt=columns:2,vert\<CR>") +""" call VerifyScreenDump(buf, 'Test_tabpanel_vert_is_multibytes_left_3', {}) +""" +""" call StopVimInTerminal(buf) +"""endfunc + +"""function Test_tabpanel_dont_vert_is_multibytes_right() +""" CheckScreendump +""" +""" let lines =<< trim END +""" set showtabpanel=2 +""" set tabpanelopt=align:right,columns:10,vert +""" set fillchars=tpl_vert:│ +""" set showtabline=2 +""" tabnew +""" END +""" call writefile(lines, 'XTest_tabpanel_vert_is_multibytes_right', 'D') +""" +""" let buf = RunVimInTerminal('-S XTest_tabpanel_vert_is_multibytes_right', {'rows': 10, 'cols': 45}) +""" call VerifyScreenDump(buf, 'Test_tabpanel_vert_is_multibytes_right_0', {}) +""" +""" call term_sendkeys(buf, ":set tabpanelopt=align:right,columns:1,vert\<CR>") +""" call VerifyScreenDump(buf, 'Test_tabpanel_vert_is_multibytes_right_1', {}) +""" +""" call term_sendkeys(buf, ":set tabpanelopt=align:right,columns:10,vert\<CR>") +""" call VerifyScreenDump(buf, 'Test_tabpanel_vert_is_multibytes_right_2', {}) +""" +""" call term_sendkeys(buf, ":set tabpanelopt=align:right,columns:2,vert\<CR>") +""" call VerifyScreenDump(buf, 'Test_tabpanel_vert_is_multibytes_right_3', {}) +""" +""" call StopVimInTerminal(buf) +"""endfunc function Test_tabpanel_eval_tabpanel_statusline_tabline() CheckScreendump @@ -406,7 +477,6 @@ function Test_tabpanel_eval_tabpanel_statusline_tabline() set tabline=%!Expr() set tabpanel=%!Expr() set tabpanelopt=columns:10,vert - set fillchars=tpl_vert:│ e aaa tabnew e bbb @@ -434,7 +504,6 @@ function Test_tabpanel_noeval_tabpanel_statusline_tabline() set tabline=$%=[%f]%=$ set tabpanel=$%=[%f]%=$ set tabpanelopt=columns:10,vert - set fillchars=tpl_vert:│ e aaa tabnew e bbb @@ -461,6 +530,7 @@ function Test_tabpanel_eval_tabpanel_with_linebreaks() set showtabpanel=2 set tabpanel=%!Expr() set tabpanelopt=columns:10 + set noruler e aaa tabnew e bbb @@ -521,6 +591,42 @@ function Test_tabpanel_equalalways() call StopVimInTerminal(buf) endfunc +function Test_tabpanel_quitall() + CheckScreendump + + let lines =<< trim END + tabnew + set showtabpanel=1 + set laststatus=2 + call setline(1, 'aaa') + normal gt + silent! quitall + END + call writefile(lines, 'XTest_tabpanel_quitall', 'D') + + let buf = RunVimInTerminal('-S XTest_tabpanel_quitall', {'rows': 10, 'cols': 45}) + call VerifyScreenDump(buf, 'Test_tabpanel_quitall_0', {}) + + call StopVimInTerminal(buf) +endfunc + +function Test_tabpanel_ruler() + CheckScreendump + + let lines =<< trim END + tabnew + set statusline& laststatus=0 + set rulerformat& ruler + set showtabpanel=1 + END + call writefile(lines, 'XTest_tabpanel_ruler', 'D') + + let buf = RunVimInTerminal('-S XTest_tabpanel_ruler', {'rows': 10, 'cols': 45}) + call VerifyScreenDump(buf, 'Test_tabpanel_ruler_0', {}) + + call StopVimInTerminal(buf) +endfunc + function Test_tabpanel_error() set tabpanel=%!NonExistingFunc() try @@ -540,5 +646,4 @@ function Test_tabpanel_error() set tabpanel&vim set showtabpanel&vim endfunc - " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index 7bc3a495d..df6eb585c 100644 --- a/src/version.c +++ b/src/version.c @@ -709,6 +709,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1425, /**/ 1424, /**/ @@ -4110,7 +4112,7 @@ intro_message( // start displaying the message lines after half of the blank lines row = blanklines / 2; - if ((row >= 2 && COLUMNS_WITHOUT_TPL() >= 50) || colon) + if ((row >= 2 && topframe->fr_width >= 50) || colon) { for (i = 0; i < (int)ARRAY_LENGTH(lines); ++i) { @@ -4193,7 +4195,7 @@ do_intro_line( } col += (int)STRLEN(vers); } - col = (COLUMNS_WITHOUT_TPL() - col) / 2; + col = (topframe->fr_width - col) / 2; if (col < 0) col = 0; @@ -4212,14 +4214,14 @@ do_intro_line( else clen += byte2cells(p[l]); } - screen_puts_len(p, l, row, col + TPL_LCOL(NULL), + screen_puts_len(p, l, row, col + firstwin->w_wincol, *p == '<' ? HL_ATTR(HLF_8) : attr); col += clen; } // Add the version number to the version line. if (add_version) - screen_puts(vers, row, col + TPL_LCOL(NULL), 0); + screen_puts(vers, row, col + firstwin->w_wincol, 0); } /* diff --git a/src/vim.h b/src/vim.h index 26adc1817..58ebad3f4 100644 --- a/src/vim.h +++ b/src/vim.h @@ -2089,7 +2089,6 @@ typedef int sock_T; #define IN_STATUS_LINE 2 // on status or command line #define IN_SEP_LINE 4 // on vertical separator line #define IN_OTHER_WIN 8 // in other window but can't go there -#define IN_TABPANEL 16 // in tabpanel #define CURSOR_MOVED 0x100 #define MOUSE_FOLD_CLOSE 0x200 // clicked on '-' in fold column #define MOUSE_FOLD_OPEN 0x400 // clicked on '+' in fold column diff --git a/src/window.c b/src/window.c index 8543758a9..f3b23e85a 100644 --- a/src/window.c +++ b/src/window.c @@ -1385,8 +1385,8 @@ win_split_ins( // width and column of new window is same as current window if (flags & (WSP_TOP | WSP_BOT)) { - wp->w_wincol = 0; - win_new_width(wp, COLUMNS_WITHOUT_TPL()); + wp->w_wincol = firstwin->w_wincol; + win_new_width(wp, topframe->fr_width); wp->w_vsep_width = 0; } else @@ -2085,8 +2085,8 @@ win_equal( if (dir == 0) dir = *p_ead; win_equal_rec(next_curwin == NULL ? curwin : next_curwin, current, - topframe, dir, 0, tabline_height(), - (int)COLUMNS_WITHOUT_TPL(), topframe->fr_height); + topframe, dir, firstwin->w_wincol, tabline_height(), + topframe->fr_width, topframe->fr_height); if (!is_aucmd_win(next_curwin)) win_fix_scroll(TRUE); } @@ -2144,7 +2144,7 @@ win_equal_rec( // frame. n = frame_minwidth(topfr, NOWIN); // add one for the rightmost window, it doesn't have a separator - if (col + width == COLUMNS_WITHOUT_TPL()) + if (col + width >= firstwin->w_wincol + topframe->fr_width) extra_sep = 1; else extra_sep = 0; @@ -2619,14 +2619,14 @@ close_last_window_tabpage( // Since goto_tabpage_tp above did not trigger *Enter autocommands, do // that now. apply_autocmds(EVENT_TABCLOSED, NULL, NULL, FALSE, curbuf); - apply_autocmds(EVENT_WINENTER, NULL, NULL, FALSE, curbuf); - apply_autocmds(EVENT_TABENTER, NULL, NULL, FALSE, curbuf); - if (old_curbuf != curbuf) - apply_autocmds(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf); #if defined(FEAT_TABPANEL) if (p_stpl > 0) shell_new_columns(); #endif + apply_autocmds(EVENT_WINENTER, NULL, NULL, FALSE, curbuf); + apply_autocmds(EVENT_TABENTER, NULL, NULL, FALSE, curbuf); + if (old_curbuf != curbuf) + apply_autocmds(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf); return TRUE; } @@ -4596,8 +4596,7 @@ win_init_size(void) firstwin->w_height = ROWS_AVAIL; firstwin->w_prev_height = ROWS_AVAIL; topframe->fr_height = ROWS_AVAIL; - firstwin->w_width = COLUMNS_WITHOUT_TPL(); - topframe->fr_width = COLUMNS_WITHOUT_TPL(); + firstwin->w_width = topframe->fr_width; } /* @@ -4696,6 +4695,9 @@ win_new_tabpage(int after) tabpage_T *prev_tp = curtab; tabpage_T *newtp; int n; +#if defined(FEAT_TABPANEL) + int prev_columns = COLUMNS_WITHOUT_TPL(); +#endif if (cmdwin_type != 0) { @@ -4763,7 +4765,22 @@ win_new_tabpage(int after) #ifdef FEAT_JOB_CHANNEL entering_window(curwin); #endif +#if defined(FEAT_TABPANEL) + if (prev_columns != COLUMNS_WITHOUT_TPL()) + { + tabpage_T *save_curtab = curtab; + + unuse_tabpage(curtab); + use_tabpage(prev_tp); + shell_new_rows(); + shell_new_columns(); + unuse_tabpage(curtab); + use_tabpage(save_curtab); + shell_new_rows(); + shell_new_columns(); + } +#endif redraw_all_later(UPD_NOT_VALID); apply_autocmds(EVENT_WINNEW, NULL, NULL, FALSE, curbuf); apply_autocmds(EVENT_WINENTER, NULL, NULL, FALSE, curbuf); @@ -4971,7 +4988,7 @@ leave_tabpage( tp->tp_lastwin = lastwin; tp->tp_old_Rows = Rows; if (tp->tp_old_Columns != -1) - tp->tp_old_Columns = COLUMNS_WITHOUT_TPL(); + tp->tp_old_Columns = topframe->fr_width; firstwin = NULL; lastwin = NULL; return OK; @@ -5034,12 +5051,12 @@ enter_tabpage( #endif )) shell_new_rows(); - if (curtab->tp_old_Columns != COLUMNS_WITHOUT_TPL()) + if (curtab->tp_old_Columns != topframe->fr_width) { if (starting == 0) { shell_new_columns(); // update window widths - curtab->tp_old_Columns = COLUMNS_WITHOUT_TPL(); + curtab->tp_old_Columns = topframe->fr_width; } else curtab->tp_old_Columns = -1; // update window widths later @@ -5805,7 +5822,7 @@ win_alloc(win_T *after, int hidden) */ if (!hidden) win_append(after, new_wp); - new_wp->w_wincol = 0; + new_wp->w_wincol = TPL_LCOL(NULL); new_wp->w_width = COLUMNS_WITHOUT_TPL(); // position the display and the cursor at the top of the file. @@ -6164,8 +6181,8 @@ shell_new_rows(void) if (h < frame_minheight(topframe, NULL)) h = frame_minheight(topframe, NULL); - // First try setting the heights of windows with 'winfixheight'. If - // that doesn't result in the right height, forget about that option. + // First try setting the heights of windows with 'winfixheight'. If that + // doesn't result in the right height, forget about that option. frame_new_height(topframe, h, FALSE, TRUE, FALSE); if (!frame_check_height(topframe, h)) frame_new_height(topframe, h, FALSE, FALSE, FALSE); @@ -6177,6 +6194,10 @@ shell_new_rows(void) if (!skip_win_fix_scroll) win_fix_scroll(TRUE); + redraw_tabline = TRUE; +#if defined(FEAT_TABPANEL) + redraw_tabpanel = TRUE; +#endif #if 0 // Disabled: don't want making the screen smaller make a window larger. if (p_ea) @@ -6193,13 +6214,23 @@ shell_new_columns(void) if (firstwin == NULL) // not initialized yet return; + int w = COLUMNS_WITHOUT_TPL(); + // First try setting the widths of windows with 'winfixwidth'. If that // doesn't result in the right width, forget about that option. - frame_new_width(topframe, COLUMNS_WITHOUT_TPL(), FALSE, TRUE); - if (!frame_check_width(topframe, COLUMNS_WITHOUT_TPL())) - frame_new_width(topframe, COLUMNS_WITHOUT_TPL(), FALSE, FALSE); + frame_new_width(topframe, w, FALSE, TRUE); + if (!frame_check_width(topframe, w)) + frame_new_width(topframe, w, FALSE, FALSE); (void)win_comp_pos(); // recompute w_winrow and w_wincol + + if (!skip_win_fix_scroll) + win_fix_scroll(TRUE); + + redraw_tabline = TRUE; +#if defined(FEAT_TABPANEL) + redraw_tabpanel = TRUE; +#endif #if 0 // Disabled: don't want making the screen smaller make a window larger. if (p_ea) @@ -6269,7 +6300,7 @@ win_size_restore(garray_T *gap) win_comp_pos(void) { int row = tabline_height(); - int col = 0; + int col = TPL_LCOL(NULL); frame_comp_pos(topframe, &row, &col); return row; @@ -6439,7 +6470,7 @@ frame_setheight(frame_T *curfrp, int height) if (frp != curfrp) room -= frame_minheight(frp, NULL); } - if (curfrp->fr_width != COLUMNS_WITHOUT_TPL()) + if (curfrp->fr_width != topframe->fr_width) room_cmdline = 0; else { @@ -6452,7 +6483,7 @@ frame_setheight(frame_T *curfrp, int height) if (height <= room + room_cmdline) break; - if (run == 2 || curfrp->fr_width == COLUMNS_WITHOUT_TPL()) + if (run == 2 || curfrp->fr_width == topframe->fr_width) { height = room + room_cmdline; break; @@ -6757,7 +6788,7 @@ win_setminwidth(void) // loop until there is a 'winminheight' that is possible while (p_wmw > 0) { - room = Columns; + room = topframe->fr_width; needed = frame_minwidth(topframe, NULL); if (room >= needed) break; @@ -7347,7 +7378,7 @@ command_height(void) // Find bottom frame with width of screen. frame_T *frp = lastwin->w_frame; - while (frp->fr_width != COLUMNS_WITHOUT_TPL() && frp->fr_parent != NULL) + while (frp->fr_width != topframe->fr_width && frp->fr_parent != NULL) frp = frp->fr_parent; // Avoid changing the height of a window with 'winfixheight' set. @@ -7667,7 +7698,7 @@ reset_lnums(void) if (wp->w_save_cursor.w_topline_corr == wp->w_topline && wp->w_save_cursor.w_topline_save != 0) wp->w_topline = wp->w_save_cursor.w_topline_save; - if (wp->w_save_cursor.w_topline_save > wp->w_buffer->b_ml.ml_line_count) + if (wp->w_save_cursor.w_topline_save > wp->w_buffer->b_ml.ml_line_count) wp->w_valid &= ~VALID_TOPLINE; } } -- -- 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 vim_dev+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/vim_dev/E1uLnRf-00Bb0K-N2%40256bit.org.