The problem in gui_gtk_f has now become a warning, but there is a
fatal in the link:

gui_gtk_f:

gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread
-I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0
-I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0
-I/usr/lib64/dbus-1.0/include -I/usr/include/gtk-3.0
-I/usr/include/gio-unix-2.0 -I/usr/include/libxkbcommon
-I/usr/include/wayland -I/usr/include/cairo -I/usr/include/pango-1.0
-I/usr/include/fribidi -I/usr/include/harfbuzz -I/usr/include/atk-1.0
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2
-I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/uuid
-I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include   -O2
-fno-strength-reduce -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
 -o objects/gui_gtk_f.o gui_gtk_f.c
In file included from /usr/include/glib-2.0/gobject/gobject.h:24:0,
                 from /usr/include/glib-2.0/gobject/gbinding.h:29,
                 from /usr/include/glib-2.0/glib-object.h:23,
                 from /usr/include/glib-2.0/gio/gioenums.h:28,
                 from /usr/include/glib-2.0/gio/giotypes.h:28,
                 from /usr/include/glib-2.0/gio/gio.h:26,
                 from /usr/include/gtk-3.0/gdk/gdkapplaunchcontext.h:28,
                 from /usr/include/gtk-3.0/gdk/gdk.h:32,
                 from /usr/include/gtk-3.0/gtk/gtk.h:30,
                 from beval.h:15,
                 from vim.h:1810,
                 from gui_gtk_f.c:26:
gui_gtk_f.c:199:24: warning: ‘gtk_form_init’ used but never defined
 G_DEFINE_TYPE(GtkForm, gtk_form, GTK_TYPE_CONTAINER)
                        ^
/usr/include/glib-2.0/gobject/gtype.h:1979:17: note: in definition of
macro ‘_G_DEFINE_TYPE_EXTENDED_BEGIN_PRE’
 static void     type_name##_init              (TypeName        *self); \
                 ^~~~~~~~~
/usr/include/glib-2.0/gobject/gtype.h:1761:60: note: in expansion of
macro ‘_G_DEFINE_TYPE_EXTENDED_BEGIN’
 #define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)
_G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;}
_G_DEFINE_TYPE_EXTENDED_END()

^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/glib-2.0/gobject/gtype.h:1602:43: note: in expansion of
macro ‘G_DEFINE_TYPE_EXTENDED’
 #define G_DEFINE_TYPE(TN, t_n, T_P)       G_DEFINE_TYPE_EXTENDED (TN,
t_n, T_P, 0, {})
                                           ^~~~~~~~~~~~~~~~~~~~~~
gui_gtk_f.c:199:1: note: in expansion of macro ‘G_DEFINE_TYPE’
 G_DEFINE_TYPE(GtkForm, gtk_form, GTK_TYPE_CONTAINER)
 ^~~~~~~~~~~~~
gui_gtk_f.c:199:24: warning: ‘gtk_form_class_init’ used but never defined
 G_DEFINE_TYPE(GtkForm, gtk_form, GTK_TYPE_CONTAINER)
                        ^
/usr/include/glib-2.0/gobject/gtype.h:1980:17: note: in definition of
macro ‘_G_DEFINE_TYPE_EXTENDED_BEGIN_PRE’
 static void     type_name##_class_init        (TypeName##Class *klass); \
                 ^~~~~~~~~
/usr/include/glib-2.0/gobject/gtype.h:1761:60: note: in expansion of
macro ‘_G_DEFINE_TYPE_EXTENDED_BEGIN’
 #define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)
_G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;}
_G_DEFINE_TYPE_EXTENDED_END()

^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/glib-2.0/gobject/gtype.h:1602:43: note: in expansion of
macro ‘G_DEFINE_TYPE_EXTENDED’
 #define G_DEFINE_TYPE(TN, t_n, T_P)       G_DEFINE_TYPE_EXTENDED (TN,
t_n, T_P, 0, {})
                                           ^~~~~~~~~~~~~~~~~~~~~~
gui_gtk_f.c:199:1: note: in expansion of macro ‘G_DEFINE_TYPE’
 G_DEFINE_TYPE(GtkForm, gtk_form, GTK_TYPE_CONTAINER)
 ^~~~~~~~~~~~~
gui_gtk_f.c:257:1: warning: ‘form_init’ defined but not used [-Wunused-function]
 form_init(GtkForm *form, void *g_class UNUSED)
 ^~~~~~~~~
gui_gtk_f.c:224:1: warning: ‘form_class_init’ defined but not used
[-Wunused-function]
 form_class_init(GtkFormClass *klass)
 ^~~~~~~~~~~~~~~


Linking:

link.sh: $LINK_AS_NEEDED set to 'yes': invoking linker directly.
  gcc   -L/usr/local/lib -Wl,--as-needed        -o vim-normal
