]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
updated for version 7.0207
authorBram Moolenaar <Bram@vim.org>
Sat, 25 Feb 2006 21:45:02 +0000 (21:45 +0000)
committerBram Moolenaar <Bram@vim.org>
Sat, 25 Feb 2006 21:45:02 +0000 (21:45 +0000)
runtime/doc/tabpage.txt
src/buffer.c
src/normal.c
src/window.c

index 7469869d8098623df9a360745cd4423d509eb8cf..85fc1d7d0245b6f418c8a0e12a3abf976a5b8f6b 100644 (file)
@@ -1,4 +1,4 @@
-*tabpage.txt*   For Vim version 7.0aa.  Last change: 2006 Feb 24
+*tabpage.txt*   For Vim version 7.0aa.  Last change: 2006 Feb 25
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -14,6 +14,7 @@ when used in combination with more than one tab page.
 2. Commands                    |tab-page-commands|
 3. Other items                 |tab-page-other|
 4. Setting 'tabline'           |setting-tabline|
+5. Setting 'guitablabel'       |setting-guitablabel|
 
 {Vi does not have any of these commands}
 {not able to use multiple tab pages when the |+windows| feature was disabled
@@ -133,7 +134,7 @@ gT          Go to the previous tab page.  Wraps around from the first one
                to the last one.
 
 :tabr[ewind]                   *:tabfir* *:tabfirst* *:tabr* *:tabrewind*
-:tabl[ast]     Go to the first tab page.
+:tabfir[st]    Go to the first tab page.
 
                                                        *:tabl* *:tablast*
 :tabl[ast]     Go to the last tab page.
@@ -205,6 +206,9 @@ When switching to another tab page the order is:
 ==============================================================================
 4. Setting 'tabline'                                   *setting-tabline*
 
+The 'tabline' option specifies what the line with tab pages labels looks like.
+It is only used when there is no GUI tab line.
+
 You can use the 'showtabline' option to specify when you want the line with
 tab page labels to appear: never, when there is more than one tab page or
 always.
@@ -269,4 +273,54 @@ trunctating the names.  You will want to reduce the width of labels in a
 clever way when there is not enough room.  Check the 'columns' option for the
 space available.
 
+==============================================================================
+5. Setting 'guitablabel'                               *setting-guitablabel*
+
+When the GUI tab pages line is displayed, 'guitablabel' can be used to
+specify the label to display for each tab page.  Unlike 'tabline', which
+specifies the whole tab pages line at once, 'guitablabel' is used for each
+label separately.
+
+See the 'statusline' option for the format of the value.
+
+The "%N" item can be used for the current tab page number.  The |v:lnum|
+variable is also set to this number.
+
+Note that syntax highlighting is not used for 'guitablabel'.  The %T and %X
+are also ignored.
+
+A simple example that puts the tab page number and the buffer name in the label: >
+
+       :set guitablabel=%N\ %f
+
+An example that resembles the default: Show the number of windows in the tab
+page and a '+' if there is a modifed buffer: >
+
+       function! GuiTabLabel()
+         let label = ''
+         let bufnrlist = tabpagebuflist(v:lnum)
+
+         " Add '+' if one of the buffers in the tab page is modified
+         for bufnr in bufnrlist
+           if getbufvar(bufnr, "&modified")
+             let label = '+'
+             break
+           endif
+         endfor
+
+         " Append the number of windows in the tab page if more than one
+         let wincount = tabpagewinnr(v:lnum, '$')
+         if wincount > 1
+           let label .= wincount
+         endif
+         if label != ''
+           let label .= ' '
+         endif
+
+         " Append the buffer name
+         return label . bufname(bufnrlist[tabpagewinnr(v:lnum) - 1])
+       endfunction
+       set guitablabel=%{GuiTabLabel()}
+<
+
  vim:tw=78:ts=8:ft=help:norl:
index 101d33f831771157fa6932af8e99fc1e0702a8a8..697599abb8efb55614dd115c6ee8f39d41a94312 100644 (file)
@@ -3197,7 +3197,7 @@ free_titles()
 
 #endif /* FEAT_TITLE */
 
-#if defined(FEAT_STL_OPT) || defined(PROTO)
+#if defined(FEAT_STL_OPT) || defined(FEAT_GUI_TABLINE) || defined(PROTO)
 /*
  * Build a string from the status line items in "fmt".
  * Return length of string in screen cells.
@@ -3212,10 +3212,11 @@ free_titles()
  * If maxwidth is not zero, the string will be filled at any middle marker
  * or truncated if too long, fillchar is used for all whitespace.
  */
+/*ARGSUSED*/
     int
 build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar, maxwidth, hltab, tabtab)
     win_T      *wp;
