]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
updated for version 7.0207 v7.0207
authorBram Moolenaar <Bram@vim.org>
Sat, 25 Feb 2006 21:55:24 +0000 (21:55 +0000)
committerBram Moolenaar <Bram@vim.org>
Sat, 25 Feb 2006 21:55:24 +0000 (21:55 +0000)
runtime/doc/todo.txt
runtime/doc/version7.txt
src/eval.c
src/gui_gtk_x11.c

index 89370acdb53f349822a30e90eda3649b6ad7ccfe..7b60f76afd9b77343ceeff94a8b0e66ac0de8688 100644 (file)
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0aa.  Last change: 2006 Feb 24
+*todo.txt*      For Vim version 7.0aa.  Last change: 2006 Feb 25
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -30,20 +30,17 @@ be worked on, but only if you sponsor Vim development.  See |sponsor|.
                                                        *known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-Fix for hlsearch getting stuck on multibyte char also in 6.4.  reportec by
-Yukihiro Nakadaira.
-
-
 Tab pages:
+-   Add 'guitablabel' option.
 -   GTK GUI implementation for the tab pages line:
-      /tmp/vim61_tab.patch.bz2
-    Window height can be wrong:
-       :set go-=e
-       resize to fill screen
-       :set go+=e
-    Add 'guitabitem' option?
--   GUI implementation for the tab pages line for other systems.
+    handling of tab in insert mode (like clicking mouse in other window)
+    and cmdline mode (keep current tab)
+
+9   GUI implementation for the tab pages line for other systems.
+8   Make GUI menu in tab pages line configurable.  Like the popup menu.
 8   tab pages in the session file, if "tabpages" in 'sessionoptions'
+8   :tabmove +N         move tab page N pages forward
+8   :tabmove -N         move tab page N pages backward
 7   :tabdup     duplicate the tab with all its windows.
 6   :tab ball    tab page for each buffer
 6   :tab all     tab page for each argument
@@ -136,6 +133,7 @@ all. (Gautam Iyer)
 
 Mac unicode patch (Da Woon Jung):
 - configuration option for platform: i386, ppc or both.
+    Use __LITTLE_ENDIAN__ to test for current platform.
 - selecting proportional font breaks display
 - UTF-8 text causes display problems.  Font replacement causes this.
 - Command-key mappings do not work. (Alan Schmitt)
index 465c02c44821ad0204e4765cd53d1e98ff65f334..50d33dc318092c49c75e089ea3a2cf42dff55e14 100644 (file)
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.0aa.  Last change: 2006 Feb 24
+*version7.txt*  For Vim version 7.0aa.  Last change: 2006 Feb 25
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1749,4 +1749,11 @@ short instead of a char to store the color number.
 
 ml_get errors when searching for "\n\zs" in an empty file.
 
+When selecting a block and using "$" to select until the end of every line and
+not highlighting the character under the cursor the first character of the
+block could be unhighlighted.
+
+When counting words for the Visual block area and using "$" to select until
+the end of every line only up to the length of the last line was counted.
+
  vim:tw=78:ts=8:ft=help:norl:
index 52525e6c4736ab7efdb81da0d220f12cefa4bd26..99fda402e1ab2987cb77bf18abcf9016415a7c72 100644 (file)
@@ -14943,7 +14943,7 @@ f_tabpagenr(argvars, rettv)
        if (arg != NULL)
        {
            if (STRCMP(arg, "$") == 0)
-               nr = tabpage_index(NULL);
+               nr = tabpage_index(NULL) - 1;
            else
                EMSG2(_(e_invexpr2), arg);
        }
index 4cae9a1738f056d00c3cf8a41435da4e43f62327..2bf3799825a115f9f8de4f57379fb2e9486923b3 100644 (file)
@@ -3061,6 +3061,129 @@ set_toolbar_style(GtkToolbar *toolbar)
 
 #if defined(FEAT_GUI_TABLINE) || defined(PROTO)
 static int ignore_tabline_evt = FALSE;