objects/arabic.o objects/arglist.o objects/autocmd.o objects/beval.o
objects/buffer.o objects/change.o objects/blob.o objects/blowfish.o
objects/cindent.o objects/clientserver.o objects/clipboard.o
objects/cmdexpand.o objects/cmdhist.o objects/crypt.o
objects/crypt_zip.o objects/debugger.o objects/dict.o objects/diff.o
objects/digraph.o objects/drawline.o objects/drawscreen.o
objects/edit.o objects/eval.o objects/evalbuffer.o objects/evalfunc.o
objects/evalvars.o objects/evalwindow.o objects/ex_cmds.o
objects/ex_cmds2.o objects/ex_docmd.o objects/ex_eval.o
objects/ex_getln.o objects/fileio.o objects/filepath.o
objects/findfile.o objects/fold.o objects/getchar.o objects/gui_xim.o
objects/hardcopy.o objects/hashtab.o objects/help.o
objects/highlight.o objects/if_cscope.o objects/if_xcmdsrv.o
objects/indent.o objects/insexpand.o objects/list.o objects/locale.o
objects/map.o objects/mark.o objects/match.o objects/mbyte.o
objects/memline.o objects/menu.o objects/misc1.o objects/misc2.o
objects/mouse.o objects/move.o objects/normal.o objects/ops.o
objects/option.o objects/optionstr.o objects/os_unix.o
objects/pathdef.o objects/popupmenu.o objects/popupwin.o
objects/profiler.o objects/pty.o objects/quickfix.o objects/regexp.o
objects/register.o objects/screen.o objects/scriptfile.o
objects/search.o objects/session.o objects/sha256.o objects/sign.o
objects/sound.o objects/spell.o objects/spellfile.o
objects/spellsuggest.o objects/syntax.o objects/tag.o objects/term.o
objects/terminal.o objects/testing.o objects/textformat.o
objects/textobject.o objects/textprop.o objects/time.o
objects/typval.o objects/ui.o objects/undo.o objects/usercmd.o
objects/userfunc.o objects/version.o objects/vim9compile.o
objects/vim9execute.o objects/vim9script.o objects/vim9type.o
objects/viminfo.o objects/window.o objects/bufwrite.o objects/gui.o
objects/gui_gtk.o objects/gui_gtk_x11.o objects/gui_gtk_f.o
objects/gui_beval.o objects/gui_gtk_gresources.o
objects/netbeans.o objects/job.o objects/channel.o objects/xdiffi.o
objects/xemit.o objects/xprepare.o objects/xutils.o
objects/xhistogram.o objects/xpatience.o  objects/charset.o
objects/json.o objects/main.o objects/memfile.o objects/message.o
-lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0
-lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0
-lglib-2.0 -lSM -lICE -lXpm -lXt -lX11 -lXdmcp -lSM -lICE  -lm -ltinfo
-lelf  -lselinux -lacl -lattr -lgpm -ldl
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld:
objects/gui_gtk.o: in function `gui_mch_set_text_area_pos':
gui_gtk.c:(.text+0x216b): undefined reference to `gui_gtk_form_get_type'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld:
objects/gui_gtk.o: in function `gui_mch_set_scrollbar_pos':
gui_gtk.c:(.text+0x259c): undefined reference to `gui_gtk_form_get_type'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld:
objects/gui_gtk.o: in function `gui_mch_create_scrollbar':
gui_gtk.c:(.text+0x2633): undefined reference to `gui_gtk_form_get_type'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld:
objects/gui_gtk_x11.o: in function `form_configure_event':
gui_gtk_x11.c:(.text+0x10fa): undefined reference to `gui_gtk_form_get_type'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld:
gui_gtk_x11.c:(.text+0x1120): undefined reference to
`gui_gtk_form_get_type'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld:
objects/gui_gtk_x11.o:gui_gtk_x11.c:(.text+0x306e): more undefined
references to `gui_gtk_form_get_type' follow
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld:
objects/gui_gtk_f.o: in function `gtk_form_get_type_once':
gui_gtk_f.c:(.text+0x1a8): undefined reference to `gtk_form_init'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld:
objects/gui_gtk_f.o: in function `gui_gtk_form_new':
gui_gtk_f.c:(.text+0x342): undefined reference to `gui_gtk_form_get_type'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld:
objects/gui_gtk_f.o: in function `gui_gtk_form_put':
gui_gtk_f.c:(.text+0x385): undefined reference to `gui_gtk_form_get_type'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld:
objects/gui_gtk_f.o: in function `gui_gtk_form_move':
gui_gtk_f.c:(.text+0x4f7): undefined reference to `gui_gtk_form_get_type'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld:
objects/gui_gtk_f.o: in function `gui_gtk_form_freeze':
gui_gtk_f.c:(.text+0x595): undefined reference to `gui_gtk_form_get_type'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld:
objects/gui_gtk_f.o: in function `gui_gtk_form_thaw':
gui_gtk_f.c:(.text+0x5ea): undefined reference to `gui_gtk_form_get_type'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld:
objects/gui_gtk_f.o: in function `gtk_form_class_intern_init':
gui_gtk_f.c:(.text+0x1e5): undefined reference to `gtk_form_class_init'
collect2: error: ld returned 1 exit status
link.sh: Linking failed
make[1]: *** [Makefile:2134: vim-normal] Error 1
make[1]: Leaving directory '/root/.build/vim/vim-hg/src/shadow-normal'
make: *** [Makefile:2085: reconfig] Error 2
exit status 2
Wed 21 Oct 16:27:50 CEST 2020


Best regards,
Tony.

