# HG changeset patch # User vimboss # Date 1140904061 0 # Node ID d4b8e06e7c96c6a95239261f1a0dbc8dfae65252 # Parent 473847b050f8ac7ea1e566327d042f521f595b51 updated for version 7.0207 diff --git a/runtime/doc/usr_08.txt b/runtime/doc/usr_08.txt --- a/runtime/doc/usr_08.txt +++ b/runtime/doc/usr_08.txt @@ -1,4 +1,4 @@ -*usr_08.txt* For Vim version 7.0aa. Last change: 2006 Feb 24 +*usr_08.txt* For Vim version 7.0aa. Last change: 2006 Feb 25 VIM USER MANUAL - by Bram Moolenaar @@ -520,7 +520,7 @@ This will edit the file "thatfile" in a window. And you will notice a bar at the top with the two file names: +----------------------------------+ - |_thisfile_| thatfile ____________X| + | thisfile | /thatfile/ __________X| (thatfile is bold) |/* thatfile */ | |that | |that | @@ -537,7 +537,7 @@ eachother, with a tab sticking out of ea Now use the mouse to click on "thisfile" in the top line. The result is +----------------------------------+ - | thisfile |_thatfile_____________X| + | /thisfile/ | thatfile __________X| (thisfile is bold) |/* thisfile */ | |this | |this | @@ -559,7 +559,7 @@ This makes a new tab page with one windo the window we were in: +-------------------------------------+ - |_thisfile_| thisfile | _thatfile____X| + | thisfile | /thisfile/ | thatfile __X| (thisfile is bold) |/* thisfile */ | |this | |this | diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim --- a/runtime/syntax/vim.vim +++ b/runtime/syntax/vim.vim @@ -128,7 +128,7 @@ syn match vimOper "\(==\|!=\|>=\|<=\|=\ syn match vimOper "||\|&&\|[-+.]" skipwhite nextgroup=vimString,vimSpecFile syn region vimOperParen matchgroup=vimOper start="(" end=")" contains=@vimOperGroup syn region vimOperParen matchgroup=vimSep start="{" end="}" contains=@vimOperGroup nextgroup=vimVar -syn match vimOperOk "\<[aiAIrR][()]" +syn match vimOperOk "\<[aiAIrR][()]" contained if !exists("g:vimsyntax_noerror") syn match vimOperError ")" endif diff --git a/src/gui.c b/src/gui.c --- a/src/gui.c +++ b/src/gui.c @@ -3199,7 +3199,8 @@ gui_init_which_components(oldval) fix_size = FALSE; #ifdef FEAT_GUI_TABLINE - /* Update the tab line, it may appear or disappear. */ + /* Update the GUI tab line, it may appear or disappear. This may + * cause the non-GUI tab line to disappear or appear. */ using_tabline = gui_has_tabline(); if (prev_has_tabline != using_tabline) { @@ -3279,7 +3280,6 @@ gui_init_which_components(oldval) if (need_set_size) { #ifdef FEAT_GUI_GTK - long r = Rows; long c = Columns; #endif /* Adjust the size of the window to make the text area keep the @@ -3295,13 +3295,20 @@ gui_init_which_components(oldval) * character here to avoid this effect. * If you remove this, please test this command for resizing * effects (with optional left scrollbar): ":vsp|q|vsp|q|vsp|q". - * Don't do this while starting up though. */ + * Don't do this while starting up though. + * And don't change Rows, it may have be reduced intentionally + * when adding menu/toolbar/tabline. */ if (!gui.starting) (void)char_avail(); - Rows = r; Columns = c; #endif } +#ifdef FEAT_WINDOWS + /* When the console tabline appears or disappears the window positions + * change. */ + if (firstwin->w_winrow != tabline_height()) + shell_new_rows(); /* recompute window positions and heights */ +#endif } } @@ -3359,24 +3366,57 @@ get_tabline_label(tp) int wincount; win_T *wp; - /* Get the buffer name into NameBuff[] */ - get_trans_bufname(tp == curtab ? curbuf : tp->tp_curwin->w_buffer); - - wp = (tp == curtab) ? firstwin : tp->tp_firstwin; - for (wincount = 0; wp != NULL; wp = wp->w_next, ++wincount) - if (bufIsChanged(wp->w_buffer)) - modified = TRUE; - if (modified || wincount > 1) + /* Use 'guitablabel' if it's set. */ + if (*p_gtl != NUL) { - if (wincount > 1) - vim_snprintf((char *)buf, sizeof(buf), "%d", wincount); - else - buf[0] = NUL; - if (modified) - STRCAT(buf, "+"); - STRCAT(buf, " "); - mch_memmove(NameBuff + STRLEN(buf), NameBuff, STRLEN(NameBuff) + 1); - mch_memmove(NameBuff, buf, STRLEN(buf)); + int use_sandbox = FALSE; + int save_called_emsg = called_emsg; + char_u res[MAXPATHL]; + + called_emsg = FALSE; + + printer_page_num = tabpage_index(tp); +# ifdef FEAT_EVAL + set_vim_var_nr(VV_LNUM, printer_page_num); + use_sandbox = was_set_insecurely((char_u *)"guitablabel", 0); +# endif + /* Can't use NameBuff directly, build_stl_str_hl() uses it. */ + build_stl_str_hl(tp == curtab ? curwin : tp->tp_curwin, + res, MAXPATHL, p_gtl, use_sandbox, + 0, (int)Columns, NULL, NULL); + STRCPY(NameBuff, res); + + if (called_emsg) + { + set_string_option_direct((char_u *)"guitablabel", -1, + (char_u *)"", OPT_FREE); +# ifdef FEAT_EVAL + set_option_scriptID((char_u *)"guitablabel", SID_ERROR); +# endif + } + called_emsg |= save_called_emsg; + } + else + { + /* Get the buffer name into NameBuff[] */ + get_trans_bufname(tp == curtab ? curbuf : tp->tp_curwin->w_buffer); + + wp = (tp == curtab) ? firstwin : tp->tp_firstwin; + for (wincount = 0; wp != NULL; wp = wp->w_next, ++wincount) + if (bufIsChanged(wp->w_buffer)) + modified = TRUE; + if (modified || wincount > 1) + { + if (wincount > 1) + vim_snprintf((char *)buf, sizeof(buf), "%d", wincount); + else + buf[0] = NUL; + if (modified) + STRCAT(buf, "+"); + STRCAT(buf, " "); + mch_memmove(NameBuff + STRLEN(buf), NameBuff, STRLEN(NameBuff) + 1); + mch_memmove(NameBuff, buf, STRLEN(buf)); + } } } diff --git a/src/keymap.h b/src/keymap.h --- a/src/keymap.h +++ b/src/keymap.h @@ -104,6 +104,9 @@ /* Used for click in a tab pages label. */ #define KS_TABLINE 240 +/* Used for menu in a tab pages line. */ +#define KS_TABMENU 239 + /* * Filler used after KS_SPECIAL and others */ @@ -403,6 +406,7 @@ enum key_extra #define K_TEAROFF TERMCAP2KEY(KS_TEAROFF, KE_FILLER) #define K_TABLINE TERMCAP2KEY(KS_TABLINE, KE_FILLER) +#define K_TABMENU TERMCAP2KEY(KS_TABMENU, KE_FILLER) /* * Symbols for pseudo keys which are translated from the real key symbols