-    char_u     *out;           /* buffer to write into */
+    char_u     *out;           /* buffer to write into != NameBuff */
     size_t     outlen;         /* length of out[] */
     char_u     *fmt;
     int                use_sandbox;    /* "fmt" was set insecurely, use sandbox */
@@ -3632,8 +3633,8 @@ build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar, maxwidth, hltab, t
                str = tmp;
            break;
        case STL_PAGENUM:
-#ifdef FEAT_PRINTER
-           num = get_printer_page_num();
+#if defined(FEAT_PRINTER) || defined(FEAT_WINDOWS)
+           num = printer_page_num;
 #else
            num = 0;
 #endif
@@ -4020,7 +4021,8 @@ build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar, maxwidth, hltab, t
 }
 #endif /* FEAT_STL_OPT */
 
-#if defined(FEAT_STL_OPT) || defined(FEAT_CMDL_INFO) || defined(PROTO)
+#if defined(FEAT_STL_OPT) || defined(FEAT_CMDL_INFO) \
+           || defined(FEAT_GUI_TABLINE) || defined(PROTO)
 /*
  * Get relative cursor position in window into "str[]", in the form 99%, using
  * "Top", "Bot" or "All" when appropriate.
index cc9d0d1650d210a815a98228bad3f45dce226ab9..405f5586794849d1a4418ab2f11abc3076876332 100644 (file)
@@ -76,6 +76,7 @@ static void   nv_hor_scrollbar __ARGS((cmdarg_T *cap));
 #endif
 #ifdef FEAT_GUI_TABLINE
 static void    nv_tabline __ARGS((cmdarg_T *cap));
+static void    nv_tabmenu __ARGS((cmdarg_T *cap));
 #endif
 static void    nv_exmode __ARGS((cmdarg_T *cap));
 static void    nv_colon __ARGS((cmdarg_T *cap));
@@ -423,6 +424,7 @@ static const struct nv_cmd
 #endif
 #ifdef FEAT_GUI_TABLINE
     {K_TABLINE, nv_tabline,    0,                      0},
+    {K_TABMENU, nv_tabmenu,    0,                      0},
 #endif
 #ifdef FEAT_FKMAP
     {K_F8,     farsi_fkey,     0,                      0},
@@ -4997,6 +4999,44 @@ nv_tabline(cap)
     /* Even if an operator was pending, we still want to jump tabs. */
     goto_tabpage(current_tab);
 }
+
+/*
+ * Selected item in tab line menu.
+ */
+    static void
+nv_tabmenu(cap)
+    cmdarg_T   *cap;
+{
+    if (cap->oap->op_type != OP_NOP)
+       clearopbeep(cap->oap);
+
+    /* Even if an operator was pending, we still want to jump tabs. */
+    switch (current_tabmenu)
+    {
+       case TABLINE_MENU_CLOSE:
+           if (current_tab == 0)
+               do_cmdline_cmd((char_u *)"tabclose");
+           else
+           {
+               vim_snprintf((char *)IObuff, IOSIZE, "tabclose %d",
+                                                                current_tab);
+               do_cmdline_cmd(IObuff);
+           }
+           break;
+
+       case TABLINE_MENU_NEW:
+           if (current_tab > 0)
+               goto_tabpage(current_tab);
+           do_cmdline_cmd((char_u *)"tabnew");
+           break;
+
+       case TABLINE_MENU_OPEN:
+           if (current_tab > 0)
+               goto_tabpage(current_tab);
+           do_cmdline_cmd((char_u *)"browse tabnew");
+           break;
+    }
+}
 #endif
 
 /*
index f0a4265b0e20f5a405258bd533d4ea8fa0334825..0c0fb30d5d8dfb7a0e487aae38ae09d7c60d5429 100644 (file)
@@ -3143,7 +3143,7 @@ find_tabpage(n)
 
 /*
  * Get index of tab page "tp".  First one has index 1.
- * When not found returns number of tab pages.
+ * When not found returns number of tab pages plus one.
  */
     int
 tabpage_index(ftp)