+static GtkWidget *tabline_menu;
+static int clicked_page;           /* page clicked in tab line */
+
+/*
+ * Handle selecting an item in the tab line popup menu.
+ */
+/*ARGSUSED*/
+    static void
+tabline_menu_handler(GtkMenuItem *item, gpointer user_data)
+{
+    char_u     string[3];
+
+    /* Add the string cmd into input buffer */
+    string[0] = CSI;
+    string[1] = KS_TABMENU;
+    string[2] = KE_FILLER;
+    add_to_input_buf(string, 3);
+    string[0] = clicked_page;
+    string[1] = (char_u)(long)user_data;
+    add_to_input_buf_csi(string, 2);
+
+    if (gtk_main_level() > 0)
+       gtk_main_quit();
+}
+
+/*
+ * Send the event for clicking to select tab page "nr".
+ */
+    static void
+send_tabline_event(int nr)
+{
+    char_u string[3];
+
+    string[0] = CSI;
+    string[1] = KS_TABLINE;
+    string[2] = KE_FILLER;
+    add_to_input_buf(string, 3);
+    string[0] = nr;
+    add_to_input_buf_csi(string, 1);
+
+    if (gtk_main_level() > 0)
+       gtk_main_quit();
+}
+
+/*
+ * Create a menu for the tab line.
+ */
+    static GtkWidget *
+create_tabline_menu(void)
+{
+    GtkWidget *menu, *item;
+
+    menu = gtk_menu_new();
+
+    item = gtk_menu_item_new_with_label(_("Close"));
+    gtk_widget_show(item);
+    gtk_container_add(GTK_CONTAINER(menu), item);
+    gtk_signal_connect(GTK_OBJECT(item), "activate",
+           GTK_SIGNAL_FUNC(tabline_menu_handler),
+           (gpointer)TABLINE_MENU_CLOSE);
+
+    item = gtk_menu_item_new_with_label(_("New tab"));
+    gtk_widget_show(item);
+    gtk_container_add(GTK_CONTAINER(menu), item);
+    gtk_signal_connect(GTK_OBJECT(item), "activate",
+           GTK_SIGNAL_FUNC(tabline_menu_handler),
+           (gpointer)TABLINE_MENU_NEW);
+
+    item = gtk_menu_item_new_with_label(_("Open Tab..."));
+    gtk_widget_show(item);
+    gtk_container_add(GTK_CONTAINER(menu), item);
+    gtk_signal_connect(GTK_OBJECT(item), "activate",
+           GTK_SIGNAL_FUNC(tabline_menu_handler),
+           (gpointer)TABLINE_MENU_OPEN);
+
+    return menu;
+}
+
+    static gboolean
+on_tabline_menu(GtkWidget *widget, GdkEvent *event)
+{
+    /* Was this button press event ? */
+    if (event->type == GDK_BUTTON_PRESS)
+    {
+       GdkEventButton *bevent = (GdkEventButton *)event;
+       int             x = bevent->x;
+       GtkWidget       *page;
+       GtkWidget       *label;
+
+       /* Find out where the click was. */
+       for (clicked_page = 1;  ; ++clicked_page)
+       {
+           page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(gui.tabline),
+                                                           clicked_page - 1);
+           if (page == NULL)
+           {
+               /* Past all the labels, return zero. */
+               clicked_page = 0;
+               break;
+           }
+           label = gtk_notebook_get_tab_label(GTK_NOTEBOOK(gui.tabline), page);
+           /* The label size apparently doesn't include the spacing, estimate
+            * it by the page position. */
+           if (page->allocation.x * 2 + label->allocation.x
+                                           + label->allocation.width + 1>= x)
+               break;
+       }
+
+       /* If the event was generated for 3rd button popup the menu. */
+       if (bevent->button == 3)
+       {
+           gtk_menu_popup(GTK_MENU(widget), NULL, NULL, NULL, NULL,
+                                               bevent->button, bevent->time);
+           /* We handled the event. */
+           return TRUE;
+       }
+       else if (bevent->button == 1 && clicked_page == 0)
+           /* Click after all tabs moves to next tab page. */
+           send_tabline_event(0);
+    }
+    /* We didn't handle the event. */
+    return FALSE;
+}
 
 /*
  * Handle selecting one of the tabs.
@@ -3073,20 +3196,8 @@ on_select_tab(
        gint            index,
        gpointer        data)
 {
-    static char_u string[3];
-
     if (!ignore_tabline_evt)
-    {
-       string[0] = CSI;
-       string[1] = KS_TABLINE;
-       string[2] = KE_FILLER;
-       add_to_input_buf(string, 3);
-       string[0] = index + 1;
-       add_to_input_buf_csi(string, 1);
-
-       if (gtk_main_level() > 0)
-           gtk_main_quit();
-    }
+       send_tabline_event(index + 1);
 }
 
 /*
@@ -3472,6 +3583,11 @@ gui_mch_init(void)
     }
     gtk_signal_connect(GTK_OBJECT(gui.tabline), "switch_page",
                       GTK_SIGNAL_FUNC(on_select_tab), NULL);
+
+    /* Create a popup menu for the tab line and connect it. */
+    tabline_menu = create_tabline_menu();
+    gtk_signal_connect_object(GTK_OBJECT(gui.tabline), "button_press_event",
+                 GTK_SIGNAL_FUNC(on_tabline_menu), GTK_OBJECT(tabline_menu));
 #endif
 
     gui.formwin = gtk_form_new();