diff src/normal.c @ 686:473847b050f8

updated for version 7.0207
author vimboss
date Sat, 25 Feb 2006 21:45:02 +0000
parents d7e33248b9c8
children 0e922220d322
line wrap: on
line diff
--- a/src/normal.c
+++ b/src/normal.c
@@ -76,6 +76,7 @@ static void	nv_hor_scrollbar __ARGS((cmd
 #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
 
 /*