On Wed, Oct 21, 2020 at 4:11 PM Bram Moolenaar <b...@moolenaar.net> wrote:
>
>
> Patch 8.2.1878
> Problem:    GTK: error for redefining function. (Tony Mechelynck)
> Solution:   Remove "gtk_" prefix from local functions and prepend "gui_" to
>             global functions.
> Files:      src/gui_gtk_f.c, src/gui_gtk_f.h, src/gui_gtk.c, src/gui_gtk_x11.c
>
>
> *** ../vim-8.2.1877/src/gui_gtk_f.c     2020-10-21 12:37:56.270973451 +0200
> --- src/gui_gtk_f.c     2020-10-21 16:08:48.386725805 +0200
> ***************
> *** 11,17 ****
>    * (C) 1998,1999 by Marcin Dalecki <mar...@dalecki.de>
>    *
>    * Support for GTK+ 2 was added by:
> -  *
>    * (C) 2002,2003  Jason Hildebrand  <ja...@peaceworks.ca>
>    *              Daniel Elstner  <daniel.elst...@gmx.net>
>    *
> --- 11,16 ----
> ***************
> *** 21,27 ****
>    * long time.
>    *
>    * Support for GTK+ 3 was added by:
> -  *
>    * 2016  Kazunobu Kuriyama  <kazunobu.kuriy...@gmail.com>
>    */
>
> --- 20,25 ----
> ***************
> *** 50,101 ****
>   };
>
>
> ! static void gtk_form_class_init(GtkFormClass *klass);
> ! static void gtk_form_init(GtkForm *form, void *g_class);
>
> ! static void gtk_form_realize(GtkWidget *widget);
> ! static void gtk_form_unrealize(GtkWidget *widget);
> ! static void gtk_form_map(GtkWidget *widget);
> ! static void gtk_form_size_request(GtkWidget *widget,
> !                                 GtkRequisition *requisition);
> ! #if GTK_CHECK_VERSION(3,0,0)
> ! static void gtk_form_get_preferred_width(GtkWidget *widget,
> !                                        gint *minimal_width,
> !                                        gint *natural_width);
> ! static void gtk_form_get_preferred_height(GtkWidget *widget,
> !                                         gint *minimal_height,
> !                                         gint *natural_height);
> ! #endif
> ! static void gtk_form_size_allocate(GtkWidget *widget,
> !                                  GtkAllocation *allocation);
> ! #if GTK_CHECK_VERSION(3,0,0)
> ! static gboolean gtk_form_draw(GtkWidget *widget,
> !                             cairo_t *cr);
> ! #else
> ! static gint gtk_form_expose(GtkWidget *widget,
> !                           GdkEventExpose *event);
> ! #endif
> !
> ! static void gtk_form_remove(GtkContainer *container,
> !                           GtkWidget *widget);
> ! static void gtk_form_forall(GtkContainer *container,
> !                           gboolean include_internals,
> !                           GtkCallback callback,
> !                           gpointer callback_data);
> !
> ! static void gtk_form_attach_child_window(GtkForm *form,
> !                                        GtkFormChild *child);
> ! static void gtk_form_realize_child(GtkForm *form,
> !                                  GtkFormChild *child);
> ! static void gtk_form_position_child(GtkForm *form,
> !                                   GtkFormChild *child,
> !                                   gboolean force_allocate);
> ! static void gtk_form_position_children(GtkForm *form);
>
> ! static void gtk_form_send_configure(GtkForm *form);
>
> ! static void gtk_form_child_map(GtkWidget *widget, gpointer user_data);
> ! static void gtk_form_child_unmap(GtkWidget *widget, gpointer user_data);
>
>   #if !GTK_CHECK_VERSION(3,0,0)
>   static GtkWidgetClass *parent_class = NULL;
> --- 48,83 ----
>   };
>
>
> ! static void form_class_init(GtkFormClass *klass);
> ! static void form_init(GtkForm *form, void *g_class);
> !
> ! static void form_realize(GtkWidget *widget);
> ! static void form_unrealize(GtkWidget *widget);
> ! static void form_map(GtkWidget *widget);
> ! static void form_size_request(GtkWidget *widget, GtkRequisition 
> *requisition);
> ! #if GTK_CHECK_VERSION(3,0,0)
> ! static void form_get_preferred_width(GtkWidget *widget, gint 
> *minimal_width, gint *natural_width);
> ! static void form_get_preferred_height(GtkWidget *widget, gint 
> *minimal_height, gint *natural_height);
> ! #endif
> ! static void form_size_allocate(GtkWidget *widget, GtkAllocation 
> *allocation);
> ! #if GTK_CHECK_VERSION(3,0,0)
> ! static gboolean form_draw(GtkWidget *widget, cairo_t *cr);
> ! #else
> ! static gint form_expose(GtkWidget *widget, GdkEventExpose *event);
> ! #endif
> !
> ! static void form_remove(GtkContainer *container, GtkWidget *widget);
> ! static void form_forall(GtkContainer *container, gboolean 
> include_internals, GtkCallback callback, gpointer callback_data);
>
> ! static void form_attach_child_window(GtkForm *form, GtkFormChild *child);
> ! static void form_realize_child(GtkForm *form, GtkFormChild *child);
> ! static void form_position_child(GtkForm *form, GtkFormChild *child, 
> gboolean force_allocate);
> ! static void form_position_children(GtkForm *form);
>
> ! static void form_send_configure(GtkForm *form);
>
> ! static void form_child_map(GtkWidget *widget, gpointer user_data);
> ! static void form_child_unmap(GtkWidget *widget, gpointer user_data);
>
>   #if !GTK_CHECK_VERSION(3,0,0)
>   static GtkWidgetClass *parent_class = NULL;
> ***************
> *** 104,127 ****
>   // Public interface
>
>       GtkWidget *
> ! gtk_form_new(void)
>   {
>       GtkForm *form;
>
>   #if GTK_CHECK_VERSION(3,0,0)
>       form = g_object_new(GTK_TYPE_FORM, NULL);
>   #else
> !     form = gtk_type_new(gtk_form_get_type());
>   #endif
>
>       return GTK_WIDGET(form);
>   }
>
>       void
> ! gtk_form_put(GtkForm  *form,
> !            GtkWidget  *child_widget,
> !            gint       x,
> !            gint       y)
>   {
>       GtkFormChild *child;
>
> --- 86,110 ----
>   // Public interface
>
>       GtkWidget *
> ! gui_gtk_form_new(void)
>   {
>       GtkForm *form;
>
>   #if GTK_CHECK_VERSION(3,0,0)
>       form = g_object_new(GTK_TYPE_FORM, NULL);
>   #else
> !     form = gtk_type_new(gui_gtk_form_get_type());
>   #endif
>
>       return GTK_WIDGET(form);
>   }
>
>       void
> ! gui_gtk_form_put(
> !       GtkForm *form,
> !       GtkWidget       *child_widget,
> !       gint    x,
> !       gint    y)
>   {
>       GtkFormChild *child;
>
> ***************
> *** 151,172 ****
>       // that gtk_widget_set_parent() realizes the widget if it's visible
>       // and its parent is mapped.
>       if (gtk_widget_get_realized(GTK_WIDGET(form)))
> !       gtk_form_attach_child_window(form, child);
>
>       gtk_widget_set_parent(child_widget, GTK_WIDGET(form));
>
>       if (gtk_widget_get_realized(GTK_WIDGET(form))
>             && !gtk_widget_get_realized(child_widget))
> !       gtk_form_realize_child(form, child);
>
> !     gtk_form_position_child(form, child, TRUE);
>   }
>
>       void
> ! gtk_form_move(GtkForm *form,
> !             GtkWidget *child_widget,
> !             gint      x,
> !             gint      y)
>   {
>       GList *tmp_list;
>       GtkFormChild *child;
> --- 134,156 ----
>       // that gtk_widget_set_parent() realizes the widget if it's visible
>       // and its parent is mapped.
>       if (gtk_widget_get_realized(GTK_WIDGET(form)))
> !       form_attach_child_window(form, child);
>
>       gtk_widget_set_parent(child_widget, GTK_WIDGET(form));
>
>       if (gtk_widget_get_realized(GTK_WIDGET(form))
>             && !gtk_widget_get_realized(child_widget))
> !       form_realize_child(form, child);
>
> !     form_position_child(form, child, TRUE);
>   }
>
>       void
> ! gui_gtk_form_move(
> !       GtkForm *form,
> !       GtkWidget       *child_widget,
> !       gint    x,
> !       gint    y)
>   {
>       GList *tmp_list;
>       GtkFormChild *child;
> ***************
> *** 181,194 ****
>             child->x = x;
>             child->y = y;
>
> !           gtk_form_position_child(form, child, TRUE);
>             return;
>         }
>       }
>   }
>
>       void
> ! gtk_form_freeze(GtkForm *form)
>   {
>       g_return_if_fail(GTK_IS_FORM(form));
>
> --- 165,178 ----
>             child->x = x;
>             child->y = y;
>
> !           form_position_child(form, child, TRUE);
>             return;
>         }
>       }
>   }
>
>       void
> ! gui_gtk_form_freeze(GtkForm *form)
>   {
>       g_return_if_fail(GTK_IS_FORM(form));
>
> ***************
> *** 196,202 ****
>   }
>
>       void
> ! gtk_form_thaw(GtkForm *form)
>   {
>       g_return_if_fail(GTK_IS_FORM(form));
>
> --- 180,186 ----
>   }
>
>       void
> ! gui_gtk_form_thaw(GtkForm *form)
>   {
>       g_return_if_fail(GTK_IS_FORM(form));
>
> ***************
> *** 204,210 ****
>       {
>         if (!(--form->freeze_count))
>         {
> !           gtk_form_position_children(form);
>             gtk_widget_queue_draw(GTK_WIDGET(form));
>         }
>       }
> --- 188,194 ----
>       {
>         if (!(--form->freeze_count))
>         {
> !           form_position_children(form);
>             gtk_widget_queue_draw(GTK_WIDGET(form));
>         }
>       }
> ***************
> *** 215,221 ****
>   G_DEFINE_TYPE(GtkForm, gtk_form, GTK_TYPE_CONTAINER)
>   #else
>       GtkType
> ! gtk_form_get_type(void)
>   {
>       static GtkType form_type = 0;
>
> --- 199,205 ----
>   G_DEFINE_TYPE(GtkForm, gtk_form, GTK_TYPE_CONTAINER)
>   #else
>       GtkType
> ! gui_gtk_form_get_type(void)
>   {
>       static GtkType form_type = 0;
>
> ***************
> *** 227,234 ****
>         form_info.type_name = "GtkForm";
>         form_info.object_size = sizeof(GtkForm);
>         form_info.class_size = sizeof(GtkFormClass);
> !       form_info.class_init_func = (GtkClassInitFunc)gtk_form_class_init;
> !       form_info.object_init_func = (GtkObjectInitFunc)gtk_form_init;
>
>         form_type = gtk_type_unique(GTK_TYPE_CONTAINER, &form_info);
>       }
> --- 211,218 ----
>         form_info.type_name = "GtkForm";
>         form_info.object_size = sizeof(GtkForm);
>         form_info.class_size = sizeof(GtkFormClass);
> !       form_info.class_init_func = (GtkClassInitFunc)form_class_init;
> !       form_info.object_init_func = (GtkObjectInitFunc)form_init;
>
>         form_type = gtk_type_unique(GTK_TYPE_CONTAINER, &form_info);
>       }
> ***************
> *** 237,243 ****
>   #endif // !GTK_CHECK_VERSION(3,0,0)
>
>       static void
> ! gtk_form_class_init(GtkFormClass *klass)
>   {
>       GtkWidgetClass *widget_class;
>       GtkContainerClass *container_class;
> --- 221,227 ----
>   #endif // !GTK_CHECK_VERSION(3,0,0)
>
>       static void
> ! form_class_init(GtkFormClass *klass)
>   {
>       GtkWidgetClass *widget_class;
>       GtkContainerClass *container_class;
> ***************
> *** 249,276 ****
>       parent_class = gtk_type_class(gtk_container_get_type());
>   #endif
>
> !     widget_class->realize = gtk_form_realize;
> !     widget_class->unrealize = gtk_form_unrealize;
> !     widget_class->map = gtk_form_map;
>   #if GTK_CHECK_VERSION(3,0,0)
> !     widget_class->get_preferred_width = gtk_form_get_preferred_width;
> !     widget_class->get_preferred_height = gtk_form_get_preferred_height;
>   #else
> !     widget_class->size_request = gtk_form_size_request;
>   #endif
> !     widget_class->size_allocate = gtk_form_size_allocate;
>   #if GTK_CHECK_VERSION(3,0,0)
> !     widget_class->draw = gtk_form_draw;
>   #else
> !     widget_class->expose_event = gtk_form_expose;
>   #endif
>
> !     container_class->remove = gtk_form_remove;
> !     container_class->forall = gtk_form_forall;
>   }
>
>       static void
> ! gtk_form_init(GtkForm *form, void *g_class UNUSED)
>   {
>   #if GTK_CHECK_VERSION(3,0,0)
>       gtk_widget_set_has_window(GTK_WIDGET(form), TRUE);
> --- 233,260 ----
>       parent_class = gtk_type_class(gtk_container_get_type());
>   #endif
>
> !     widget_class->realize = form_realize;
> !     widget_class->unrealize = form_unrealize;
> !     widget_class->map = form_map;
>   #if GTK_CHECK_VERSION(3,0,0)
> !     widget_class->get_preferred_width = form_get_preferred_width;
> !     widget_class->get_preferred_height = form_get_preferred_height;
>   #else
> !     widget_class->size_request = form_size_request;
>   #endif
> !     widget_class->size_allocate = form_size_allocate;
>   #if GTK_CHECK_VERSION(3,0,0)
> !     widget_class->draw = form_draw;
>   #else
> !     widget_class->expose_event = form_expose;
>   #endif
>
> !     container_class->remove = form_remove;
> !     container_class->forall = form_forall;
>   }
>
>       static void
> ! form_init(GtkForm *form, void *g_class UNUSED)
>   {
>   #if GTK_CHECK_VERSION(3,0,0)
>       gtk_widget_set_has_window(GTK_WIDGET(form), TRUE);
> ***************
> *** 285,291 ****
>    */
>
>       static void
> ! gtk_form_realize(GtkWidget *widget)
>   {
>       GList *tmp_list;
>       GtkForm *form;
> --- 269,275 ----
>    */
>
>       static void
> ! form_realize(GtkWidget *widget)
>   {
>       GList *tmp_list;
>       GtkForm *form;
> ***************
> *** 353,362 ****
>       {
>         GtkFormChild *child = tmp_list->data;
>
> !       gtk_form_attach_child_window(form, child);
>
>         if (gtk_widget_get_visible(child->widget))
> !           gtk_form_realize_child(form, child);
>       }
>   }
>
> --- 337,346 ----
>       {
>         GtkFormChild *child = tmp_list->data;
>
> !       form_attach_child_window(form, child);
>
>         if (gtk_widget_get_visible(child->widget))
> !           form_realize_child(form, child);
>       }
>   }
>
> ***************
> *** 369,375 ****
>   // Well, I reckon at least the gdk_window_show(form->bin_window)
>   // is necessary.  GtkForm is anything but a usual container widget.
>       static void
> ! gtk_form_map(GtkWidget *widget)
>   {
>       GList *tmp_list;
>       GtkForm *form;
> --- 353,359 ----
>   // Well, I reckon at least the gdk_window_show(form->bin_window)
>   // is necessary.  GtkForm is anything but a usual container widget.
>       static void
> ! form_map(GtkWidget *widget)
>   {
>       GList *tmp_list;
>       GtkForm *form;
> ***************
> *** 394,400 ****
>   }
>
>       static void
> ! gtk_form_unrealize(GtkWidget *widget)
>   {
>       GList *tmp_list;
>       GtkForm *form;
> --- 378,384 ----
>   }
>
>       static void
> ! form_unrealize(GtkWidget *widget)
>   {
>       GList *tmp_list;
>       GtkForm *form;
> ***************
> *** 416,425 ****
>         if (child->window != NULL)
>         {
>             g_signal_handlers_disconnect_by_func(G_OBJECT(child->widget),
> !                   FUNC2GENERIC(gtk_form_child_map),
>                     child);
>             g_signal_handlers_disconnect_by_func(G_OBJECT(child->widget),
> !                   FUNC2GENERIC(gtk_form_child_unmap),
>                     child);
>
>             gdk_window_set_user_data(child->window, NULL);
> --- 400,409 ----
>         if (child->window != NULL)
>         {
>             g_signal_handlers_disconnect_by_func(G_OBJECT(child->widget),
> !                   FUNC2GENERIC(form_child_map),
>                     child);
>             g_signal_handlers_disconnect_by_func(G_OBJECT(child->widget),
> !                   FUNC2GENERIC(form_child_unmap),
>                     child);
>
>             gdk_window_set_user_data(child->window, NULL);
> ***************
> *** 441,447 ****
>   }
>
>       static void
> ! gtk_form_size_request(GtkWidget *widget, GtkRequisition *requisition)
>   {
>       g_return_if_fail(GTK_IS_FORM(widget));
>       g_return_if_fail(requisition != NULL);
> --- 425,431 ----
>   }
>
>       static void
> ! form_size_request(GtkWidget *widget, GtkRequisition *requisition)
>   {
>       g_return_if_fail(GTK_IS_FORM(widget));
>       g_return_if_fail(requisition != NULL);
> ***************
> *** 452,477 ****
>
>   #if GTK_CHECK_VERSION(3,0,0)
>       static void
> ! gtk_form_get_preferred_width(GtkWidget *widget,
>                              gint      *minimal_width,
>                              gint      *natural_width)
>   {
>       GtkRequisition requisition;
>
> !     gtk_form_size_request(widget, &requisition);
>
>       *minimal_width = requisition.width;
>       *natural_width = requisition.width;
>   }
>
>       static void
> ! gtk_form_get_preferred_height(GtkWidget *widget,
>                               gint      *minimal_height,
>                               gint      *natural_height)
>   {
>       GtkRequisition requisition;
>
> !     gtk_form_size_request(widget, &requisition);
>
>       *minimal_height = requisition.height;
>       *natural_height = requisition.height;
> --- 436,461 ----
>
>   #if GTK_CHECK_VERSION(3,0,0)
>       static void
> ! form_get_preferred_width(GtkWidget *widget,
>                              gint      *minimal_width,
>                              gint      *natural_width)
>   {
>       GtkRequisition requisition;
>
> !     form_size_request(widget, &requisition);
>
>       *minimal_width = requisition.width;
>       *natural_width = requisition.width;
>   }
>
>       static void
> ! form_get_preferred_height(GtkWidget *widget,
>                               gint      *minimal_height,
>                               gint      *natural_height)
>   {
>       GtkRequisition requisition;
>
> !     form_size_request(widget, &requisition);
>
>       *minimal_height = requisition.height;
>       *natural_height = requisition.height;
> ***************
> *** 479,485 ****
>   #endif // GTK_CHECK_VERSION(3,0,0)
>
>       static void
> ! gtk_form_size_allocate(GtkWidget *widget, GtkAllocation *allocation)
>   {
>       GList *tmp_list;
>       GtkForm *form;
> --- 463,469 ----
>   #endif // GTK_CHECK_VERSION(3,0,0)
>
>       static void
> ! form_size_allocate(GtkWidget *widget, GtkAllocation *allocation)
>   {
>       GList *tmp_list;
>       GtkForm *form;
> ***************
> *** 507,513 ****
>         while (tmp_list)
>         {
>             GtkFormChild *child = tmp_list->data;
> !           gtk_form_position_child(form, child, TRUE);
>
>             tmp_list = tmp_list->next;
>         }
> --- 491,497 ----
>         while (tmp_list)
>         {
>             GtkFormChild *child = tmp_list->data;
> !           form_position_child(form, child, TRUE);
>
>             tmp_list = tmp_list->next;
>         }
> ***************
> *** 524,530 ****
>       }
>       gtk_widget_set_allocation(widget, allocation);
>       if (need_reposition)
> !       gtk_form_send_configure(form);
>   }
>
>   #if GTK_CHECK_VERSION(3,0,0)
> --- 508,514 ----
>       }
>       gtk_widget_set_allocation(widget, allocation);
>       if (need_reposition)
> !       form_send_configure(form);
>   }
>
>   #if GTK_CHECK_VERSION(3,0,0)
> ***************
> *** 538,544 ****
>   }
>
>       static gboolean
> ! gtk_form_draw(GtkWidget *widget, cairo_t *cr)
>   {
>       GList   *tmp_list = NULL;
>       GtkForm *form     = NULL;
> --- 522,528 ----
>   }
>
>       static gboolean
> ! form_draw(GtkWidget *widget, cairo_t *cr)
>   {
>       GList   *tmp_list = NULL;
>       GtkForm *form     = NULL;
> ***************
> *** 563,571 ****
>             // gtk_widget_draw() fails and the relevant scrollbar won't
>             // appear on the screen.
>             //
> !           // Calling gtk_form_position_child() like this is one of ways
>             // to make sure of that.
> !           gtk_form_position_child(form, formchild, TRUE);
>
>             gtk_form_render_background(formchild->widget, cr);
>         }
> --- 547,555 ----
>             // gtk_widget_draw() fails and the relevant scrollbar won't
>             // appear on the screen.
>             //
> !           // Calling form_position_child() like this is one of ways
>             // to make sure of that.
> !           form_position_child(form, formchild, TRUE);
>
>             gtk_form_render_background(formchild->widget, cr);
>         }
> ***************
> *** 575,581 ****
>   }
>   #else // !GTK_CHECK_VERSION(3,0,0)
>       static gint
> ! gtk_form_expose(GtkWidget *widget, GdkEventExpose *event)
>   {
>       GList   *tmp_list;
>       GtkForm *form;
> --- 559,565 ----
>   }
>   #else // !GTK_CHECK_VERSION(3,0,0)
>       static gint
> ! form_expose(GtkWidget *widget, GdkEventExpose *event)
>   {
>       GList   *tmp_list;
>       GtkForm *form;
> ***************
> *** 598,604 ****
>
>   // Container method
>       static void
> ! gtk_form_remove(GtkContainer *container, GtkWidget *widget)
>   {
>       GList *tmp_list;
>       GtkForm *form;
> --- 582,588 ----
>
>   // Container method
>       static void
> ! form_remove(GtkContainer *container, GtkWidget *widget)
>   {
>       GList *tmp_list;
>       GtkForm *form;
> ***************
> *** 625,633 ****
>         if (child->window)
>         {
>             g_signal_handlers_disconnect_by_func(G_OBJECT(child->widget),
> !                   FUNC2GENERIC(&gtk_form_child_map), child);
>             g_signal_handlers_disconnect_by_func(G_OBJECT(child->widget),
> !                   FUNC2GENERIC(&gtk_form_child_unmap), child);
>
>             // FIXME: This will cause problems for reparenting NO_WINDOW
>             // widgets out of a GtkForm
> --- 609,617 ----
>         if (child->window)
>         {
>             g_signal_handlers_disconnect_by_func(G_OBJECT(child->widget),
> !                   FUNC2GENERIC(&form_child_map), child);
>             g_signal_handlers_disconnect_by_func(G_OBJECT(child->widget),
> !                   FUNC2GENERIC(&form_child_unmap), child);
>
>             // FIXME: This will cause problems for reparenting NO_WINDOW
>             // widgets out of a GtkForm
> ***************
> *** 646,652 ****
>   }
>
>       static void
> ! gtk_form_forall(GtkContainer  *container,
>                 gboolean        include_internals UNUSED,
>                 GtkCallback     callback,
>                 gpointer        callback_data)
> --- 630,636 ----
>   }
>
>       static void
> ! form_forall(GtkContainer      *container,
>                 gboolean        include_internals UNUSED,
>                 GtkCallback     callback,
>                 gpointer        callback_data)
> ***************
> *** 673,679 ****
>   // Operations on children
>
>       static void
> ! gtk_form_attach_child_window(GtkForm *form, GtkFormChild *child)
>   {
>       if (child->window != NULL)
>         return; // been there, done that
> --- 657,663 ----
>   // Operations on children
>
>       static void
> ! form_attach_child_window(GtkForm *form, GtkFormChild *child)
>   {
>       if (child->window != NULL)
>         return; // been there, done that
> ***************
> *** 734,742 ****
>          * alongside with the actual widget.
>          */
>         g_signal_connect(G_OBJECT(child->widget), "map",
> !                        G_CALLBACK(&gtk_form_child_map), child);
>         g_signal_connect(G_OBJECT(child->widget), "unmap",
> !                        G_CALLBACK(&gtk_form_child_unmap), child);
>       }
>       else if (!gtk_widget_get_realized(child->widget))
>       {
> --- 718,726 ----
>          * alongside with the actual widget.
>          */
>         g_signal_connect(G_OBJECT(child->widget), "map",
> !                        G_CALLBACK(&form_child_map), child);
>         g_signal_connect(G_OBJECT(child->widget), "unmap",
> !                        G_CALLBACK(&form_child_unmap), child);
>       }
>       else if (!gtk_widget_get_realized(child->widget))
>       {
> ***************
> *** 745,759 ****
>   }
>
>       static void
> ! gtk_form_realize_child(GtkForm *form, GtkFormChild *child)
>   {
> !     gtk_form_attach_child_window(form, child);
>       gtk_widget_realize(child->widget);
>   }
>
>       static void
> ! gtk_form_position_child(GtkForm *form, GtkFormChild *child,
> !                       gboolean force_allocate)
>   {
>       gint x;
>       gint y;
> --- 729,742 ----
>   }
>
>       static void
> ! form_realize_child(GtkForm *form, GtkFormChild *child)
>   {
> !     form_attach_child_window(form, child);
>       gtk_widget_realize(child->widget);
>   }
>
>       static void
> ! form_position_child(GtkForm *form, GtkFormChild *child, gboolean 
> force_allocate)
>   {
>       gint x;
>       gint y;
> ***************
> *** 826,841 ****
>   }
>
>       static void
> ! gtk_form_position_children(GtkForm *form)
>   {
>       GList *tmp_list;
>
>       for (tmp_list = form->children; tmp_list; tmp_list = tmp_list->next)
> !       gtk_form_position_child(form, tmp_list->data, FALSE);
>   }
>
>       void
> ! gtk_form_move_resize(GtkForm *form, GtkWidget *widget,
>                      gint x, gint y, gint w, gint h)
>   {
>   #if GTK_CHECK_VERSION(3,0,0)
> --- 809,824 ----
>   }
>
>       static void
> ! form_position_children(GtkForm *form)
>   {
>       GList *tmp_list;
>
>       for (tmp_list = form->children; tmp_list; tmp_list = tmp_list->next)
> !       form_position_child(form, tmp_list->data, FALSE);
>   }
>
>       void
> ! gui_gtk_form_move_resize(GtkForm *form, GtkWidget *widget,
>                      gint x, gint y, gint w, gint h)
>   {
>   #if GTK_CHECK_VERSION(3,0,0)
> ***************
> *** 845,855 ****
>       widget->requisition.height = h;
>   #endif
>
> !     gtk_form_move(form, widget, x, y);
>   }
>
>       static void
> ! gtk_form_send_configure(GtkForm *form)
>   {
>       GtkWidget *widget;
>       GdkEventConfigure event;
> --- 828,838 ----
>       widget->requisition.height = h;
>   #endif
>
> !     gui_gtk_form_move(form, widget, x, y);
>   }
>
>       static void
> ! form_send_configure(GtkForm *form)
>   {
>       GtkWidget *widget;
>       GdkEventConfigure event;
> ***************
> *** 869,875 ****
>   }
>
>       static void
> ! gtk_form_child_map(GtkWidget *widget UNUSED, gpointer user_data)
>   {
>       GtkFormChild *child;
>
> --- 852,858 ----
>   }
>
>       static void
> ! form_child_map(GtkWidget *widget UNUSED, gpointer user_data)
>   {
>       GtkFormChild *child;
>
> ***************
> *** 880,886 ****
>   }
>
>       static void
> ! gtk_form_child_unmap(GtkWidget *widget UNUSED, gpointer user_data)
>   {
>       GtkFormChild *child;
>
> --- 863,869 ----
>   }
>
>       static void
> ! form_child_unmap(GtkWidget *widget UNUSED, gpointer user_data)
>   {
>       GtkFormChild *child;
>
> *** ../vim-8.2.1877/src/gui_gtk_f.h     2019-11-30 18:24:07.000000000 +0100
> --- src/gui_gtk_f.h     2020-10-21 16:09:02.242682090 +0200
> ***************
> *** 21,27 ****
>   extern "C" {
>   #endif
>
> ! #define GTK_TYPE_FORM                (gtk_form_get_type ())
>   #ifdef USE_GTK3
>   #define GTK_FORM(obj)                (G_TYPE_CHECK_INSTANCE_CAST((obj), 
> GTK_TYPE_FORM, GtkForm))
>   #define GTK_FORM_CLASS(klass)        (G_TYPE_CHECK_CLASS_CAST((klass), 
> GTK_TYPE_FORM, GtkFormClass))
> --- 21,27 ----
>   extern "C" {
>   #endif
>
> ! #define GTK_TYPE_FORM                (gui_gtk_form_get_type ())
>   #ifdef USE_GTK3
>   #define GTK_FORM(obj)                (G_TYPE_CHECK_INSTANCE_CAST((obj), 
> GTK_TYPE_FORM, GtkForm))
>   #define GTK_FORM_CLASS(klass)        (G_TYPE_CHECK_CLASS_CAST((klass), 
> GTK_TYPE_FORM, GtkFormClass))
> ***************
> *** 53,81 ****
>   };
>
>   #ifdef USE_GTK3
> ! GType gtk_form_get_type(void);
>   #else
> ! GtkType gtk_form_get_type(void);
>   #endif
>
> ! GtkWidget *gtk_form_new(void);
>
> ! void gtk_form_put(GtkForm * form, GtkWidget * widget,
> !       gint x, gint y);
>
> ! void gtk_form_move(GtkForm *form, GtkWidget * widget,
> !       gint x, gint y);
>
> ! void gtk_form_move_resize(GtkForm * form, GtkWidget * widget,
> !       gint x, gint y,
> !       gint w, gint h);
>
>   // These disable and enable moving and repainting respectively.  If you
>   // want to update the layout's offsets but do not want it to repaint
>   // itself, you should use these functions.
>
> ! void gtk_form_freeze(GtkForm *form);
> ! void gtk_form_thaw(GtkForm *form);
>
>
>   #ifdef __cplusplus
> --- 53,77 ----
>   };
>
>   #ifdef USE_GTK3
> ! GType gui_gtk_form_get_type(void);
>   #else
> ! GtkType gui_gtk_form_get_type(void);
>   #endif
>
> ! GtkWidget *gui_gtk_form_new(void);
>
> ! void gui_gtk_form_put(GtkForm * form, GtkWidget * widget, gint x, gint y);
>
> ! void gui_gtk_form_move(GtkForm *form, GtkWidget * widget, gint x, gint y);
>
> ! void gui_gtk_form_move_resize(GtkForm * form, GtkWidget * widget, gint x, 
> gint y, gint w, gint h);
>
>   // These disable and enable moving and repainting respectively.  If you
>   // want to update the layout's offsets but do not want it to repaint
>   // itself, you should use these functions.
>
> ! void gui_gtk_form_freeze(GtkForm *form);
> ! void gui_gtk_form_thaw(GtkForm *form);
>
>
>   #ifdef __cplusplus
> *** ../vim-8.2.1877/src/gui_gtk.c       2020-09-09 20:58:52.008764176 +0200
> --- src/gui_gtk.c       2020-10-21 16:06:49.331102500 +0200
> ***************
> *** 810,816 ****
>       void
>   gui_mch_set_text_area_pos(int x, int y, int w, int h)
>   {
> !     gtk_form_move_resize(GTK_FORM(gui.formwin), gui.drawarea, x, y, w, h);
>   }
>
>
> --- 810,816 ----
>       void
>   gui_mch_set_text_area_pos(int x, int y, int w, int h)
>   {
> !     gui_gtk_form_move_resize(GTK_FORM(gui.formwin), gui.drawarea, x, y, w, 
> h);
>   }
>
>
> ***************
> *** 1005,1011 ****
>   gui_mch_set_scrollbar_pos(scrollbar_T *sb, int x, int y, int w, int h)
>   {
>       if (sb->id != NULL)
> !       gtk_form_move_resize(GTK_FORM(gui.formwin), sb->id, x, y, w, h);
>   }
>
>       int
> --- 1005,1011 ----
>   gui_mch_set_scrollbar_pos(scrollbar_T *sb, int x, int y, int w, int h)
>   {
>       if (sb->id != NULL)
> !       gui_gtk_form_move_resize(GTK_FORM(gui.formwin), sb->id, x, y, w, h);
>   }
>
>       int
> ***************
> *** 1111,1117 ****
>         GtkAdjustment *adjustment;
>
>         gtk_widget_set_can_focus(sb->id, FALSE);
> !       gtk_form_put(GTK_FORM(gui.formwin), sb->id, 0, 0);
>
>         adjustment = gtk_range_get_adjustment(GTK_RANGE(sb->id));
>
> --- 1111,1117 ----
>         GtkAdjustment *adjustment;
>
>         gtk_widget_set_can_focus(sb->id, FALSE);
> !       gui_gtk_form_put(GTK_FORM(gui.formwin), sb->id, 0, 0);
>
>         adjustment = gtk_range_get_adjustment(GTK_RANGE(sb->id));
>
> *** ../vim-8.2.1877/src/gui_gtk_x11.c   2020-10-07 16:12:33.905930345 +0200
> --- src/gui_gtk_x11.c   2020-10-21 16:08:03.698866995 +0200
> ***************
> *** 3811,3817 ****
>             G_CALLBACK(on_tabline_menu), G_OBJECT(tabline_menu));
>   #endif // FEAT_GUI_TABLINE
>
> !     gui.formwin = gtk_form_new();
>       gtk_container_set_border_width(GTK_CONTAINER(gui.formwin), 0);
>   #if !GTK_CHECK_VERSION(3,0,0)
>       gtk_widget_set_events(gui.formwin, GDK_EXPOSURE_MASK);
> --- 3811,3817 ----
>             G_CALLBACK(on_tabline_menu), G_OBJECT(tabline_menu));
>   #endif // FEAT_GUI_TABLINE
>
> !     gui.formwin = gui_gtk_form_new();
>       gtk_container_set_border_width(GTK_CONTAINER(gui.formwin), 0);
>   #if !GTK_CHECK_VERSION(3,0,0)
>       gtk_widget_set_events(gui.formwin, GDK_EXPOSURE_MASK);
> ***************
> *** 3840,3846 ****
>                           GDK_POINTER_MOTION_HINT_MASK);
>
>       gtk_widget_show(gui.drawarea);
> !     gtk_form_put(GTK_FORM(gui.formwin), gui.drawarea, 0, 0);
>       gtk_widget_show(gui.formwin);
>       gtk_box_pack_start(GTK_BOX(vbox), gui.formwin, TRUE, TRUE, 0);
>
> --- 3840,3846 ----
>                           GDK_POINTER_MOTION_HINT_MASK);
>
>       gtk_widget_show(gui.drawarea);
> !     gui_gtk_form_put(GTK_FORM(gui.formwin), gui.drawarea, 0, 0);
>       gtk_widget_show(gui.formwin);
>       gtk_box_pack_start(GTK_BOX(vbox), gui.formwin, TRUE, TRUE, 0);
>
> ***************
> *** 4119,4127 ****
>       if (gtk_socket_id != 0)
>         usable_height -= (gui.char_height - (gui.char_height/2)); // sic.
>
> !     gtk_form_freeze(GTK_FORM(gui.formwin));
>       gui_resize_shell(event->width, usable_height);
> !     gtk_form_thaw(GTK_FORM(gui.formwin));
>
>       return TRUE;
>   }
> --- 4119,4127 ----
>       if (gtk_socket_id != 0)
>         usable_height -= (gui.char_height - (gui.char_height/2)); // sic.
>
> !     gui_gtk_form_freeze(GTK_FORM(gui.formwin));
>       gui_resize_shell(event->width, usable_height);
> !     gui_gtk_form_thaw(GTK_FORM(gui.formwin));
>
>       return TRUE;
>   }
> *** ../vim-8.2.1877/src/version.c       2020-10-21 14:49:05.033959899 +0200
> --- src/version.c       2020-10-21 16:09:39.598564319 +0200
> ***************
> *** 752,753 ****
> --- 752,755 ----
>   {   /* Add new patch number below this line */
> + /**/
> +     1878,
>   /**/
>
> --
> hundred-and-one symptoms of being an internet addict:
> 94. Now admit it... How many of you have made "modem noises" into
>     the phone just to see if it was possible? :-)
>
>  /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
> ///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
> \\\  an exciting new programming language -- http://www.Zimbu.org        ///
>  \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
>
> --
> --
> 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 on the web visit 
> https://groups.google.com/d/msgid/vim_dev/202010211410.09LEAwNU063934%40masaka.moolenaar.net.

-- 
-- 
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 on the web visit 
https://groups.google.com/d/msgid/vim_dev/CAJkCKXsKnzm976pbO_VYiGkv%2BaEKiqg7q%2Bd4V_V_g5%2BbqUOtsg%40mail.gmail.com.

Raspunde prin e-mail lui