]> git.pld-linux.org Git - packages/vim.git/commitdiff
- outdated
authorJakub Bogusz <qboosh@pld-linux.org>
Sat, 29 Oct 2005 12:15:46 +0000 (12:15 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    vim-bonobo-20040115.patch -> 1.2

vim-bonobo-20040115.patch [deleted file]

diff --git a/vim-bonobo-20040115.patch b/vim-bonobo-20040115.patch
deleted file mode 100644 (file)
index 8e5708d..0000000
+++ /dev/null
@@ -1,6086 +0,0 @@
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/Make_container.mak vim/src/Make_container.mak
---- vimcopy/src/Make_container.mak     Wed Dec 31 18:00:00 1969
-+++ vim/src/Make_container.mak Sat Jul 26 13:16:46 2003
-@@ -0,0 +1,11 @@
-+gnomeccFlags = `pkg-config --cflags libgnomeui-2.0 libgnome-2.0`
-+ccFlags = -g -c ${gnomeccFlags}
-+ldFlags = `pkg-config --libs libgnomeui-2.0 libgnome-2.0`
-+
-+all: container
-+
-+container: container.o
-+      gcc -o container ${ldFlags} container.o
-+
-+%.o: %.c
-+      gcc ${ccFlags} $< -o $@
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/Makefile vim/src/Makefile
---- vimcopy/src/Makefile       Thu Jan 15 10:17:10 2004
-+++ vim/src/Makefile   Thu Jan 15 10:13:18 2004
-@@ -1041,6 +1041,18 @@
- GTK_MAN_TARGETS = installghelplinks
- GTK_TESTTARGET = gui
-+### Bonobo GUI
-+BONOBO_SRC    = $(GTK_SRC)
-+BONOBO_OBJ    = $(GTK_OBJ)
-+BONOBO_DEFS   = $(GTK_DEFS) 
-+BONOBO_IPATH  = $(GTK_IPATH)
-+BONOBO_LIBS_DIR       =  $(GTK_LIBS_DIR)
-+BONOBO_LIBS1  = $(GTK_LIBS1)
-+BONOBO_LIBS2  =  $(GTK_LIBS2)
-+BONOBO_TARGETS        =  $(GTK_TARGETS) vim-factory
-+BONOBO_MAN_TARGETS =  $(GTK_MAN_TARGETS)
-+BONOBO_TESTTARGET =  $(GTK_TESTTARGET)
-+
- ### Motif GUI
- MOTIF_SRC     = gui.c gui_motif.c gui_x11.c pty.c gui_beval.c
- MOTIF_OBJ     = objects/gui.o objects/gui_motif.o objects/gui_x11.o \
-@@ -1323,6 +1335,10 @@
-       objects/fileio.o \
-       objects/fold.o \
-       objects/getchar.o \
-+        objects/gtkhtml_editor.o \
-+        objects/gtkhtml_editor_common.o \
-+        objects/gtkhtml_editor_skels.o \
-+        objects/gtkhtml_editor_stubs.o \
-       $(HANGULIN_OBJ) \
-       objects/if_cscope.o \
-       objects/if_xcmdsrv.o \
-@@ -1351,6 +1367,9 @@
-       objects/term.o \
-       objects/ui.o \
-       objects/undo.o \
-+      objects/vim_bonobo_main.o \
-+      objects/vim_bonobo_factory.o \
-+      objects/vim_bonobo_control.o \
-       objects/window.o \
-       $(GUI_OBJ) \
-       $(PERL_OBJ) \
-@@ -1360,7 +1379,7 @@
-       $(OS_EXTRA_OBJ) \
-       $(WORKSHOP_OBJ) \
-       $(NETBEANS_OBJ) \
--      $(WSDEBUG_OBJ)
-+      $(WSDEBUG_OBJ)
- PRO_AUTO = \
-       buffer.pro \
-@@ -1418,7 +1437,7 @@
-       os_mswin.pro os_beos.pro os_vms.pro os_riscos.pro $(PERL_PRO)
- # Default target is making the executable and tools
--all: $(VIMTARGET) $(TOOLS) languages
-+all: $(VIMTARGET) $(TOOLS) $(EXTRA_TARGETS) languages
- tools: $(TOOLS)
-@@ -1596,6 +1615,10 @@
- testclean:
-       cd testdir; $(MAKE) -f Makefile clean
-+vim-factory: objects/vim_proxy_factory.o
-+      gcc -o vim-factory $(ALL_LIB_DIRS) $(LDFLAGS) objects/vim_proxy_factory.o $(ALL_LIBS)
-+
-+
- #
- # Avoid overwriting an existing executable, somebody might be running it and
- # overwriting it could cause it to crash.  Deleting it is OK, it won't be
-@@ -1622,6 +1645,23 @@
- # may create a link to the new executable from /usr/bin/vi
-       -$(LINKIT)
-+Vim_Control.server: Vim_Control.server.in auto/config.mk
-+      rm -f Vim_Control.server Vim_Control.server.tmp
-+      sed -e 's,@DEST_BIN\@,$(DEST_BIN),g' \
-+          -e 's,@VIMNAME\@,$(VIMNAME),g' \
-+              Vim_Control.server.in >Vim_Control.server.tmp
-+      mv Vim_Control.server.tmp Vim_Control.server
-+
-+installbonobo: installvimbin
-+#     install factory to destbin
-+      $(INSTALL_PROG) vim-factory $(DEST_BIN)
-+      $(STRIP) $(DEST_BIN)/vim-factory
-+      
-+#     install server file to /usr/lib/bonobo/servers (modulo prefix)
-+      -$(SHELL) ./mkinstalldirs $(DESTDIR)$(prefix)/lib/bonobo/servers
-+      $(INSTALL_PROG) Vim_Control.server $(DESTDIR)$(prefix)/lib/bonobo/servers
-+
-+
- # install the help files; first adjust the contents for the location
- installruntime: $(HELPSOURCE)/vim.1 $(DEST_MAN) $(DEST_VIM) $(DEST_RT) \
-               $(DEST_HELP) $(DEST_PRINT) $(DEST_COL) $(DEST_SYN) $(DEST_IND) \
-@@ -1965,6 +2005,7 @@
-       if test -d $(PODIR); then \
-               cd $(PODIR); $(MAKE) prefix=$(DESTDIR)$(prefix) clean; \
-       fi
-+      -rm -f Vim_Control.server vim-factory vim-component
- # Make a shadow directory for compilation on another system or with different
- # features.
-@@ -2172,6 +2213,18 @@
- objects/gui_mac.o: gui_mac.c
-       $(CCC) -o $@ gui_mac.c
-+objects/gtkhtml_editor.o: gtkhtml_editor.c
-+      $(CCC) -o $@ gtkhtml_editor.c
-+
-+objects/gtkhtml_editor_common.o: gtkhtml_editor_common.c
-+      $(CCC) -o $@ gtkhtml_editor_common.c
-+
-+objects/gtkhtml_editor_skels.o: gtkhtml_editor_skels.c
-+      $(CCC) -o $@ gtkhtml_editor_skels.c
-+
-+objects/gtkhtml_editor_stubs.o: gtkhtml_editor_stubs.c
-+      $(CCC) -o $@ gtkhtml_editor_stubs.c
-+
- objects/hangulin.o: hangulin.c
-       $(CCC) -o $@ hangulin.c
-@@ -2295,6 +2348,18 @@
- objects/undo.o: undo.c
-       $(CCC) -o $@ undo.c
-+objects/vim_bonobo_control.o: vim_bonobo_control.c
-+      $(CCC) -o $@ vim_bonobo_control.c
-+
-+objects/vim_bonobo_factory.o: vim_bonobo_factory.c
-+      $(CCC) -o $@ vim_bonobo_factory.c
-+
-+objects/vim_bonobo_main.o: vim_bonobo_main.c
-+      $(CCC) -o $@ vim_bonobo_main.c
-+
-+objects/vim_proxy_factory.o: vim_proxy_factory.c
-+      $(CCC) -o $@ vim_proxy_factory.c
-+
- objects/window.o: window.c
-       $(CCC) -o $@ window.c
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/Vim_Control.server.in vim/src/Vim_Control.server.in
---- vimcopy/src/Vim_Control.server.in  Wed Dec 31 18:00:00 1969
-+++ vim/src/Vim_Control.server.in      Sat Jan 10 10:45:47 2004
-@@ -0,0 +1,42 @@
-+<oaf_info>
-+
-+<oaf_server iid="OAFIID:Vim_Proxy_Factory" type="exe" location="@DEST_BIN@/vim-factory">
-+  <oaf_attribute name="repo_ids" type="stringv">
-+    <item value="IDL:Bonobo/GenericFactory:1.0"/>
-+  </oaf_attribute>
-+  <oaf_attribute name="name" type="string" value="Vim Control factory"/>
-+  <oaf_attribute name="description" type="string" value="Vim Control factory"/>
-+</oaf_server>
-+
-+<oaf_server iid="OAFIID:Vim_Control_Factory" type="exe" location="@DEST_BIN@/@VIMNAME@">
-+  <oaf_attribute name="repo_ids" type="stringv">
-+    <item value="IDL:Bonobo/GenericFactory:1.0"/>
-+  </oaf_attribute>
-+  <oaf_attribute name="name" type="string" value="Vim Control factory"/>
-+  <oaf_attribute name="description" type="string" value="Vim Control factory"/>
-+</oaf_server>
-+
-+<oaf_server iid="OAFIID:Vim_Control" type="factory"
-+ location="OAFIID:Vim_Proxy_Factory">
-+  <oaf_attribute name="repo_ids" type="stringv">
-+    <item value="IDL:Bonobo/Unknown:1.0"/>
-+    <item value="IDL:Bonobo/Control:1.0"/>
-+    <item value="IDL:Bonobo/ItemContainer:1.0"/>
-+    <item value="IDL:Bonobo/PersistStream:1.0"/>
-+    <item value="IDL:Bonobo/PersistFile:1.0"/>
-+    <item value="IDL:Bonobo/Persist:1.0"/>
-+    <item value="IDL:Nautilus/View:1.0"/>
-+  </oaf_attribute>
-+  <oaf_attribute name="name" type="string" value="Vim Control"/>
-+  <oaf_attribute name="description" type="string" value="Vim Control"/>
-+  <oaf_attribute name="bonobo:editable" type="boolean" value="false"/>
-+  <oaf_attribute name="bonobo:supported_mime_types" type="stringv">
-+    <item value="text/plain"/>
-+    <item value="text/*"/>
-+  </oaf_attribute>
-+  <oaf_attribute name="nautilus:view_as_name" type="string" value="Text"/>
-+  <oaf_attribute name="nautilus:view_as_label" type="string" value="View/Edit in Vim"/>
-+  <oaf_attribute name="nautilus:viewer_label" type="string" value="Vim"/>
-+</oaf_server>
-+
-+</oaf_info>
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/buffer.c vim/src/buffer.c
---- vimcopy/src/buffer.c       Sat Jan 10 13:10:01 2004
-+++ vim/src/buffer.c   Sat Jan 10 13:06:38 2004
-@@ -28,6 +28,10 @@
- #include "vim.h"
-+#if defined(FEAT_GUI_COMPONENT) && defined(FEAT_GUI_GNOME)
-+#include "vim_bonobo_control.h"
-+#endif
-+
- #if defined(FEAT_CMDL_COMPL) || defined(FEAT_LISTCMDS) || defined(FEAT_EVAL) || defined(FEAT_PERL)
- static char_u *buflist_match __ARGS((regprog_T *prog, buf_T *buf));
- # define HAVE_BUFLIST_MATCH
-@@ -132,10 +136,20 @@
-       if (curbuf->b_help)
-           fix_help_buffer();
-     }
--    else if (read_stdin)
-+    else if (read_stdin
-+#if defined(FEAT_GUI_COMPONENT) && defined(FEAT_GUI_GNOME)
-+                || read_from_container
-+#endif
-+            )
-     {
-       int             save_bin = curbuf->b_p_bin;
-       linenr_T        line_count;
-+#if defined(FEAT_GUI_COMPONENT) && defined(FEAT_GUI_GNOME)
-+        int flags = READ_NEW + READ_EMB_STREAM;
-+      curbuf->emb_buffer = TRUE;
-+#else
-+        int flags = READ_NEW + READ_STDIN;
-+#endif
-       /*
-        * First read the text in binary mode into the buffer.
-@@ -145,7 +159,7 @@
-        */
-       curbuf->b_p_bin = TRUE;
-       retval = readfile(NULL, NULL, (linenr_T)0,
--                (linenr_T)0, (linenr_T)MAXLNUM, eap, READ_NEW + READ_STDIN);
-+                (linenr_T)0, (linenr_T)MAXLNUM, eap, flags);
-       curbuf->b_p_bin = save_bin;
-       if (retval == OK)
-       {
-@@ -167,14 +181,21 @@
-           /* Put the cursor on the first line. */
-           curwin->w_cursor.lnum = 1;
-           curwin->w_cursor.col = 0;
-+#if defined(FEAT_GUI_COMPONENT) && defined(FEAT_GUI_GNOME)
-+            if (read_stdin) 
-+            {
-+#endif
- #ifdef FEAT_AUTOCMD
- # ifdef FEAT_EVAL
--          apply_autocmds_retval(EVENT_STDINREADPOST, NULL, NULL, FALSE,
-+                apply_autocmds_retval(EVENT_STDINREADPOST, NULL, NULL, FALSE,
-                                                       curbuf, &retval);
- # else
--          apply_autocmds(EVENT_STDINREADPOST, NULL, NULL, FALSE, curbuf);
-+                apply_autocmds(EVENT_STDINREADPOST, NULL, NULL, FALSE, curbuf);
- # endif
- #endif
-+#if defined(FEAT_GUI_COMPONENT) && defined(FEAT_GUI_GNOME)
-+            }
-+#endif
-       }
-     }
-@@ -4547,6 +4568,11 @@
-       if (buf->b_sfname != NULL)
-           return (char *)buf->b_sfname;
-       return "[Scratch]";
-+    }
-+#endif
-+#if defined(FEAT_QUICKFIX) && defined(FEAT_GUI_COMPONENT)
-+    if ( buf->emb_buffer ) {
-+      return "[Embedded File]";
-     }
- #endif
-     if (buf->b_fname == NULL)
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/config.h.in vim/src/config.h.in
---- vimcopy/src/config.h.in    Mon May 26 10:45:01 2003
-+++ vim/src/config.h.in        Sat Jul 26 13:16:46 2003
-@@ -316,6 +316,9 @@
- /* Define if GTK+ multihead support is available (requires GTK+ >= 2.1.1). */
- #undef HAVE_GTK_MULTIHEAD
-+/* Define if you want component (i.e. Bonobo) support. */
-+#undef FEAT_GUI_COMPONENT
-+ 
- /* Define if your X has own locale library */
- #undef X_LOCALE
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/config.mk.in vim/src/config.mk.in
---- vimcopy/src/config.mk.in   Sat Jan 10 13:10:01 2004
-+++ vim/src/config.mk.in       Thu Jan 15 09:50:04 2004
-@@ -106,6 +106,9 @@
- ### Prefix for location of man pages
- MANDIR                = @mandir@
-+### Extra targets to be built by default
-+EXTRA_TARGETS = @EXTRA_TARGETS@
-+
- ### Do we have a GUI
- GUI_INC_LOC   = @GUI_INC_LOC@
- GUI_LIB_LOC   = @GUI_LIB_LOC@
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/configure.in vim/src/configure.in
---- vimcopy/src/configure.in   Sat Jan 10 13:10:01 2004
-+++ vim/src/configure.in       Thu Jan 15 09:48:54 2004
-@@ -56,6 +56,7 @@
-   sh ./toolcheck 1>&AC_FD_MSG
- fi
-+EXTRA_TARGETS="";
- OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
- dnl Check for BeOS, which needs an extra source file
-@@ -123,6 +124,7 @@
- AC_SUBST(OS_EXTRA_SRC)
- AC_SUBST(OS_EXTRA_OBJ)
-+AC_SUBST(EXTRA_TARGETS)
- dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
- dnl Only when the directory exists and it wasn't there yet.
-@@ -1410,6 +1412,23 @@
-         AC_DEFINE(FEAT_GUI_GNOME)
-         GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
-         GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
-+          AC_MSG_CHECKING(whether or not to include bonobo support)
-+          AC_ARG_ENABLE(bonobo,
-+            [  --enable-bonobo         If using GNOME, enable bonobo support [default=no]],
-+            , enable_bonobo="no")
-+          if test "x$enable_bonobo" = "xno"; then
-+            AC_MSG_RESULT($enable_bonobo);
-+          else
-+            if test "x$SKIP_BONOBO" != "xYES" -a $gtk_major_version -ge 2; then
-+              AC_MSG_RESULT(yes);
-+              AC_DEFINE(FEAT_GUI_COMPONENT) 
-+              GUITYPE=BONOBO
-+              VIMNAME="vim-component"
-+              EXTRA_TARGETS="vim-factory Vim_Control.server"
-+            else
-+              AC_MSG_RESULT(no (Bonobo requires Gnome 2));
-+            fi
-+          fi
-       fi
-       }
-       fi
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/container.c vim/src/container.c
---- vimcopy/src/container.c    Wed Dec 31 18:00:00 1969
-+++ vim/src/container.c        Sat Jul 26 13:16:46 2003
-@@ -0,0 +1,266 @@
-+
-+#include <bonobo.h>
-+#include <glib.h>
-+
-+BonoboControlFrame  *ctrl_frame;
-+BonoboUIComponent   *ui_comp;
-+
-+/* vbox */
-+GtkWidget           *box;
-+GtkWidget           *ctrl_widget;
-+
-+char * filename;
-+
-+static Bonobo_Control
-+instantiate_control()
-+{
-+      Bonobo_Control control;
-+      Bonobo_PersistFile pfile;
-+      Bonobo_PersistStream pstream;
-+      CORBA_Environment ev;
-+    Bonobo_Stream stream;
-+
-+      CORBA_exception_init (&ev);
-+
-+      /* get control component */
-+      control = bonobo_get_object ("OAFIID:Vim_Control",
-+                                   "Bonobo/Control", &ev);
-+      if (BONOBO_EX (&ev) || (control == CORBA_OBJECT_NIL))
-+    {
-+              CORBA_exception_free (&ev);
-+        return NULL;
-+    }
-+      
-+#if 0
-+      /* get PersistFile interface */
-+    pfile = Bonobo_Unknown_queryInterface (control, "IDL:Bonobo/PersistFile:1.0", &ev);
-+    if (BONOBO_EX (&ev) || (pfile == CORBA_OBJECT_NIL))
-+    exit(1);
-+      
-+      /* load the file */
-+    Bonobo_PersistFile_load (pfile, filename, &ev);
-+      bonobo_object_release_unref (pfile, NULL);
-+#endif
-+
-+      /* get PersistStream interface */
-+    pstream = Bonobo_Unknown_queryInterface (control, "IDL:Bonobo/PersistStream:1.0", &ev);
-+    if (BONOBO_EX (&ev) || (pstream == CORBA_OBJECT_NIL))
-+    {
-+              CORBA_exception_free (&ev);
-+        return NULL;
-+    }
-+      
-+      /* load the file */
-+    stream = bonobo_get_object(filename, "IDL:Bonobo/Stream:1.0", &ev);
-+      if (ev._major != CORBA_NO_EXCEPTION) {
-+        g_warning("Error getting stream interface");
-+              bonobo_object_unref (BONOBO_OBJECT (stream));
-+              CORBA_exception_free (&ev);
-+              return NULL;
-+      }
-+    Bonobo_PersistStream_load (pstream, stream, "text/plain", &ev);
-+      if (ev._major != CORBA_NO_EXCEPTION) {
-+        g_warning("Error loading stream!");
-+              bonobo_object_unref (BONOBO_OBJECT (stream));
-+              CORBA_exception_free (&ev);
-+              return NULL;
-+      }
-+      bonobo_object_release_unref (pstream, NULL);
-+    return control;
-+}
-+
-+static void
-+verb_FileNewWindow (BonoboUIComponent *uic, gpointer user_data, const char *cname)
-+{
-+    printf("Got New Window!\n");
-+}
-+
-+static void
-+verb_DoNothing (BonoboUIComponent *uic, gpointer user_data, const char *cname)
-+{
-+}
-+
-+static BonoboUIVerb app_verbs[] = {
-+      BONOBO_UI_VERB ("FileNewWindow", verb_FileNewWindow),
-+      BONOBO_UI_VERB ("FileOpen",      verb_DoNothing),
-+      BONOBO_UI_VERB ("FileCloseWindow", verb_DoNothing),
-+      BONOBO_UI_VERB ("FileExit",      verb_DoNothing),
-+      BONOBO_UI_VERB ("Preferences",   verb_DoNothing),
-+      BONOBO_UI_VERB ("HelpAbout",     verb_DoNothing),
-+      BONOBO_UI_VERB ("Help",          verb_DoNothing),
-+      BONOBO_UI_VERB ("DnDNewWindow",  verb_DoNothing),
-+      BONOBO_UI_VERB ("DnDSameWindow", verb_DoNothing),
-+      BONOBO_UI_VERB ("DnDCancel",     verb_DoNothing),
-+      BONOBO_UI_VERB_END
-+};
-+
-+static void 
-+add_control_to_ui (BonoboWindow *window, Bonobo_Control control)
-+{
-+      CORBA_Environment ev;
-+      Bonobo_PropertyControl prop_control;
-+      BonoboUIContainer *ui_container;
-+    char *curdir;
-+
-+      g_return_if_fail (window != NULL);
-+      g_return_if_fail (BONOBO_IS_WINDOW (window));
-+      
-+      CORBA_exception_init (&ev);
-+
-+      ui_container = bonobo_window_get_ui_container (BONOBO_WINDOW (window));
-+      ctrl_frame = bonobo_control_frame_new (BONOBO_OBJREF (ui_container));
-+
-+      /* bind and view new control widget */
-+      bonobo_control_frame_bind_to_control (ctrl_frame, control, &ev);
-+      bonobo_control_frame_control_activate (ctrl_frame);
-+      if (control != CORBA_OBJECT_NIL && ctrl_widget == NULL) {
-+              ctrl_widget = bonobo_control_frame_get_widget (ctrl_frame);
-+              if (!ctrl_widget)
-+                      g_assert_not_reached ();
-+
-+        bonobo_window_set_contents (BONOBO_WINDOW(window), GTK_WIDGET(ctrl_widget));
-+              gtk_widget_show (ctrl_widget);
-+      }
-+
-+      ui_comp = bonobo_ui_component_new ("vim-container");
-+      bonobo_ui_component_set_container (ui_comp, BONOBO_OBJREF (ui_container), NULL);
-+
-+    curdir = (char *)getcwd(NULL, 0);
-+      bonobo_ui_util_set_ui (ui_comp, curdir, "vim-container.xml", "Vim", NULL);
-+    free( curdir );
-+    bonobo_ui_component_add_verb_list_with_data (ui_comp, app_verbs, window);
-+
-+      /* update sensitivity of the properties menu item */
-+      prop_control = Bonobo_Unknown_queryInterface (control, 
-+                                                    "IDL:Bonobo/PropertyControl:1.0", &ev);
-+      bonobo_ui_component_set_prop (ui_comp,
-+                                    "/commands/Preferences",
-+                                    "sensitive",
-+                                    prop_control == CORBA_OBJECT_NIL ? "0" : "1",
-+                                    &ev);
-+      
-+      bonobo_object_release_unref (prop_control, &ev);
-+
-+      /* enable view menu */
-+      /* FIXME: We should check if the component adds anything to 
-+       *        the menu, so that we don't view an empty menu.
-+       */
-+      /*bonobo_ui_component_set_prop (ui_comp, "/menu/View", "hidden", "0", &ev);*/
-+
-+      CORBA_exception_free (&ev);
-+
-+      /* retrieve control properties and install listeners */
-+      //check_for_control_properties (window);
-+}
-+
-+static void write_stream_to_file(Bonobo_Control control)
-+{
-+    Bonobo_Storage storage;
-+    gchar * dirname;
-+    gchar * basename;
-+      CORBA_Environment ev;
-+      Bonobo_PersistStream pstream;
-+    Bonobo_Stream stream;
-+
-+    g_warning("write stream to file!");
-+      CORBA_exception_init (&ev);
-+
-+    dirname = g_path_get_dirname(filename);
-+    storage = bonobo_get_object(dirname, "IDL:Bonobo/Storage:1.0", &ev);
-+    g_free(dirname);
-+    if (BONOBO_EX (&ev) || (storage == CORBA_OBJECT_NIL))
-+    {
-+              CORBA_exception_free (&ev);
-+        return;
-+    }
-+
-+    pstream = Bonobo_Unknown_queryInterface (control, "IDL:Bonobo/PersistStream:1.0", &ev);
-+    if (BONOBO_EX (&ev) || (pstream == CORBA_OBJECT_NIL))
-+    {
-+        bonobo_object_release_unref(storage, NULL);
-+              CORBA_exception_free (&ev);
-+        return;
-+    }
-+
-+    basename = g_path_get_basename(filename);
-+    stream = Bonobo_Storage_openStream(storage, basename, Bonobo_Storage_WRITE, &ev );
-+    g_free(basename);
-+    if (BONOBO_EX (&ev) || (stream == CORBA_OBJECT_NIL))
-+    {
-+        bonobo_object_release_unref(pstream, NULL);
-+        bonobo_object_release_unref(storage, NULL);
-+              CORBA_exception_free (&ev);
-+        return;
-+    }
-+
-+    Bonobo_PersistStream_save (pstream, stream, "text/plain", &ev);
-+      if (ev._major != CORBA_NO_EXCEPTION) {
-+        g_warning("Error saving stream!");
-+              bonobo_object_unref (BONOBO_OBJECT (stream));
-+        bonobo_object_release_unref(pstream, NULL);
-+        bonobo_object_release_unref(storage, NULL);
-+              CORBA_exception_free (&ev);
-+              return;
-+      }
-+    bonobo_object_release_unref(stream, NULL);
-+    bonobo_object_release_unref(pstream, NULL);
-+    bonobo_object_release_unref(storage, NULL);
-+    return;
-+}
-+
-+static void
-+window_destroyed (GtkWindow *window, char * data)
-+{
-+    Bonobo_Control control;
-+
-+    control = bonobo_control_frame_get_control(ctrl_frame);
-+    write_stream_to_file(control);
-+    bonobo_control_frame_control_deactivate(ctrl_frame);
-+    bonobo_object_release_unref( control, NULL );
-+    bonobo_main_quit();
-+}
-+
-+int main(int argc, char * argv[] ) 
-+{
-+    BonoboWidget * bw;
-+    BonoboWindow      *window;
-+      BonoboUIEngine    *engine;
-+      BonoboUIContainer *container;
-+    Bonobo_Control    control;
-+    gchar             *cwd;
-+
-+    if( argc <= 1 ) { 
-+        fprintf(stderr, "%s: not enough args\n", argv[0] );
-+        fprintf(stderr, "Usage: %s <text file>\n", argv[0]);
-+        exit(1);
-+    }
-+    cwd = g_get_current_dir();
-+    filename = g_build_filename( "file:", cwd, argv[1], NULL );
-+    g_free(cwd);
-+
-+    bonobo_ui_init ("container", "1.0", &argc, argv);
-+
-+      if(gnome_vfs_init () == FALSE)
-+              g_error (_("Could not initialize GnomeVFS!\n"));
-+
-+      window = BONOBO_WINDOW ( bonobo_window_new ("Window", "Vim Test Container"));
-+
-+    // instantiate a control
-+    control = instantiate_control();
-+    if( control == NULL )
-+        return 1;
-+    
-+    // put it into our window
-+    add_control_to_ui (window, control);
-+
-+    g_signal_connect (window, "destroy",
-+          G_CALLBACK (window_destroyed),
-+          &window);
-+
-+
-+    gtk_widget_show_all( GTK_WIDGET( window ));
-+
-+    bonobo_main();
-+
-+    return 0;
-+}
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/ex_cmds2.c vim/src/ex_cmds2.c
---- vimcopy/src/ex_cmds2.c     Sat Jan 10 13:10:01 2004
-+++ vim/src/ex_cmds2.c Sat Jan 10 13:06:40 2004
-@@ -704,6 +704,12 @@
-     int               forceit;
-     int               allbuf;         /* may write all buffers */
- {
-+#ifdef FEAT_GUI_COMPONENT
-+    if ( buf->emb_buffer ) {
-+      EMSG(_("E467: Cannot close embedded file"));
-+        return TRUE;
-+    }
-+#endif
-     if (       !forceit
-           && bufIsChanged(buf)
-           && (mult_win || buf->b_nwindows <= 1)
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/ex_docmd.c vim/src/ex_docmd.c
---- vimcopy/src/ex_docmd.c     Sat Jan 10 13:10:01 2004
-+++ vim/src/ex_docmd.c Sat Jan 10 13:06:41 2004
-@@ -5413,8 +5413,13 @@
-     }
-     else
-     {
-+#ifdef FEAT_GUI_COMPONENT
-+        EMSG(_(e_compnoquit));
-+        not_exiting();
-+        return;
-+#endif
- #ifdef FEAT_WINDOWS
--      if (only_one_window())      /* quit last window */
-+        if (only_one_window())            /* quit last window */
- #endif
-           getout(0);
- #ifdef FEAT_WINDOWS
-@@ -5435,8 +5440,12 @@
- ex_cquit(eap)
-     exarg_T   *eap;
- {
-+#ifdef FEAT_GUI_COMPONENT
-+    EMSG(_(e_compnoquit));
-+    return;
-+#endif
-     getout(1);        /* this does not always pass on the exit code to the Manx
--                 compiler. why? */
-+                   compiler. why? */
- }
- /*
-@@ -5456,6 +5465,10 @@
-       return;
-     }
- # endif
-+#ifdef FEAT_GUI_COMPONENT
-+    EMSG(_(e_compnoquit));
-+    return;
-+#endif
-     exiting = TRUE;
-     if (eap->forceit || !check_changed_any(FALSE))
-       getout(0);
-@@ -5650,8 +5663,13 @@
-     }
-     else
-     {
-+#ifdef FEAT_GUI_COMPONENT
-+        EMSG(_(e_compnoquit));
-+        not_exiting();
-+        return;
-+#endif
- #ifdef FEAT_WINDOWS
--      if (only_one_window())      /* quit last window, exit Vim */
-+        if ( only_one_window())           /* quit last window, exit Vim */
- #endif
-           getout(0);
- #ifdef FEAT_WINDOWS
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/fileio.c vim/src/fileio.c
---- vimcopy/src/fileio.c       Sat Jan 10 13:10:01 2004
-+++ vim/src/fileio.c   Sat Jan 10 13:06:42 2004
-@@ -41,6 +41,10 @@
- # define CRYPT_MAGIC_LEN      12              /* must be multiple of 4! */
- #endif
-+#if defined(FEAT_GUI_COMPONENT) && defined(FEAT_GUI_GNOME) 
-+#include "vim_bonobo_control.h"
-+#endif
-+
- /* Is there any system that doesn't have access()? */
- #ifndef MACOS_CLASSIC /* Not available on MacOS 9 */
- # define USE_MCH_ACCESS
-@@ -196,6 +200,7 @@
-  * READ_BUFFER        read from curbuf instead of a file (converting after reading
-  *            stdin)
-  * READ_DUMMY read into a dummy buffer (to check if file contents changed)
-+ * READ_EMB_STREAM read from a bonobo persist stream
-  *
-  * return FAIL for failure, OK otherwise
-  */
-@@ -215,6 +220,11 @@
-     int               filtering = (flags & READ_FILTER);
-     int               read_stdin = (flags & READ_STDIN);
-     int               read_buffer = (flags & READ_BUFFER);
-+#if defined(FEAT_GUI_COMPONENT) && defined(FEAT_GUI_GNOME)
-+    int               read_pstream = (flags & READ_EMB_STREAM);
-+#else
-+#define read_pstream 0
-+#endif
-     linenr_T  read_buf_lnum = 1;      /* next line to read from curbuf */
-     colnr_T   read_buf_col = 0;       /* next char to read from this line */
-     char_u    c;
-@@ -318,7 +328,7 @@
-      * The BufReadCmd and FileReadCmd events intercept the reading process by
-      * executing the associated commands instead.
-      */
--    if (!filtering && !read_stdin && !read_buffer)
-+    if (!filtering && !read_stdin && !read_buffer && !read_pstream)
-     {
-       pos_T       pos;
-@@ -377,7 +387,7 @@
-      * On Unix it is possible to read a directory, so we have to
-      * check for it before the mch_open().
-      */
--    if (!read_stdin && !read_buffer)
-+    if (!read_stdin && !read_buffer && !read_pstream)
-     {
-       perm = mch_getperm(fname);
-       if (perm >= 0 && !S_ISREG(perm)             /* not a regular file ... */
-@@ -419,7 +429,7 @@
-     if (check_readonly && !readonlymode)    /* default: set file not readonly */
-       curbuf->b_p_ro = FALSE;
--    if (newfile && !read_stdin && !read_buffer)
-+    if (newfile && !read_stdin && !read_buffer && !read_pstream)
-     {
-       /* Remember time of file.
-        * For RISCOS, also remember the filetype.
-@@ -479,6 +489,11 @@
-       setmode(0, O_BINARY);
- #endif
-     }
-+#ifdef FEAT_GUI_COMPONENT
-+    else if (read_pstream)
-+    {
-+    }
-+#endif
-     else if (!read_buffer)
-     {
- #ifdef USE_MCH_ACCESS
-@@ -606,7 +621,7 @@
-     /* If "Quit" selected at ATTENTION dialog, don't load the file */
-     if (swap_exists_action == SEA_QUIT)
-     {
--      if (!read_buffer && !read_stdin)
-+      if (!read_buffer && !read_stdin && !read_pstream)
-           close(fd);
-       return FAIL;
-     }
-@@ -631,7 +646,7 @@
-        * The file must be closed again, the autocommands may want to change
-        * the file before reading it.
-        */
--      if (!read_stdin)
-+      if (!read_stdin && !read_pstream)
-           close(fd);          /* ignore errors */
-       /*
-@@ -668,7 +683,7 @@
-        * Don't allow the autocommands to change the current buffer.
-        * Try to re-open the file.
-        */
--      if (!read_stdin && (curbuf != old_curbuf
-+      if (!read_stdin && !read_pstream && (curbuf != old_curbuf
-               || (fd = mch_open((char *)fname, O_RDONLY | O_EXTRA, 0)) < 0))
-       {
-           --no_wait_return;
-@@ -708,7 +723,7 @@
-           }
- #endif
-       }
--      else if (!read_buffer)
-+      else if (!read_buffer && !read_pstream)
-           filemess(curbuf, sfname, (char_u *)"", 0);
-     }
-@@ -788,7 +803,7 @@
-           read_buf_lnum = 1;
-           read_buf_col = 0;
-       }
--      else if (read_stdin || lseek(fd, (off_t)0L, SEEK_SET) != 0)
-+      else if (read_stdin || read_pstream || lseek(fd, (off_t)0L, SEEK_SET) != 0)
-       {
-           /* Can't rewind the file, give up. */
-           error = TRUE;
-@@ -927,7 +942,7 @@
-        * Use the 'charconvert' expression when conversion is required
-        * and we can't do it internally or with iconv().
-        */
--      if (fio_flags == 0 && !read_stdin && !read_buffer && *p_ccv != NUL
-+      if (fio_flags == 0 && !read_stdin && !read_buffer && !read_pstream && *p_ccv != NUL
- #  ifdef USE_ICONV
-                                                   && iconv_fd == (iconv_t)-1
- #  endif
-@@ -976,7 +991,7 @@
-     /* Set can_retry when it's possible to rewind the file and try with
-      * another "fenc" value.  It's FALSE when no other "fenc" to try, reading
-      * stdin or "fenc" was specified with "++enc=". */
--    can_retry = (*fenc != NUL && !read_stdin
-+    can_retry = (*fenc != NUL && !read_stdin && !read_pstream
-                                    && (eap == NULL || eap->force_enc == 0));
- #endif
-@@ -1141,6 +1156,11 @@
-                       }
-                   }
-               }
-+#if defined(FEAT_GUI_COMPONENT) && defined(FEAT_GUI_GNOME) 
-+                else if( read_pstream ) {
-+                    size = vim_control_persist_stream_read(ptr, size);   
-+                }
-+#endif
-               else
-               {
-                   /*
-@@ -1734,7 +1754,7 @@
-                           else if (ff_error != EOL_DOS)
-                           {
-                               if (   try_unix
--                                  && !read_stdin
-+                                  && !read_stdin && !read_pstream
-                                   && (read_buffer
-                                       || lseek(fd, (off_t)0L, SEEK_SET) == 0))
-                               {
-@@ -1823,7 +1843,7 @@
- # endif
- #endif
--    if (!read_buffer && !read_stdin)
-+    if (!read_buffer && !read_stdin && !read_pstream)
-       close(fd);                              /* errors are ignored */
-     vim_free(buffer);
-@@ -2012,7 +2032,7 @@
- #ifdef ALWAYS_USE_GUI
-           /* Don't show the message when reading stdin, it would end up in a
-            * message box (which might be shown when exiting!) */
--          if (read_stdin || read_buffer)
-+          if (read_stdin || read_buffer )
-               p = msg_may_trunc(FALSE, IObuff);
-           else
- #endif
-@@ -2078,7 +2098,7 @@
-      */
-     write_no_eol_lnum = read_no_eol_lnum;
--    if (!read_stdin && !read_buffer)
-+    if (!read_stdin && !read_buffer && !read_pstream)
-     {
-       int m = msg_scroll;
-       int n = msg_scrolled;
-@@ -2404,6 +2424,11 @@
-     int                   prev_got_int = got_int;
-     int                   file_readonly = FALSE;  /* overwritten file is read-only */
-     static char           *err_readonly = "is read-only (cannot override: \"W\" in 'cpoptions')";
-+#if defined(FEAT_GUI_COMPONENT) && defined(FEAT_GUI_GNOME)
-+    int                   write_pstream = write_to_container;
-+#else
-+#define write_pstream 0
-+#endif
- #if defined(UNIX) || defined(__EMX__XX)           /*XXX fix me sometime? */
-     int                   made_writable = FALSE;  /* 'w' bit has been set */
- #endif
-@@ -2747,7 +2772,7 @@
-     }
- #endif /* !UNIX */
--    if (!device && !newfile)
-+    if (!device && !newfile && !write_pstream )
-     {
-       /*
-        * Check if the file is really writable (when renaming the file to
-@@ -2806,6 +2831,10 @@
-     if (dobackup && *p_bsk != NUL && match_file_list(p_bsk, sfname, ffname))
-       dobackup = FALSE;
- #endif
-+#ifdef FEAT_GUI_COMPONENT
-+    if( write_pstream )
-+        dobackup = FALSE;
-+#endif
-     /*
-      * Save the value of got_int and reset it.  We don't want a previous
-@@ -3421,95 +3450,97 @@
-      * (this may happen when the user reached his quotum for number of files).
-      * Appending will fail if the file does not exist and forceit is FALSE.
-      */
--    while ((fd = mch_open((char *)wfname, O_WRONLY | O_EXTRA | (append
--                      ? (forceit ? (O_APPEND | O_CREAT) : O_APPEND)
--                      : (O_CREAT | O_TRUNC))
--                      , 0666)) < 0)
--    {
--      /*
--       * A forced write will try to create a new file if the old one is
--       * still readonly. This may also happen when the directory is
--       * read-only. In that case the mch_remove() will fail.
--       */
--      if (errmsg == NULL)
--      {
-+    if (!write_pstream) {
-+        while ((fd = mch_open((char *)wfname, O_WRONLY | O_EXTRA | (append
-+                            ? (forceit ? (O_APPEND | O_CREAT) : O_APPEND)
-+                            : (O_CREAT | O_TRUNC))
-+                            , 0666)) < 0)
-+        {
-+            /*
-+             * A forced write will try to create a new file if the old one is
-+             * still readonly. This may also happen when the directory is
-+             * read-only. In that case the mch_remove() will fail.
-+             */
-+            if (errmsg == NULL)
-+            {
- #ifdef UNIX
--          struct stat st;
-+                struct stat   st;
--          /* Don't delete the file when it's a hard or symbolic link. */
--          if ((!newfile && st_old.st_nlink > 1)
--                  || (mch_lstat((char *)fname, &st) == 0
--                      && (st.st_dev != st_old.st_dev
--                          || st.st_ino != st_old.st_ino)))
--              errmsg = (char_u *)_("E166: Can't open linked file for writing");
--          else
--#endif
--          {
--              errmsg = (char_u *)_("E212: Can't open file for writing");
--              if (forceit && vim_strchr(p_cpo, CPO_FWRITE) == NULL
--                                                               && perm >= 0)
--              {
-+                /* Don't delete the file when it's a hard or symbolic link. */
-+                if ((!newfile && st_old.st_nlink > 1)
-+                        || (mch_lstat((char *)fname, &st) == 0
-+                            && (st.st_dev != st_old.st_dev
-+                                || st.st_ino != st_old.st_ino)))
-+                    errmsg = (char_u *)_("E166: Can't open linked file for writing");
-+                else
-+#endif
-+                {
-+                    errmsg = (char_u *)_("E212: Can't open file for writing");
-+                    if (forceit && vim_strchr(p_cpo, CPO_FWRITE) == NULL
-+                                                                     && perm >= 0)
-+                    {
- #ifdef UNIX
--                  /* we write to the file, thus it should be marked
--                     writable after all */
--                  if (!(perm & 0200))
--                      made_writable = TRUE;
--                  perm |= 0200;
--                  if (st_old.st_uid != getuid() || st_old.st_gid != getgid())
--                      perm &= 0777;
--#endif
--                  if (!append)            /* don't remove when appending */
--                      mch_remove(wfname);
--                  continue;
--              }
--          }
--      }
--
--restore_backup:
--      {
--          struct stat st;
--
--          /*
--           * If we failed to open the file, we don't need a backup. Throw it
--           * away.  If we moved or removed the original file try to put the
--           * backup in its place.
--           */
--          if (backup != NULL && wfname == fname)
--          {
--              if (backup_copy)
--              {
--                  /*
--                   * There is a small chance that we removed the original,
--                   * try to move the copy in its place.
--                   * This may not work if the vim_rename() fails.
--                   * In that case we leave the copy around.
--                   */
--                  /* If file does not exist, put the copy in its place */
--                  if (mch_stat((char *)fname, &st) < 0)
--                      vim_rename(backup, fname);
--                  /* if original file does exist throw away the copy */
--                  if (mch_stat((char *)fname, &st) >= 0)
--                      mch_remove(backup);
--              }
--              else
--              {
--                  /* try to put the original file back */
--                  vim_rename(backup, fname);
--              }
--          }
--
--          /* if original file no longer exists give an extra warning */
--          if (!newfile && mch_stat((char *)fname, &st) < 0)
--              end = 0;
--      }
-+                        /* we write to the file, thus it should be marked
-+                           writable after all */
-+                        if (!(perm & 0200))
-+                            made_writable = TRUE;
-+                        perm |= 0200;
-+                        if (st_old.st_uid != getuid() || st_old.st_gid != getgid())
-+                            perm &= 0777;
-+#endif
-+                        if (!append)      /* don't remove when appending */
-+                            mch_remove(wfname);
-+                        continue;
-+                    }
-+                }
-+            }
-+
-+    restore_backup:
-+            {
-+                struct stat st;
-+
-+                /*
-+                 * If we failed to open the file, we don't need a backup. Throw it
-+                 * away.  If we moved or removed the original file try to put the
-+                 * backup in its place.
-+                 */
-+                if (backup != NULL && wfname == fname)
-+                {
-+                    if (backup_copy)
-+                    {
-+                        /*
-+                         * There is a small chance that we removed the original,
-+                         * try to move the copy in its place.
-+                         * This may not work if the vim_rename() fails.
-+                         * In that case we leave the copy around.
-+                         */
-+                        /* If file does not exist, put the copy in its place */
-+                        if (mch_stat((char *)fname, &st) < 0)
-+                            vim_rename(backup, fname);
-+                        /* if original file does exist throw away the copy */
-+                        if (mch_stat((char *)fname, &st) >= 0)
-+                            mch_remove(backup);
-+                    }
-+                    else
-+                    {
-+                        /* try to put the original file back */
-+                        vim_rename(backup, fname);
-+                    }
-+                }
-+
-+                /* if original file no longer exists give an extra warning */
-+                if (!newfile && mch_stat((char *)fname, &st) < 0)
-+                    end = 0;
-+            }
- #ifdef FEAT_MBYTE
--      if (wfname != fname)
--          vim_free(wfname);
-+            if (wfname != fname)
-+                vim_free(wfname);
- #endif
--      goto fail;
-+            goto fail;
-+        }
-+        errmsg = NULL;
-     }
--    errmsg = NULL;
- #if defined(MACOS_CLASSIC) || defined(WIN3264)
-     /* TODO: Is it need for MACOS_X? (Dany) */
-@@ -3693,7 +3724,7 @@
-       nchars += len;
-     }
--    if (close(fd) != 0)
-+    if (!write_pstream && close(fd) != 0)
-     {
-       errmsg = (char_u *)_("E512: Close failed");
-       end = 0;
-@@ -4111,6 +4142,10 @@
-     buf_T     *buf;
-     char_u    *fname;
- {
-+#ifdef FEAT_GUI_COMPONENT
-+    if (buf->emb_buffer)
-+        fname = (char_u *)"[Embedded File]";
-+#endif
-     if (fname == NULL)
-       fname = (char_u *)"-stdin-";
-     home_replace(buf, fname, IObuff + 1, IOSIZE - 4, TRUE);
-@@ -4499,7 +4534,12 @@
-     /* Repeat the write(), it may be interrupted by a signal. */
-     while (len)
-     {
--      wlen = vim_write(ip->bw_fd, buf, len);
-+#if defined(FEAT_GUI_COMPONENT) && defined(FEAT_GUI_GNOME)
-+        if( write_to_container )
-+            wlen = vim_control_persist_stream_write(buf, len);
-+        else
-+#endif
-+            wlen = vim_write(ip->bw_fd, buf, len);
-       if (wlen <= 0)              /* error! */
-           return FAIL;
-       len -= wlen;
-@@ -6086,6 +6126,7 @@
-     {"BufWriteCmd",   EVENT_BUFWRITECMD},
-     {"CmdwinEnter",   EVENT_CMDWINENTER},
-     {"CmdwinLeave",   EVENT_CMDWINLEAVE},
-+    {"EmbeddingOn",   EVENT_EMBEDDED_COMPONENT},
-     {"EncodingChanged",       EVENT_ENCODINGCHANGED},
-     {"FileEncoding",  EVENT_ENCODINGCHANGED},
-     {"CursorHold",    EVENT_CURSORHOLD},
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/globals.h vim/src/globals.h
---- vimcopy/src/globals.h      Sat Jan 10 13:10:01 2004
-+++ vim/src/globals.h  Sat Jan 10 13:06:42 2004
-@@ -802,6 +802,12 @@
- EXTERN int    readonlymode INIT(= FALSE); /* Set to TRUE for "view" */
- EXTERN int    recoverymode INIT(= FALSE); /* Set to TRUE for "-r" option */
-+#ifdef FEAT_GUI_COMPONENT
-+EXTERN int      read_from_container INIT(= 0); /* read the buffer from the container app */
-+EXTERN int      write_to_container INIT(= 0); /* write the buffer to the container app */
-+EXTERN buf_T    *persistent_buffer INIT(= NULL); /* the buffer which the container is interested in */
-+#endif
-+
- EXTERN struct buffheader stuffbuff    /* stuff buffer */
- #ifdef DO_INIT
-                   = {{NULL, {NUL}}, NULL, 0, 0}
-@@ -1322,6 +1328,9 @@
- #endif
- #ifdef FEAT_NETBEANS_INTG
- EXTERN char_u e_guarded[]     INIT(=N_("E463: Region is guarded, cannot modify"));
-+#endif
-+#ifdef FEAT_GUI_COMPONENT
-+EXTERN char_u e_compnoquit[]  INIT(=N_("E464: Quit not allowed from embedded component"));
- #endif
- #ifdef MACOS_X_UNIX
- EXTERN short disallow_gui     INIT(= FALSE);
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/gtkhtml.h vim/src/gtkhtml.h
---- vimcopy/src/gtkhtml.h      Wed Dec 31 18:00:00 1969
-+++ vim/src/gtkhtml.h  Sat Jul 26 13:16:47 2003
-@@ -0,0 +1,480 @@
-+/*
-+ * This file was generated by orbit-idl-2 - DO NOT EDIT!
-+ */
-+
-+#ifndef Editor_H
-+#define Editor_H 1
-+#include <glib.h>
-+#define ORBIT_IDL_SERIAL 19
-+#include <orbit/orbit-types.h>
-+
-+#ifdef __cplusplus
-+extern "C"
-+{
-+#endif                                /* __cplusplus */
-+
-+/** typedefs **/
-+#include <bonobo/Bonobo.h>
-+#if !defined(ORBIT_DECL_GNOME_GtkHTML_Editor_Listener) && !defined(_GNOME_GtkHTML_Editor_Listener_defined)
-+#define ORBIT_DECL_GNOME_GtkHTML_Editor_Listener 1
-+#define _GNOME_GtkHTML_Editor_Listener_defined 1
-+#define GNOME_GtkHTML_Editor_Listener__freekids CORBA_Object__freekids
-+   typedef CORBA_Object GNOME_GtkHTML_Editor_Listener;
-+   extern CORBA_unsigned_long GNOME_GtkHTML_Editor_Listener__classid;
-+#if !defined(TC_IMPL_TC_GNOME_GtkHTML_Editor_Listener_0)
-+#define TC_IMPL_TC_GNOME_GtkHTML_Editor_Listener_0 'E'
-+#define TC_IMPL_TC_GNOME_GtkHTML_Editor_Listener_1 'd'
-+#define TC_IMPL_TC_GNOME_GtkHTML_Editor_Listener_2 'i'
-+#define TC_IMPL_TC_GNOME_GtkHTML_Editor_Listener_3 't'
-+#define TC_IMPL_TC_GNOME_GtkHTML_Editor_Listener_4 'o'
-+#define TC_IMPL_TC_GNOME_GtkHTML_Editor_Listener_5 'r'
-+#ifdef ORBIT_IDL_C_IMODULE
-+   static
-+#else
-+   extern
-+#endif
-+   const struct CORBA_TypeCode_struct TC_GNOME_GtkHTML_Editor_Listener_struct;
-+#define TC_GNOME_GtkHTML_Editor_Listener ((CORBA_TypeCode)&TC_GNOME_GtkHTML_Editor_Listener_struct)
-+#endif
-+#endif
-+#if !defined(ORBIT_DECL_GNOME_GtkHTML_Editor_Engine) && !defined(_GNOME_GtkHTML_Editor_Engine_defined)
-+#define ORBIT_DECL_GNOME_GtkHTML_Editor_Engine 1
-+#define _GNOME_GtkHTML_Editor_Engine_defined 1
-+#define GNOME_GtkHTML_Editor_Engine__freekids CORBA_Object__freekids
-+   typedef CORBA_Object GNOME_GtkHTML_Editor_Engine;
-+   extern CORBA_unsigned_long GNOME_GtkHTML_Editor_Engine__classid;
-+#if !defined(TC_IMPL_TC_GNOME_GtkHTML_Editor_Engine_0)
-+#define TC_IMPL_TC_GNOME_GtkHTML_Editor_Engine_0 'E'
-+#define TC_IMPL_TC_GNOME_GtkHTML_Editor_Engine_1 'd'
-+#define TC_IMPL_TC_GNOME_GtkHTML_Editor_Engine_2 'i'
-+#define TC_IMPL_TC_GNOME_GtkHTML_Editor_Engine_3 't'
-+#define TC_IMPL_TC_GNOME_GtkHTML_Editor_Engine_4 'o'
-+#define TC_IMPL_TC_GNOME_GtkHTML_Editor_Engine_5 'r'
-+#ifdef ORBIT_IDL_C_IMODULE
-+   static
-+#else
-+   extern
-+#endif
-+   const struct CORBA_TypeCode_struct TC_GNOME_GtkHTML_Editor_Engine_struct;
-+#define TC_GNOME_GtkHTML_Editor_Engine ((CORBA_TypeCode)&TC_GNOME_GtkHTML_Editor_Engine_struct)
-+#endif
-+#endif
-+#if !defined(_GNOME_GtkHTML_Editor_URLRequestEvent_defined)
-+#define _GNOME_GtkHTML_Editor_URLRequestEvent_defined 1
-+   typedef struct GNOME_GtkHTML_Editor_URLRequestEvent_type
-+      GNOME_GtkHTML_Editor_URLRequestEvent;
-+   struct GNOME_GtkHTML_Editor_URLRequestEvent_type
-+   {
-+      CORBA_string url;
-+      Bonobo_Stream stream;
-+   };
-+
-+#if !defined(TC_IMPL_TC_GNOME_GtkHTML_Editor_URLRequestEvent_0)
-+#define TC_IMPL_TC_GNOME_GtkHTML_Editor_URLRequestEvent_0 'E'
-+#define TC_IMPL_TC_GNOME_GtkHTML_Editor_URLRequestEvent_1 'd'
-+#define TC_IMPL_TC_GNOME_GtkHTML_Editor_URLRequestEvent_2 'i'
-+#define TC_IMPL_TC_GNOME_GtkHTML_Editor_URLRequestEvent_3 't'
-+#define TC_IMPL_TC_GNOME_GtkHTML_Editor_URLRequestEvent_4 'o'
-+#define TC_IMPL_TC_GNOME_GtkHTML_Editor_URLRequestEvent_5 'r'
-+#ifdef ORBIT_IDL_C_IMODULE
-+   static
-+#else
-+   extern
-+#endif
-+   const struct CORBA_TypeCode_struct
-+      TC_GNOME_GtkHTML_Editor_URLRequestEvent_struct;
-+#define TC_GNOME_GtkHTML_Editor_URLRequestEvent ((CORBA_TypeCode)&TC_GNOME_GtkHTML_Editor_URLRequestEvent_struct)
-+#endif
-+#define GNOME_GtkHTML_Editor_URLRequestEvent__alloc() ((GNOME_GtkHTML_Editor_URLRequestEvent *)ORBit_small_alloc (TC_GNOME_GtkHTML_Editor_URLRequestEvent))
-+#define GNOME_GtkHTML_Editor_URLRequestEvent__freekids(m,d) ORBit_small_freekids (TC_GNOME_GtkHTML_Editor_URLRequestEvent,(m),(d))
-+#endif
-+
-+/** POA structures **/
-+#ifndef _defined_POA_GNOME_GtkHTML_Editor_Listener
-+#define _defined_POA_GNOME_GtkHTML_Editor_Listener 1
-+   typedef struct
-+   {
-+      void *_private;
-+      CORBA_any *(*event) (PortableServer_Servant _servant,
-+                         const CORBA_char * name, const CORBA_any * arg,
-+                         CORBA_Environment * ev);
-+   }
-+   POA_GNOME_GtkHTML_Editor_Listener__epv;
-+   typedef struct
-+   {
-+      PortableServer_ServantBase__epv *_base_epv;
-+      POA_Bonobo_Unknown__epv *Bonobo_Unknown_epv;
-+      POA_GNOME_GtkHTML_Editor_Listener__epv
-+       *GNOME_GtkHTML_Editor_Listener_epv;
-+   }
-+   POA_GNOME_GtkHTML_Editor_Listener__vepv;
-+   typedef struct
-+   {
-+      void *_private;
-+      POA_GNOME_GtkHTML_Editor_Listener__vepv *vepv;
-+   }
-+   POA_GNOME_GtkHTML_Editor_Listener;
-+   extern void POA_GNOME_GtkHTML_Editor_Listener__init(PortableServer_Servant
-+                                                     servant,
-+                                                     CORBA_Environment *
-+                                                     ev);
-+   extern void POA_GNOME_GtkHTML_Editor_Listener__fini(PortableServer_Servant
-+                                                     servant,
-+                                                     CORBA_Environment *
-+                                                     ev);
-+#endif                                /* _defined_POA_GNOME_GtkHTML_Editor_Listener */
-+#ifndef _defined_POA_GNOME_GtkHTML_Editor_Engine
-+#define _defined_POA_GNOME_GtkHTML_Editor_Engine 1
-+   typedef struct
-+   {
-+      void *_private;
-+       GNOME_GtkHTML_Editor_Listener(*_get_listener) (PortableServer_Servant
-+                                                    _servant,
-+                                                    CORBA_Environment * ev);
-+      void (*_set_listener) (PortableServer_Servant _servant,
-+                           const GNOME_GtkHTML_Editor_Listener value,
-+                           CORBA_Environment * ev);
-+       CORBA_boolean(*runCommand) (PortableServer_Servant _servant,
-+                                 const CORBA_char * command,
-+                                 CORBA_Environment * ev);
-+       CORBA_string(*getParagraphData) (PortableServer_Servant _servant,
-+                                      const CORBA_char * key,
-+                                      CORBA_Environment * ev);
-+      void (*setParagraphData) (PortableServer_Servant _servant,
-+                              const CORBA_char * key,
-+                              const CORBA_char * value,
-+                              CORBA_Environment * ev);
-+      void (*setObjectDataByType) (PortableServer_Servant _servant,
-+                                 const CORBA_char * type_name,
-+                                 const CORBA_char * key,
-+                                 const CORBA_char * data,
-+                                 CORBA_Environment * ev);
-+       CORBA_boolean(*searchByData) (PortableServer_Servant _servant,
-+                                   const CORBA_long level,
-+                                   const CORBA_char * klass,
-+                                   const CORBA_char * key,
-+                                   const CORBA_char * value,
-+                                   CORBA_Environment * ev);
-+       CORBA_boolean(*isParagraphEmpty) (PortableServer_Servant _servant,
-+                                       CORBA_Environment * ev);
-+       CORBA_boolean(*isPreviousParagraphEmpty) (PortableServer_Servant
-+                                               _servant,
-+                                               CORBA_Environment * ev);
-+      void (*insertHTML) (PortableServer_Servant _servant,
-+                        const CORBA_char * html, CORBA_Environment * ev);
-+      void (*freeze) (PortableServer_Servant _servant,
-+                    CORBA_Environment * ev);
-+      void (*thaw) (PortableServer_Servant _servant, CORBA_Environment * ev);
-+      void (*undoBegin) (PortableServer_Servant _servant,
-+                       const CORBA_char * undo_name,
-+                       const CORBA_char * redo_name,
-+                       CORBA_Environment * ev);
-+      void (*undoEnd) (PortableServer_Servant _servant,
-+                     CORBA_Environment * ev);
-+      void (*ignoreWord) (PortableServer_Servant _servant,
-+                        const CORBA_char * word, CORBA_Environment * ev);
-+      void (*dropUndo) (PortableServer_Servant _servant,
-+                      CORBA_Environment * ev);
-+       CORBA_boolean(*hasUndo) (PortableServer_Servant _servant,
-+                              CORBA_Environment * ev);
-+   }
-+   POA_GNOME_GtkHTML_Editor_Engine__epv;
-+   typedef struct
-+   {
-+      PortableServer_ServantBase__epv *_base_epv;
-+      POA_Bonobo_Unknown__epv *Bonobo_Unknown_epv;
-+      POA_GNOME_GtkHTML_Editor_Engine__epv *GNOME_GtkHTML_Editor_Engine_epv;
-+   }
-+   POA_GNOME_GtkHTML_Editor_Engine__vepv;
-+   typedef struct
-+   {
-+      void *_private;
-+      POA_GNOME_GtkHTML_Editor_Engine__vepv *vepv;
-+   }
-+   POA_GNOME_GtkHTML_Editor_Engine;
-+   extern void POA_GNOME_GtkHTML_Editor_Engine__init(PortableServer_Servant
-+                                                   servant,
-+                                                   CORBA_Environment * ev);
-+   extern void POA_GNOME_GtkHTML_Editor_Engine__fini(PortableServer_Servant
-+                                                   servant,
-+                                                   CORBA_Environment * ev);
-+#endif                                /* _defined_POA_GNOME_GtkHTML_Editor_Engine */
-+
-+/** skel prototypes **/
-+   void
-+      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Listener_event
-+      (POA_GNOME_GtkHTML_Editor_Listener * _ORBIT_servant,
-+       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
-+       CORBA_Environment * ev,
-+       CORBA_any * (*_impl_event) (PortableServer_Servant _servant,
-+                                 const CORBA_char * name,
-+                                 const CORBA_any * arg,
-+                                 CORBA_Environment * ev));
-+   void
-+      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine__get_listener
-+      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
-+       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
-+       CORBA_Environment * ev,
-+       GNOME_GtkHTML_Editor_Listener(*_impl__get_listener)
-+       (PortableServer_Servant _servant, CORBA_Environment * ev));
-+   void
-+      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine__set_listener
-+      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
-+       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
-+       CORBA_Environment * ev,
-+       void (*_impl__set_listener) (PortableServer_Servant _servant,
-+                                  const GNOME_GtkHTML_Editor_Listener value,
-+                                  CORBA_Environment * ev));
-+   void
-+      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_runCommand
-+      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
-+       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
-+       CORBA_Environment * ev,
-+       CORBA_boolean(*_impl_runCommand) (PortableServer_Servant _servant,
-+                                       const CORBA_char * command,
-+                                       CORBA_Environment * ev));
-+   void
-+      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_getParagraphData
-+      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
-+       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
-+       CORBA_Environment * ev,
-+       CORBA_string(*_impl_getParagraphData) (PortableServer_Servant _servant,
-+                                            const CORBA_char * key,
-+                                            CORBA_Environment * ev));
-+   void
-+      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_setParagraphData
-+      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
-+       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
-+       CORBA_Environment * ev,
-+       void (*_impl_setParagraphData) (PortableServer_Servant _servant,
-+                                     const CORBA_char * key,
-+                                     const CORBA_char * value,
-+                                     CORBA_Environment * ev));
-+   void
-+      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_setObjectDataByType
-+      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
-+       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
-+       CORBA_Environment * ev,
-+       void (*_impl_setObjectDataByType) (PortableServer_Servant _servant,
-+                                        const CORBA_char * type_name,
-+                                        const CORBA_char * key,
-+                                        const CORBA_char * data,
-+                                        CORBA_Environment * ev));
-+   void
-+      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_searchByData
-+      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
-+       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
-+       CORBA_Environment * ev,
-+       CORBA_boolean(*_impl_searchByData) (PortableServer_Servant _servant,
-+                                         const CORBA_long level,
-+                                         const CORBA_char * klass,
-+                                         const CORBA_char * key,
-+                                         const CORBA_char * value,
-+                                         CORBA_Environment * ev));
-+   void
-+      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_isParagraphEmpty
-+      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
-+       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
-+       CORBA_Environment * ev,
-+       CORBA_boolean(*_impl_isParagraphEmpty) (PortableServer_Servant
-+                                             _servant,
-+                                             CORBA_Environment * ev));
-+   void
-+      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_isPreviousParagraphEmpty
-+      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
-+       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
-+       CORBA_Environment * ev,
-+       CORBA_boolean(*_impl_isPreviousParagraphEmpty) (PortableServer_Servant
-+                                                     _servant,
-+                                                     CORBA_Environment *
-+                                                     ev));
-+   void
-+      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_insertHTML
-+      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
-+       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
-+       CORBA_Environment * ev,
-+       void (*_impl_insertHTML) (PortableServer_Servant _servant,
-+                               const CORBA_char * html,
-+                               CORBA_Environment * ev));
-+   void
-+      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_freeze
-+      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
-+       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
-+       CORBA_Environment * ev,
-+       void (*_impl_freeze) (PortableServer_Servant _servant,
-+                           CORBA_Environment * ev));
-+   void
-+      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_thaw
-+      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
-+       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
-+       CORBA_Environment * ev,
-+       void (*_impl_thaw) (PortableServer_Servant _servant,
-+                         CORBA_Environment * ev));
-+   void
-+      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_undoBegin
-+      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
-+       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
-+       CORBA_Environment * ev,
-+       void (*_impl_undoBegin) (PortableServer_Servant _servant,
-+                              const CORBA_char * undo_name,
-+                              const CORBA_char * redo_name,
-+                              CORBA_Environment * ev));
-+   void
-+      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_undoEnd
-+      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
-+       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
-+       CORBA_Environment * ev,
-+       void (*_impl_undoEnd) (PortableServer_Servant _servant,
-+                            CORBA_Environment * ev));
-+   void
-+      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_ignoreWord
-+      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
-+       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
-+       CORBA_Environment * ev,
-+       void (*_impl_ignoreWord) (PortableServer_Servant _servant,
-+                               const CORBA_char * word,
-+                               CORBA_Environment * ev));
-+   void
-+      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_dropUndo
-+      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
-+       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
-+       CORBA_Environment * ev,
-+       void (*_impl_dropUndo) (PortableServer_Servant _servant,
-+                             CORBA_Environment * ev));
-+   void
-+      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_hasUndo
-+      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
-+       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
-+       CORBA_Environment * ev,
-+       CORBA_boolean(*_impl_hasUndo) (PortableServer_Servant _servant,
-+                                    CORBA_Environment * ev));
-+
-+/** stub prototypes **/
-+#define GNOME_GtkHTML_Editor_Listener_ref Bonobo_Unknown_ref
-+#define GNOME_GtkHTML_Editor_Listener_unref Bonobo_Unknown_unref
-+#define GNOME_GtkHTML_Editor_Listener_queryInterface Bonobo_Unknown_queryInterface
-+   CORBA_any
-+      *GNOME_GtkHTML_Editor_Listener_event(GNOME_GtkHTML_Editor_Listener _obj,
-+                                         const CORBA_char * name,
-+                                         const CORBA_any * arg,
-+                                         CORBA_Environment * ev);
-+#define GNOME_GtkHTML_Editor_Engine_ref Bonobo_Unknown_ref
-+#define GNOME_GtkHTML_Editor_Engine_unref Bonobo_Unknown_unref
-+#define GNOME_GtkHTML_Editor_Engine_queryInterface Bonobo_Unknown_queryInterface
-+   GNOME_GtkHTML_Editor_Listener
-+      GNOME_GtkHTML_Editor_Engine__get_listener(GNOME_GtkHTML_Editor_Engine
-+                                              _obj, CORBA_Environment * ev);
-+   void GNOME_GtkHTML_Editor_Engine__set_listener(GNOME_GtkHTML_Editor_Engine
-+                                                _obj,
-+                                                const
-+                                                GNOME_GtkHTML_Editor_Listener
-+                                                value,
-+                                                CORBA_Environment * ev);
-+   CORBA_boolean
-+      GNOME_GtkHTML_Editor_Engine_runCommand(GNOME_GtkHTML_Editor_Engine _obj,
-+                                           const CORBA_char * command,
-+                                           CORBA_Environment * ev);
-+   CORBA_string
-+      GNOME_GtkHTML_Editor_Engine_getParagraphData(GNOME_GtkHTML_Editor_Engine
-+                                                 _obj,
-+                                                 const CORBA_char * key,
-+                                                 CORBA_Environment * ev);
-+   void
-+      GNOME_GtkHTML_Editor_Engine_setParagraphData(GNOME_GtkHTML_Editor_Engine
-+                                                 _obj,
-+                                                 const CORBA_char * key,
-+                                                 const CORBA_char * value,
-+                                                 CORBA_Environment * ev);
-+   void
-+      GNOME_GtkHTML_Editor_Engine_setObjectDataByType
-+      (GNOME_GtkHTML_Editor_Engine _obj, const CORBA_char * type_name,
-+       const CORBA_char * key, const CORBA_char * data,
-+       CORBA_Environment * ev);
-+   CORBA_boolean
-+      GNOME_GtkHTML_Editor_Engine_searchByData(GNOME_GtkHTML_Editor_Engine
-+                                             _obj, const CORBA_long level,
-+                                             const CORBA_char * klass,
-+                                             const CORBA_char * key,
-+                                             const CORBA_char * value,
-+                                             CORBA_Environment * ev);
-+   CORBA_boolean
-+      GNOME_GtkHTML_Editor_Engine_isParagraphEmpty(GNOME_GtkHTML_Editor_Engine
-+                                                 _obj,
-+                                                 CORBA_Environment * ev);
-+   CORBA_boolean
-+      GNOME_GtkHTML_Editor_Engine_isPreviousParagraphEmpty
-+      (GNOME_GtkHTML_Editor_Engine _obj, CORBA_Environment * ev);
-+   void GNOME_GtkHTML_Editor_Engine_insertHTML(GNOME_GtkHTML_Editor_Engine
-+                                             _obj, const CORBA_char * html,
-+                                             CORBA_Environment * ev);
-+   void GNOME_GtkHTML_Editor_Engine_freeze(GNOME_GtkHTML_Editor_Engine _obj,
-+                                         CORBA_Environment * ev);
-+   void GNOME_GtkHTML_Editor_Engine_thaw(GNOME_GtkHTML_Editor_Engine _obj,
-+                                       CORBA_Environment * ev);
-+   void GNOME_GtkHTML_Editor_Engine_undoBegin(GNOME_GtkHTML_Editor_Engine
-+                                            _obj,
-+                                            const CORBA_char * undo_name,
-+                                            const CORBA_char * redo_name,
-+                                            CORBA_Environment * ev);
-+   void GNOME_GtkHTML_Editor_Engine_undoEnd(GNOME_GtkHTML_Editor_Engine _obj,
-+                                          CORBA_Environment * ev);
-+   void GNOME_GtkHTML_Editor_Engine_ignoreWord(GNOME_GtkHTML_Editor_Engine
-+                                             _obj, const CORBA_char * word,
-+                                             CORBA_Environment * ev);
-+   void GNOME_GtkHTML_Editor_Engine_dropUndo(GNOME_GtkHTML_Editor_Engine _obj,
-+                                           CORBA_Environment * ev);
-+   CORBA_boolean
-+      GNOME_GtkHTML_Editor_Engine_hasUndo(GNOME_GtkHTML_Editor_Engine _obj,
-+                                        CORBA_Environment * ev);
-+
-+/** more internals **/
-+#if !defined(MARSHAL_IMPL_GNOME_GtkHTML_Editor_URLRequestEvent_0)
-+#define MARSHAL_IMPL_GNOME_GtkHTML_Editor_URLRequestEvent_0 'E'
-+#define MARSHAL_IMPL_GNOME_GtkHTML_Editor_URLRequestEvent_1 'd'
-+#define MARSHAL_IMPL_GNOME_GtkHTML_Editor_URLRequestEvent_2 'i'
-+#define MARSHAL_IMPL_GNOME_GtkHTML_Editor_URLRequestEvent_3 't'
-+#define MARSHAL_IMPL_GNOME_GtkHTML_Editor_URLRequestEvent_4 'o'
-+#define MARSHAL_IMPL_GNOME_GtkHTML_Editor_URLRequestEvent_5 'r'
-+#endif
-+#include <orbit/orb-core/orbit-interface.h>
-+
-+#ifdef ORBIT_IDL_C_IMODULE
-+   static
-+#else
-+   extern
-+#endif
-+   ORBit_IInterface GNOME_GtkHTML_Editor_Listener__iinterface;
-+#define GNOME_GtkHTML_Editor_Listener_IMETHODS_LEN 1
-+#ifdef ORBIT_IDL_C_IMODULE
-+   static
-+#else
-+   extern
-+#endif
-+   ORBit_IMethod
-+      GNOME_GtkHTML_Editor_Listener__imethods
-+      [GNOME_GtkHTML_Editor_Listener_IMETHODS_LEN];
-+#ifdef ORBIT_IDL_C_IMODULE
-+   static
-+#else
-+   extern
-+#endif
-+   ORBit_IInterface GNOME_GtkHTML_Editor_Engine__iinterface;
-+#define GNOME_GtkHTML_Editor_Engine_IMETHODS_LEN 17
-+#ifdef ORBIT_IDL_C_IMODULE
-+   static
-+#else
-+   extern
-+#endif
-+   ORBit_IMethod
-+      GNOME_GtkHTML_Editor_Engine__imethods
-+      [GNOME_GtkHTML_Editor_Engine_IMETHODS_LEN];
-+#ifdef __cplusplus
-+}
-+#endif                                /* __cplusplus */
-+
-+#ifndef EXCLUDE_ORBIT_H
-+#include <orbit/orbit.h>
-+
-+#endif                                /* EXCLUDE_ORBIT_H */
-+#endif
-+#undef ORBIT_IDL_SERIAL
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/gtkhtml_editor.c vim/src/gtkhtml_editor.c
---- vimcopy/src/gtkhtml_editor.c       Wed Dec 31 18:00:00 1969
-+++ vim/src/gtkhtml_editor.c   Sat Nov  1 18:19:52 2003
-@@ -0,0 +1,385 @@
-+#include "vim.h"
-+
-+#include <bonobo.h>
-+#include "gtkhtml_editor.h"
-+
-+static BonoboObjectClass *engine_parent_class;
-+
-+inline static EditorEngine *
-+gtkhtml_editor_engine_from_servant (PortableServer_Servant servant)
-+{
-+      return EDITOR_ENGINE (bonobo_object_from_servant (servant));
-+}
-+
-+static CORBA_char *
-+impl_get_paragraph_data (PortableServer_Servant servant, const CORBA_char * key, CORBA_Environment * ev)
-+{
-+      EditorEngine *e = gtkhtml_editor_engine_from_servant (servant);
-+}
-+
-+static void
-+impl_set_paragraph_data (PortableServer_Servant servant,
-+                       const CORBA_char * key, const CORBA_char * value,
-+                       CORBA_Environment * ev)
-+{
-+      EditorEngine *e = gtkhtml_editor_engine_from_servant (servant);
-+}
-+
-+static void
-+impl_set_object_data_by_type (PortableServer_Servant servant,
-+                       const CORBA_char * type_name, const CORBA_char * key, const CORBA_char * value,
-+                       CORBA_Environment * ev)
-+{
-+      EditorEngine *e = gtkhtml_editor_engine_from_servant (servant);
-+}
-+
-+static void
-+impl_set_listener (PortableServer_Servant servant, const GNOME_GtkHTML_Editor_Listener value, CORBA_Environment * ev)
-+{
-+      EditorEngine *e = gtkhtml_editor_engine_from_servant (servant);
-+
-+      bonobo_object_release_unref (e->listener, NULL);
-+      e->listener        = bonobo_object_dup_ref (value, NULL);
-+}
-+
-+static GNOME_GtkHTML_Editor_Listener
-+impl_get_listener (PortableServer_Servant servant, CORBA_Environment * ev)
-+{
-+      return gtkhtml_editor_engine_from_servant (servant)->listener;
-+}
-+
-+
-+
-+static CORBA_boolean
-+impl_run_command (PortableServer_Servant servant, const CORBA_char * command, CORBA_Environment * ev)
-+{
-+      EditorEngine *e = gtkhtml_editor_engine_from_servant (servant);
-+      printf ("command: %s\n", command);
-+    CORBA_boolean retval = CORBA_TRUE;
-+    int save_p_report = p_report;
-+
-+    p_report = 1000;
-+
-+    aco_save_T        aco;
-+    aucmd_prepbuf(&aco, persistent_buffer);
-+
-+    if( strcmp( command, "cursor-position-save" ) == 0 ) {
-+        do_cmdline_cmd("normal mz");
-+    } else if( strcmp( command, "cursor-position-restore" ) == 0 ) {
-+        do_cmdline_cmd("normal 'z");
-+        update_screen(CLEAR);
-+        gui_update_cursor(TRUE, FALSE);
-+    } else if( strcmp( command, "cursor-bod" ) == 0 ) {
-+        do_cmdline_cmd("normal G");
-+    } else if( strcmp( command, "select-paragraph" ) == 0 ) {
-+        do_cmdline_cmd("normal V}");
-+    } else if( strcmp( command, "delete" ) == 0 ) {
-+        do_cmdline_cmd("normal d");
-+    } else if( strcmp( command, "is-saved" ) == 0 ) {
-+        retval = !persistent_buffer->b_changed;
-+    } else if( strcmp( command, "insert-paragraph" ) == 0 ) {
-+        do_cmdline_cmd("normal o");
-+    }
-+    aucmd_restbuf(&aco);
-+    p_report = save_p_report;
-+      return retval;
-+}
-+
-+static CORBA_boolean
-+impl_is_paragraph_empty (PortableServer_Servant servant, CORBA_Environment * ev)
-+{
-+      EditorEngine *e = gtkhtml_editor_engine_from_servant (servant);
-+      return CORBA_FALSE;
-+}
-+
-+static CORBA_boolean
-+impl_is_previous_paragraph_empty (PortableServer_Servant servant, CORBA_Environment * ev)
-+{
-+      EditorEngine *e = gtkhtml_editor_engine_from_servant (servant);
-+      return CORBA_FALSE;
-+}
-+
-+struct keyvalue {
-+    char * key;
-+    char * value;
-+    char mark;
-+};
-+
-+static GSList * keylist = NULL;
-+static char free_mark = 'y';
-+
-+static void set_mark_at_cursor( char * key, char * value ) 
-+{
-+    char cmd[5];
-+    struct keyvalue * kv = NULL;
-+    GSList * node = keylist;
-+    while( node != NULL ) {
-+        kv = node->data; 
-+        if( strcmp( kv->key, key ) == 0 && strcmp( kv->value, value ) == 0 ) {
-+            break;
-+        }
-+        node = node->next;
-+    }
-+    if( kv == NULL ) {
-+        kv = g_new0( struct keyvalue, 1 );
-+        kv->key = g_strdup( key );
-+        kv->value = g_strdup( value );
-+
-+        kv->mark = free_mark;
-+        free_mark -= 1;
-+        keylist = g_slist_prepend( keylist, kv );
-+    }
-+
-+    setmark(kv->mark);
-+}
-+
-+static void
-+impl_insert_html (PortableServer_Servant servant, const CORBA_char * html, CORBA_Environment * ev)
-+{
-+      EditorEngine *e = gtkhtml_editor_engine_from_servant (servant);
-+    const char * c;
-+    const char * s;
-+    char * d;
-+    int level = 0;
-+    gboolean in_data = 0;
-+    char key[50];
-+    char value[50];
-+    char cmd[50];
-+    gchar **lines;
-+    int curline;
-+    int begin;
-+    int i;
-+
-+      g_warning("insert html: \"%s\"", html ); 
-+    
-+    aco_save_T        aco;
-+    aucmd_prepbuf(&aco, persistent_buffer);
-+
-+    // This gets a bit ugly...
-+    // Look for DATA tags with KEY and VALUE attributes.  We set a mark
-+    // in vim on the first line of the inserted HTML if one of these tags is present
-+    // (we assume that they occur at the beginning of the inserted paragraph).
-+    // we also assume that only one of these sequences will occur in the html.
-+    strcpy( key, "" );
-+    strcpy( value, "" );
-+    for( c = html; *c != '\0'; c++ ) {
-+        if( *c == '<' ) {
-+            level += 1;
-+            if( strncmp( c, "<DATA", 5 ) == 0 ) {
-+                in_data = TRUE;
-+            }
-+        } else if( *c == '>' ) {
-+            level -= 1;
-+            if( in_data ) {
-+                if( *key && *value ) {
-+                    g_warning( "got key=%s and value=%s", key, value );
-+                }
-+                in_data = FALSE;
-+            }
-+        } else if( in_data && strncmp( c, "key=", 4 ) == 0 ) {
-+            // extract the key
-+            d = key;
-+            for( s = &c[4]; *s != '\"'; s++ );
-+            s++;
-+            for( ; *s != '\"'; s++ ) {
-+                *d++ = *s; 
-+            }
-+            *d = '\0';
-+        } else if( in_data && strncmp( c, "value=", 6 ) == 0 ) {
-+            // extract the value
-+            d = value;
-+            for( s = &c[4]; *s != '\"'; s++ );
-+            s++;
-+            for( ; *s != '\"'; s++ ) {
-+                *d++ = *s; 
-+            }
-+            *d = '\0';
-+        }
-+    }
-+
-+    /* insert the html into the buffer, remembering the starting line */
-+    begin = curwin->w_cursor.lnum;
-+    curline = begin;
-+    lines = g_strsplit(html, "\n", 0);
-+    for(i = 0; lines[i]; i += 1) {
-+        ml_append(curline, lines[i], strlen(html) + 1, FALSE); 
-+        appended_lines_mark(curwin->w_cursor.lnum, 1);
-+        curline += 1;
-+    }
-+    g_strfreev(lines);
-+
-+    /* run a filter to obtain plain text from the html */
-+    vim_bonobo_call_begin();
-+    g_snprintf( cmd, 50, "%d,%d!html2text -nobs", begin, curline);
-+    do_cmdline_cmd(cmd);
-+    vim_bonobo_call_end();
-+    if( *key && *value ) {
-+        set_mark_at_cursor( key, value );
-+    }
-+    aucmd_restbuf(&aco);
-+}
-+
-+static CORBA_boolean
-+impl_search_by_data (PortableServer_Servant servant, const CORBA_long level, const CORBA_char * klass,
-+                   const CORBA_char * key, const CORBA_char * value, CORBA_Environment * ev)
-+{
-+      EditorEngine *e = gtkhtml_editor_engine_from_servant (servant);
-+
-+    GSList * node = keylist;
-+    struct keyvalue * kv = NULL;
-+    char cmd[15];
-+    char * data;
-+    aco_save_T        aco;
-+    int retval = FALSE;
-+
-+    aucmd_prepbuf(&aco, persistent_buffer);
-+
-+      g_warning("search by data: key=\"%s\" value=\"%s\"", key, value ); 
-+    while( node != NULL ) {
-+        kv = node->data; 
-+        if( strcmp( kv->key, key ) == 0 && strcmp( kv->value, value ) == 0 ) {
-+            break;
-+        }
-+        node = node->next;
-+    }
-+    if( kv != NULL ) {
-+        pos_T *pos;
-+
-+        pos = getmark(kv->mark, FALSE);
-+        if( pos->lnum != 0 ) {
-+            /* jump to the mark in the text */
-+            g_snprintf( cmd, 15, "normal '%c", kv->mark );
-+            do_cmdline_cmd( cmd );
-+            g_warning( "Found key!" );
-+            retval = TRUE;
-+        } else {
-+            g_warning( "Key not found" );
-+            // mark not found.  Delete it from our list.
-+            g_free( kv->key );
-+            g_free( kv->value );
-+            g_free( kv );
-+            keylist = g_slist_remove( keylist, kv );
-+        }
-+    }
-+    aucmd_restbuf(&aco);
-+      return retval;
-+}
-+
-+static void
-+impl_freeze (PortableServer_Servant servant, CORBA_Environment * ev)
-+{
-+}
-+
-+static void
-+impl_thaw (PortableServer_Servant servant, CORBA_Environment * ev)
-+{
-+}
-+
-+static void
-+impl_undo_begin (PortableServer_Servant servant, const CORBA_char * undo_name, const CORBA_char * redo_name,
-+               CORBA_Environment * ev)
-+{
-+}
-+
-+static void
-+impl_undo_end (PortableServer_Servant servant, CORBA_Environment * ev)
-+{
-+}
-+
-+static void
-+impl_ignore_word (PortableServer_Servant servant, const CORBA_char * word, CORBA_Environment * ev)
-+{
-+      EditorEngine *e = gtkhtml_editor_engine_from_servant (servant);
-+}
-+
-+/* Return whether we have any undos. */
-+static CORBA_boolean
-+impl_has_undo (PortableServer_Servant servant, CORBA_Environment * ev)
-+{
-+    u_header_T *curhead;
-+      EditorEngine *e = gtkhtml_editor_engine_from_servant (servant);
-+
-+    if( !persistent_buffer) {
-+        return CORBA_FALSE;
-+    }
-+    /* this logic comes from undo.c */
-+    curhead = persistent_buffer->b_u_curhead;
-+    if (persistent_buffer->b_u_curhead == NULL) {             /* first undo */
-+              curhead = persistent_buffer->b_u_newhead;
-+    } else if (p_ul > 0) {                    /* multi level undo */ 
-+              curhead = persistent_buffer->b_u_curhead->uh_next;
-+    }
-+    if (curbuf->b_u_numhead == 0 || curhead == NULL) {
-+        return CORBA_FALSE;
-+    }
-+    return CORBA_TRUE;
-+}
-+
-+static void
-+impl_drop_undo (PortableServer_Servant servant, CORBA_Environment * ev)
-+{
-+      EditorEngine *e = gtkhtml_editor_engine_from_servant (servant);
-+      printf ("dropUndo\n");
-+}
-+
-+static void
-+engine_object_finalize (GObject *object)
-+{
-+      EditorEngine *e = EDITOR_ENGINE (object);
-+
-+      bonobo_object_release_unref (e->listener, NULL);
-+
-+      G_OBJECT_CLASS (engine_parent_class)->finalize (object);
-+}
-+
-+static void
-+editor_engine_init (GObject *object)
-+{
-+      EditorEngine *e = EDITOR_ENGINE (object);
-+
-+      e->listener = CORBA_OBJECT_NIL;
-+}
-+
-+static void
-+editor_engine_class_init (EditorEngineClass *klass)
-+{
-+      GObjectClass *object_class = G_OBJECT_CLASS (klass);
-+      POA_GNOME_GtkHTML_Editor_Engine__epv *epv = &klass->epv;
-+
-+      engine_parent_class = g_type_class_peek_parent (klass);
-+      object_class->finalize = engine_object_finalize;
-+
-+      epv->_set_listener            = impl_set_listener;
-+      epv->_get_listener            = impl_get_listener;
-+      epv->setParagraphData         = impl_set_paragraph_data;
-+      epv->getParagraphData         = impl_get_paragraph_data;
-+      epv->setObjectDataByType      = impl_set_object_data_by_type;
-+      epv->runCommand               = impl_run_command;
-+      epv->isParagraphEmpty         = impl_is_paragraph_empty;
-+      epv->isPreviousParagraphEmpty = impl_is_previous_paragraph_empty;
-+      epv->searchByData             = impl_search_by_data;
-+      epv->insertHTML               = impl_insert_html;
-+      epv->freeze                   = impl_freeze;
-+      epv->thaw                     = impl_thaw;
-+      epv->undoBegin                = impl_undo_begin;
-+      epv->undoEnd                  = impl_undo_end;
-+      epv->ignoreWord               = impl_ignore_word;
-+      epv->hasUndo                  = impl_has_undo;
-+      epv->dropUndo                 = impl_drop_undo;
-+}
-+
-+BONOBO_TYPE_FUNC_FULL (
-+      EditorEngine,                  /* Glib class name */
-+      GNOME_GtkHTML_Editor_Engine,   /* CORBA interface name */
-+      BONOBO_TYPE_OBJECT,            /* parent type */
-+      editor_engine);                /* local prefix ie. 'echo'_class_init */
-+
-+EditorEngine *
-+editor_engine_new (void)
-+{
-+      EditorEngine *ee;
-+
-+      ee = g_object_new (EDITOR_ENGINE_TYPE, NULL);
-+
-+      return ee;
-+}
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/gtkhtml_editor.h vim/src/gtkhtml_editor.h
---- vimcopy/src/gtkhtml_editor.h       Wed Dec 31 18:00:00 1969
-+++ vim/src/gtkhtml_editor.h   Sat Jul 26 13:16:47 2003
-@@ -0,0 +1,34 @@
-+#ifndef GTKHTML_ENGINE_H_
-+#define GTKHTML_ENGINE_H_
-+
-+G_BEGIN_DECLS
-+
-+typedef struct _EditorEngine EditorEngine;
-+
-+#include <gtk/gtktypeutils.h>
-+#include <bonobo/bonobo-object.h>
-+#include "gtkhtml.h"
-+
-+#define EDITOR_ENGINE_TYPE        (editor_engine_get_type ())
-+#define EDITOR_ENGINE(o)          (GTK_CHECK_CAST ((o), EDITOR_ENGINE_TYPE, EditorEngine))
-+#define EDITOR_ENGINE_CLASS(k)    (GTK_CHECK_CLASS_CAST((k), EDITOR_ENGINE_TYPE, EditorEngineClass))
-+#define IS_EDITOR_ENGINE(o)       (GTK_CHECK_TYPE ((o), EDITOR_ENGINE_TYPE))
-+#define IS_EDITOR_ENGINE_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), EDITOR_ENGINE_TYPE))
-+
-+struct _EditorEngine {
-+      BonoboObject parent;
-+      GNOME_GtkHTML_Editor_Listener listener;
-+};
-+
-+typedef struct {
-+      BonoboObjectClass parent_class;
-+      POA_GNOME_GtkHTML_Editor_Engine__epv epv;
-+} EditorEngineClass;
-+
-+GtkType                               editor_engine_get_type   (void);
-+EditorEngine                         *editor_engine_new        (void);
-+POA_GNOME_GtkHTML_Editor_Engine__epv *editor_engine_get_epv    (void);
-+
-+G_END_DECLS
-+
-+#endif /* GTKHTML_ENGINE_H_ */
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/gtkhtml_editor_common.c vim/src/gtkhtml_editor_common.c
---- vimcopy/src/gtkhtml_editor_common.c        Wed Dec 31 18:00:00 1969
-+++ vim/src/gtkhtml_editor_common.c    Sat Jul 26 13:16:47 2003
-@@ -0,0 +1,306 @@
-+/*
-+ * This file was generated by orbit-idl-2 - DO NOT EDIT!
-+ */
-+
-+#include <string.h>
-+#define ORBIT2_STUBS_API
-+#define ORBIT_IDL_C_COMMON
-+#define Editor_COMMON
-+#include "gtkhtml.h"
-+
-+static const CORBA_unsigned_long ORBit_zero_int = 0;
-+
-+#if ( (TC_IMPL_TC_GNOME_GtkHTML_Editor_Listener_0 == 'E') \
-+&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_Listener_1 == 'd') \
-+&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_Listener_2 == 'i') \
-+&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_Listener_3 == 't') \
-+&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_Listener_4 == 'o') \
-+&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_Listener_5 == 'r') \
-+) && !defined(TC_DEF_TC_GNOME_GtkHTML_Editor_Listener)
-+#define TC_DEF_TC_GNOME_GtkHTML_Editor_Listener 1
-+#ifdef ORBIT_IDL_C_IMODULE_Editor
-+static
-+#endif
-+const struct CORBA_TypeCode_struct TC_GNOME_GtkHTML_Editor_Listener_struct = {
-+   {&ORBit_TypeCode_epv, ORBIT_REFCOUNT_STATIC},
-+   CORBA_tk_objref,
-+   0,
-+   0,
-+   ORBIT_ALIGNOF_CORBA_POINTER,
-+   0,
-+   0,
-+   NULL,
-+   CORBA_OBJECT_NIL,
-+   "Listener",
-+   "IDL:GNOME/GtkHTML/Editor/Listener:1.0",
-+   NULL,
-+   NULL,
-+   -1,
-+   0,
-+   0, 0
-+};
-+#endif
-+#if ( (TC_IMPL_TC_GNOME_GtkHTML_Editor_Engine_0 == 'E') \
-+&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_Engine_1 == 'd') \
-+&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_Engine_2 == 'i') \
-+&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_Engine_3 == 't') \
-+&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_Engine_4 == 'o') \
-+&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_Engine_5 == 'r') \
-+) && !defined(TC_DEF_TC_GNOME_GtkHTML_Editor_Engine)
-+#define TC_DEF_TC_GNOME_GtkHTML_Editor_Engine 1
-+#ifdef ORBIT_IDL_C_IMODULE_Editor
-+static
-+#endif
-+const struct CORBA_TypeCode_struct TC_GNOME_GtkHTML_Editor_Engine_struct = {
-+   {&ORBit_TypeCode_epv, ORBIT_REFCOUNT_STATIC},
-+   CORBA_tk_objref,
-+   0,
-+   0,
-+   ORBIT_ALIGNOF_CORBA_POINTER,
-+   0,
-+   0,
-+   NULL,
-+   CORBA_OBJECT_NIL,
-+   "Engine",
-+   "IDL:GNOME/GtkHTML/Editor/Engine:1.0",
-+   NULL,
-+   NULL,
-+   -1,
-+   0,
-+   0, 0
-+};
-+#endif
-+#if ( (TC_IMPL_TC_GNOME_GtkHTML_Editor_URLRequestEvent_0 == 'E') \
-+&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_URLRequestEvent_1 == 'd') \
-+&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_URLRequestEvent_2 == 'i') \
-+&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_URLRequestEvent_3 == 't') \
-+&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_URLRequestEvent_4 == 'o') \
-+&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_URLRequestEvent_5 == 'r') \
-+) && !defined(TC_DEF_TC_GNOME_GtkHTML_Editor_URLRequestEvent)
-+#define TC_DEF_TC_GNOME_GtkHTML_Editor_URLRequestEvent 1
-+static const char *anon_subnames_array6[] = { "url", "stream" };
-+static const CORBA_TypeCode anon_subtypes_array7[] =
-+   { (CORBA_TypeCode) & TC_CORBA_string_struct,
-+      (CORBA_TypeCode) & TC_Bonobo_Stream_struct };
-+
-+#ifdef ORBIT_IDL_C_IMODULE_Editor
-+static
-+#endif
-+const struct CORBA_TypeCode_struct
-+   TC_GNOME_GtkHTML_Editor_URLRequestEvent_struct = {
-+   {&ORBit_TypeCode_epv, ORBIT_REFCOUNT_STATIC},
-+   CORBA_tk_struct,
-+   0,
-+   0,
-+   ORBIT_ALIGNOF_CORBA_POINTER,
-+   0,
-+   2,
-+   (CORBA_TypeCode *) anon_subtypes_array7,
-+   CORBA_OBJECT_NIL,
-+   "URLRequestEvent",
-+   "IDL:GNOME/GtkHTML/Editor/URLRequestEvent:1.0",
-+   (char **) anon_subnames_array6,
-+   NULL,
-+   -1,
-+   0,
-+   0, 0
-+};
-+#endif
-+
-+#ifndef ORBIT_IDL_C_IMODULE_Editor
-+CORBA_unsigned_long GNOME_GtkHTML_Editor_Listener__classid = 0;
-+#endif
-+
-+#ifndef ORBIT_IDL_C_IMODULE_Editor
-+CORBA_unsigned_long GNOME_GtkHTML_Editor_Engine__classid = 0;
-+#endif
-+
-+/* Interface type data */
-+
-+static ORBit_IArg GNOME_GtkHTML_Editor_Listener_event__arginfo[] = {
-+   {TC_CORBA_string, ORBit_I_ARG_IN, "name"},
-+   {TC_CORBA_any, ORBit_I_ARG_IN, "arg"}
-+};
-+
-+#ifdef ORBIT_IDL_C_IMODULE_Editor
-+static
-+#endif
-+ORBit_IMethod GNOME_GtkHTML_Editor_Listener__imethods[] = {
-+   {
-+    {2, 2, GNOME_GtkHTML_Editor_Listener_event__arginfo, FALSE},
-+    {0, 0, NULL, FALSE},
-+    {0, 0, NULL, FALSE},
-+    TC_CORBA_any, "event", 5,
-+    0}
-+};
-+static CORBA_string GNOME_GtkHTML_Editor_Listener__base_itypes[] = {
-+   "IDL:Bonobo/Unknown:1.0",
-+   "IDL:omg.org/CORBA/Object:1.0"
-+};
-+
-+#ifdef ORBIT_IDL_C_IMODULE_Editor
-+static
-+#endif
-+ORBit_IInterface GNOME_GtkHTML_Editor_Listener__iinterface = {
-+   TC_GNOME_GtkHTML_Editor_Listener, {1, 1,
-+                                    GNOME_GtkHTML_Editor_Listener__imethods,
-+                                    FALSE},
-+   {2, 2, GNOME_GtkHTML_Editor_Listener__base_itypes, FALSE}
-+};
-+
-+static ORBit_IArg GNOME_GtkHTML_Editor_Engine__set_listener__arginfo[] = {
-+   {TC_GNOME_GtkHTML_Editor_Listener, ORBit_I_ARG_IN, "value"}
-+};
-+static ORBit_IArg GNOME_GtkHTML_Editor_Engine_runCommand__arginfo[] = {
-+   {TC_CORBA_string, ORBit_I_ARG_IN, "command"}
-+};
-+static ORBit_IArg GNOME_GtkHTML_Editor_Engine_getParagraphData__arginfo[] = {
-+   {TC_CORBA_string, ORBit_I_ARG_IN, "key"}
-+};
-+static ORBit_IArg GNOME_GtkHTML_Editor_Engine_setParagraphData__arginfo[] = {
-+   {TC_CORBA_string, ORBit_I_ARG_IN, "key"},
-+   {TC_CORBA_string, ORBit_I_ARG_IN, "value"}
-+};
-+static ORBit_IArg GNOME_GtkHTML_Editor_Engine_setObjectDataByType__arginfo[] = {
-+   {TC_CORBA_string, ORBit_I_ARG_IN, "type_name"},
-+   {TC_CORBA_string, ORBit_I_ARG_IN, "key"},
-+   {TC_CORBA_string, ORBit_I_ARG_IN, "data"}
-+};
-+static ORBit_IArg GNOME_GtkHTML_Editor_Engine_searchByData__arginfo[] = {
-+   {TC_CORBA_long, ORBit_I_ARG_IN | ORBit_I_COMMON_FIXED_SIZE, "level"},
-+   {TC_CORBA_string, ORBit_I_ARG_IN, "klass"},
-+   {TC_CORBA_string, ORBit_I_ARG_IN, "key"},
-+   {TC_CORBA_string, ORBit_I_ARG_IN, "value"}
-+};
-+static ORBit_IArg GNOME_GtkHTML_Editor_Engine_insertHTML__arginfo[] = {
-+   {TC_CORBA_string, ORBit_I_ARG_IN, "html"}
-+};
-+static ORBit_IArg GNOME_GtkHTML_Editor_Engine_undoBegin__arginfo[] = {
-+   {TC_CORBA_string, ORBit_I_ARG_IN, "undo_name"},
-+   {TC_CORBA_string, ORBit_I_ARG_IN, "redo_name"}
-+};
-+static ORBit_IArg GNOME_GtkHTML_Editor_Engine_ignoreWord__arginfo[] = {
-+   {TC_CORBA_string, ORBit_I_ARG_IN, "word"}
-+};
-+
-+#ifdef ORBIT_IDL_C_IMODULE_Editor
-+static
-+#endif
-+ORBit_IMethod GNOME_GtkHTML_Editor_Engine__imethods[] = {
-+   {
-+    {0, 0, NULL, FALSE},
-+    {0, 0, NULL, FALSE},
-+    {0, 0, NULL, FALSE},
-+    TC_GNOME_GtkHTML_Editor_Listener, "_get_listener", 13,
-+    0}
-+   , {
-+      {1, 1, GNOME_GtkHTML_Editor_Engine__set_listener__arginfo, FALSE},
-+      {0, 0, NULL, FALSE},
-+      {0, 0, NULL, FALSE},
-+      TC_void, "_set_listener", 13,
-+      0}
-+   , {
-+      {1, 1, GNOME_GtkHTML_Editor_Engine_runCommand__arginfo, FALSE},
-+      {0, 0, NULL, FALSE},
-+      {0, 0, NULL, FALSE},
-+      TC_CORBA_boolean, "runCommand", 10,
-+      0 | ORBit_I_COMMON_FIXED_SIZE}
-+   , {
-+      {1, 1, GNOME_GtkHTML_Editor_Engine_getParagraphData__arginfo, FALSE},
-+      {0, 0, NULL, FALSE},
-+      {0, 0, NULL, FALSE},
-+      TC_CORBA_string, "getParagraphData", 16,
-+      0}
-+   , {
-+      {2, 2, GNOME_GtkHTML_Editor_Engine_setParagraphData__arginfo, FALSE},
-+      {0, 0, NULL, FALSE},
-+      {0, 0, NULL, FALSE},
-+      TC_void, "setParagraphData", 16,
-+      0}
-+   , {
-+      {3, 3, GNOME_GtkHTML_Editor_Engine_setObjectDataByType__arginfo, FALSE},
-+      {0, 0, NULL, FALSE},
-+      {0, 0, NULL, FALSE},
-+      TC_void, "setObjectDataByType", 19,
-+      0}
-+   , {
-+      {4, 4, GNOME_GtkHTML_Editor_Engine_searchByData__arginfo, FALSE},
-+      {0, 0, NULL, FALSE},
-+      {0, 0, NULL, FALSE},
-+      TC_CORBA_boolean, "searchByData", 12,
-+      0 | ORBit_I_COMMON_FIXED_SIZE}
-+   , {
-+      {0, 0, NULL, FALSE},
-+      {0, 0, NULL, FALSE},
-+      {0, 0, NULL, FALSE},
-+      TC_CORBA_boolean, "isParagraphEmpty", 16,
-+      0 | ORBit_I_COMMON_FIXED_SIZE}
-+   , {
-+      {0, 0, NULL, FALSE},
-+      {0, 0, NULL, FALSE},
-+      {0, 0, NULL, FALSE},
-+      TC_CORBA_boolean, "isPreviousParagraphEmpty", 24,
-+      0 | ORBit_I_COMMON_FIXED_SIZE}
-+   , {
-+      {1, 1, GNOME_GtkHTML_Editor_Engine_insertHTML__arginfo, FALSE},
-+      {0, 0, NULL, FALSE},
-+      {0, 0, NULL, FALSE},
-+      TC_void, "insertHTML", 10,
-+      0}
-+   , {
-+      {0, 0, NULL, FALSE},
-+      {0, 0, NULL, FALSE},
-+      {0, 0, NULL, FALSE},
-+      TC_void, "freeze", 6,
-+      0}
-+   , {
-+      {0, 0, NULL, FALSE},
-+      {0, 0, NULL, FALSE},
-+      {0, 0, NULL, FALSE},
-+      TC_void, "thaw", 4,
-+      0}
-+   , {
-+      {2, 2, GNOME_GtkHTML_Editor_Engine_undoBegin__arginfo, FALSE},
-+      {0, 0, NULL, FALSE},
-+      {0, 0, NULL, FALSE},
-+      TC_void, "undoBegin", 9,
-+      0}
-+   , {
-+      {0, 0, NULL, FALSE},
-+      {0, 0, NULL, FALSE},
-+      {0, 0, NULL, FALSE},
-+      TC_void, "undoEnd", 7,
-+      0}
-+   , {
-+      {1, 1, GNOME_GtkHTML_Editor_Engine_ignoreWord__arginfo, FALSE},
-+      {0, 0, NULL, FALSE},
-+      {0, 0, NULL, FALSE},
-+      TC_void, "ignoreWord", 10,
-+      0}
-+   , {
-+      {0, 0, NULL, FALSE},
-+      {0, 0, NULL, FALSE},
-+      {0, 0, NULL, FALSE},
-+      TC_void, "dropUndo", 8,
-+      0}
-+   , {
-+      {0, 0, NULL, FALSE},
-+      {0, 0, NULL, FALSE},
-+      {0, 0, NULL, FALSE},
-+      TC_CORBA_boolean, "hasUndo", 7,
-+      0 | ORBit_I_COMMON_FIXED_SIZE}
-+};
-+static CORBA_string GNOME_GtkHTML_Editor_Engine__base_itypes[] = {
-+   "IDL:Bonobo/Unknown:1.0",
-+   "IDL:omg.org/CORBA/Object:1.0"
-+};
-+
-+#ifdef ORBIT_IDL_C_IMODULE_Editor
-+static
-+#endif
-+ORBit_IInterface GNOME_GtkHTML_Editor_Engine__iinterface = {
-+   TC_GNOME_GtkHTML_Editor_Engine, {17, 17,
-+                                  GNOME_GtkHTML_Editor_Engine__imethods,
-+                                  FALSE},
-+   {2, 2, GNOME_GtkHTML_Editor_Engine__base_itypes, FALSE}
-+};
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/gtkhtml_editor_skels.c vim/src/gtkhtml_editor_skels.c
---- vimcopy/src/gtkhtml_editor_skels.c Wed Dec 31 18:00:00 1969
-+++ vim/src/gtkhtml_editor_skels.c     Sat Jul 26 13:16:47 2003
-@@ -0,0 +1,658 @@
-+/*
-+ * This file was generated by orbit-idl-2 - DO NOT EDIT!
-+ */
-+
-+#include <string.h>
-+#define ORBIT2_STUBS_API
-+#include "gtkhtml.h"
-+
-+void
-+_ORBIT_skel_small_GNOME_GtkHTML_Editor_Listener_event
-+   (POA_GNOME_GtkHTML_Editor_Listener * _o_servant, gpointer _o_retval,
-+    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
-+    CORBA_any * (*_impl_event) (PortableServer_Servant _servant,
-+                              const CORBA_char * name,
-+                              const CORBA_any * arg,
-+                              CORBA_Environment * ev))
-+{
-+   *(CORBA_any * *)_o_retval =
-+      _impl_event(_o_servant, *(const CORBA_char * *) _o_args[0],
-+                (const CORBA_any *) _o_args[1], _o_ev);
-+}
-+
-+void
-+_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine__get_listener
-+   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
-+    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
-+    GNOME_GtkHTML_Editor_Listener(*_impl__get_listener)
-+    (PortableServer_Servant _servant, CORBA_Environment * ev))
-+{
-+   *(GNOME_GtkHTML_Editor_Listener *) _o_retval =
-+      _impl__get_listener(_o_servant, _o_ev);
-+}
-+
-+void
-+_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine__set_listener
-+   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
-+    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
-+    void (*_impl__set_listener) (PortableServer_Servant _servant,
-+                               const GNOME_GtkHTML_Editor_Listener value,
-+                               CORBA_Environment * ev))
-+{
-+   _impl__set_listener(_o_servant,
-+                     *(const GNOME_GtkHTML_Editor_Listener *) _o_args[0],
-+                     _o_ev);
-+}
-+
-+void
-+_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_runCommand
-+   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
-+    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
-+    CORBA_boolean(*_impl_runCommand) (PortableServer_Servant _servant,
-+                                    const CORBA_char * command,
-+                                    CORBA_Environment * ev))
-+{
-+   *(CORBA_boolean *) _o_retval =
-+      _impl_runCommand(_o_servant, *(const CORBA_char * *) _o_args[0], _o_ev);
-+}
-+
-+void
-+_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_getParagraphData
-+   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
-+    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
-+    CORBA_string(*_impl_getParagraphData) (PortableServer_Servant _servant,
-+                                         const CORBA_char * key,
-+                                         CORBA_Environment * ev))
-+{
-+   *(CORBA_string *) _o_retval =
-+      _impl_getParagraphData(_o_servant, *(const CORBA_char * *) _o_args[0],
-+                           _o_ev);
-+}
-+
-+void
-+_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_setParagraphData
-+   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
-+    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
-+    void (*_impl_setParagraphData) (PortableServer_Servant _servant,
-+                                  const CORBA_char * key,
-+                                  const CORBA_char * value,
-+                                  CORBA_Environment * ev))
-+{
-+   _impl_setParagraphData(_o_servant, *(const CORBA_char * *) _o_args[0],
-+                        *(const CORBA_char * *) _o_args[1], _o_ev);
-+}
-+
-+void
-+_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_setObjectDataByType
-+   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
-+    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
-+    void (*_impl_setObjectDataByType) (PortableServer_Servant _servant,
-+                                     const CORBA_char * type_name,
-+                                     const CORBA_char * key,
-+                                     const CORBA_char * data,
-+                                     CORBA_Environment * ev))
-+{
-+   _impl_setObjectDataByType(_o_servant, *(const CORBA_char * *) _o_args[0],
-+                           *(const CORBA_char * *) _o_args[1],
-+                           *(const CORBA_char * *) _o_args[2], _o_ev);
-+}
-+
-+void
-+_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_searchByData
-+   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
-+    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
-+    CORBA_boolean(*_impl_searchByData) (PortableServer_Servant _servant,
-+                                      const CORBA_long level,
-+                                      const CORBA_char * klass,
-+                                      const CORBA_char * key,
-+                                      const CORBA_char * value,
-+                                      CORBA_Environment * ev))
-+{
-+   *(CORBA_boolean *) _o_retval =
-+      _impl_searchByData(_o_servant, *(const CORBA_long *) _o_args[0],
-+                       *(const CORBA_char * *) _o_args[1],
-+                       *(const CORBA_char * *) _o_args[2],
-+                       *(const CORBA_char * *) _o_args[3], _o_ev);
-+}
-+
-+void
-+_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_isParagraphEmpty
-+   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
-+    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
-+    CORBA_boolean(*_impl_isParagraphEmpty) (PortableServer_Servant _servant,
-+                                          CORBA_Environment * ev))
-+{
-+   *(CORBA_boolean *) _o_retval = _impl_isParagraphEmpty(_o_servant, _o_ev);
-+}
-+
-+void
-+_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_isPreviousParagraphEmpty
-+   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
-+    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
-+    CORBA_boolean(*_impl_isPreviousParagraphEmpty) (PortableServer_Servant
-+                                                  _servant,
-+                                                  CORBA_Environment * ev))
-+{
-+   *(CORBA_boolean *) _o_retval =
-+      _impl_isPreviousParagraphEmpty(_o_servant, _o_ev);
-+}
-+
-+void
-+_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_insertHTML
-+   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
-+    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
-+    void (*_impl_insertHTML) (PortableServer_Servant _servant,
-+                            const CORBA_char * html,
-+                            CORBA_Environment * ev))
-+{
-+   _impl_insertHTML(_o_servant, *(const CORBA_char * *) _o_args[0], _o_ev);
-+}
-+
-+void
-+_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_freeze
-+   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
-+    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
-+    void (*_impl_freeze) (PortableServer_Servant _servant,
-+                        CORBA_Environment * ev))
-+{
-+   _impl_freeze(_o_servant, _o_ev);
-+}
-+
-+void
-+_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_thaw
-+   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
-+    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
-+    void (*_impl_thaw) (PortableServer_Servant _servant,
-+                      CORBA_Environment * ev))
-+{
-+   _impl_thaw(_o_servant, _o_ev);
-+}
-+
-+void
-+_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_undoBegin
-+   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
-+    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
-+    void (*_impl_undoBegin) (PortableServer_Servant _servant,
-+                           const CORBA_char * undo_name,
-+                           const CORBA_char * redo_name,
-+                           CORBA_Environment * ev))
-+{
-+   _impl_undoBegin(_o_servant, *(const CORBA_char * *) _o_args[0],
-+                 *(const CORBA_char * *) _o_args[1], _o_ev);
-+}
-+
-+void
-+_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_undoEnd
-+   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
-+    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
-+    void (*_impl_undoEnd) (PortableServer_Servant _servant,
-+                         CORBA_Environment * ev))
-+{
-+   _impl_undoEnd(_o_servant, _o_ev);
-+}
-+
-+void
-+_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_ignoreWord
-+   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
-+    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
-+    void (*_impl_ignoreWord) (PortableServer_Servant _servant,
-+                            const CORBA_char * word,
-+                            CORBA_Environment * ev))
-+{
-+   _impl_ignoreWord(_o_servant, *(const CORBA_char * *) _o_args[0], _o_ev);
-+}
-+
-+void
-+_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_dropUndo
-+   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
-+    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
-+    void (*_impl_dropUndo) (PortableServer_Servant _servant,
-+                          CORBA_Environment * ev))
-+{
-+   _impl_dropUndo(_o_servant, _o_ev);
-+}
-+
-+void
-+_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_hasUndo
-+   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
-+    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
-+    CORBA_boolean(*_impl_hasUndo) (PortableServer_Servant _servant,
-+                                 CORBA_Environment * ev))
-+{
-+   *(CORBA_boolean *) _o_retval = _impl_hasUndo(_o_servant, _o_ev);
-+}
-+static ORBitSmallSkeleton
-+get_skel_small_GNOME_GtkHTML_Editor_Listener(POA_GNOME_GtkHTML_Editor_Listener
-+                                           * servant, const char *opname,
-+                                           gpointer * m_data,
-+                                           gpointer * impl)
-+{
-+   switch (opname[0]) {
-+     case 'e':
-+      if (strcmp((opname + 1), "vent"))
-+       break;
-+      *impl =
-+       (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Listener_epv->event;
-+      *m_data =
-+       (gpointer) & GNOME_GtkHTML_Editor_Listener__iinterface.methods.
-+       _buffer[0];
-+      return (ORBitSmallSkeleton)
-+       _ORBIT_skel_small_GNOME_GtkHTML_Editor_Listener_event;
-+      break;
-+     case 'q':
-+      if (strcmp((opname + 1), "ueryInterface"))
-+       break;
-+      *impl = (gpointer) servant->vepv->Bonobo_Unknown_epv->queryInterface;
-+      *m_data = (gpointer) & Bonobo_Unknown__iinterface.methods._buffer[2];
-+      return (ORBitSmallSkeleton)
-+       _ORBIT_skel_small_Bonobo_Unknown_queryInterface;
-+      break;
-+     case 'r':
-+      if (strcmp((opname + 1), "ef"))
-+       break;
-+      *impl = (gpointer) servant->vepv->Bonobo_Unknown_epv->ref;
-+      *m_data = (gpointer) & Bonobo_Unknown__iinterface.methods._buffer[0];
-+      return (ORBitSmallSkeleton) _ORBIT_skel_small_Bonobo_Unknown_ref;
-+      break;
-+     case 'u':
-+      if (strcmp((opname + 1), "nref"))
-+       break;
-+      *impl = (gpointer) servant->vepv->Bonobo_Unknown_epv->unref;
-+      *m_data = (gpointer) & Bonobo_Unknown__iinterface.methods._buffer[1];
-+      return (ORBitSmallSkeleton) _ORBIT_skel_small_Bonobo_Unknown_unref;
-+      break;
-+     default:
-+      break;
-+   }
-+   return NULL;
-+}
-+
-+void
-+POA_GNOME_GtkHTML_Editor_Listener__init(PortableServer_Servant servant,
-+                                      CORBA_Environment * env)
-+{
-+   static PortableServer_ClassInfo class_info =
-+      { NULL,
-+(ORBit_small_impl_finder) & get_skel_small_GNOME_GtkHTML_Editor_Listener,
-+       "IDL:GNOME/GtkHTML/Editor/Listener:1.0",
-+       &GNOME_GtkHTML_Editor_Listener__classid, NULL,
-+       &GNOME_GtkHTML_Editor_Listener__iinterface };
-+   POA_GNOME_GtkHTML_Editor_Listener__vepv *fakevepv = NULL;
-+
-+   if (((PortableServer_ServantBase *) servant)->vepv[0]->finalize == 0) {
-+      ((PortableServer_ServantBase *) servant)->vepv[0]->finalize =
-+       POA_GNOME_GtkHTML_Editor_Listener__fini;
-+   }
-+   PortableServer_ServantBase__init(((PortableServer_ServantBase *) servant),
-+                                  env);
-+   POA_Bonobo_Unknown__init(servant, env);
-+   ORBit_classinfo_register(&class_info);
-+   ORBIT_SERVANT_SET_CLASSINFO(servant, &class_info);
-+
-+   if (!class_info.vepvmap) {
-+      class_info.vepvmap =
-+       g_new0(ORBit_VepvIdx, GNOME_GtkHTML_Editor_Listener__classid + 1);
-+      class_info.vepvmap[Bonobo_Unknown__classid] =
-+       (((char *) &(fakevepv->Bonobo_Unknown_epv)) -
-+        ((char *) (fakevepv))) / sizeof(GFunc);
-+      class_info.vepvmap[GNOME_GtkHTML_Editor_Listener__classid] =
-+       (((char *) &(fakevepv->GNOME_GtkHTML_Editor_Listener_epv)) -
-+        ((char *) (fakevepv))) / sizeof(GFunc);
-+   }
-+}
-+
-+void
-+POA_GNOME_GtkHTML_Editor_Listener__fini(PortableServer_Servant servant,
-+                                      CORBA_Environment * env)
-+{
-+   POA_Bonobo_Unknown__fini(servant, env);
-+   PortableServer_ServantBase__fini(servant, env);
-+}
-+
-+static ORBitSmallSkeleton
-+get_skel_small_GNOME_GtkHTML_Editor_Engine(POA_GNOME_GtkHTML_Editor_Engine *
-+                                         servant, const char *opname,
-+                                         gpointer * m_data, gpointer * impl)
-+{
-+   switch (opname[0]) {
-+     case '_':
-+      switch (opname[1]) {
-+      case 'g':
-+       if (strcmp((opname + 2), "et_listener"))
-+          break;
-+       *impl =
-+          (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->
-+          _get_listener;
-+       *m_data =
-+          (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.methods.
-+          _buffer[0];
-+       return (ORBitSmallSkeleton)
-+          _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine__get_listener;
-+       break;
-+      case 's':
-+       if (strcmp((opname + 2), "et_listener"))
-+          break;
-+       *impl =
-+          (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->
-+          _set_listener;
-+       *m_data =
-+          (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.methods.
-+          _buffer[1];
-+       return (ORBitSmallSkeleton)
-+          _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine__set_listener;
-+       break;
-+      default:
-+       break;
-+      }
-+      break;
-+     case 'd':
-+      if (strcmp((opname + 1), "ropUndo"))
-+       break;
-+      *impl =
-+       (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->dropUndo;
-+      *m_data =
-+       (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.methods.
-+       _buffer[15];
-+      return (ORBitSmallSkeleton)
-+       _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_dropUndo;
-+      break;
-+     case 'f':
-+      if (strcmp((opname + 1), "reeze"))
-+       break;
-+      *impl =
-+       (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->freeze;
-+      *m_data =
-+       (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.methods.
-+       _buffer[10];
-+      return (ORBitSmallSkeleton)
-+       _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_freeze;
-+      break;
-+     case 'g':
-+      if (strcmp((opname + 1), "etParagraphData"))
-+       break;
-+      *impl =
-+       (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->
-+       getParagraphData;
-+      *m_data =
-+       (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.methods.
-+       _buffer[3];
-+      return (ORBitSmallSkeleton)
-+       _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_getParagraphData;
-+      break;
-+     case 'h':
-+      if (strcmp((opname + 1), "asUndo"))
-+       break;
-+      *impl =
-+       (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->hasUndo;
-+      *m_data =
-+       (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.methods.
-+       _buffer[16];
-+      return (ORBitSmallSkeleton)
-+       _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_hasUndo;
-+      break;
-+     case 'i':
-+      switch (opname[1]) {
-+      case 'g':
-+       if (strcmp((opname + 2), "noreWord"))
-+          break;
-+       *impl =
-+          (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->
-+          ignoreWord;
-+       *m_data =
-+          (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.methods.
-+          _buffer[14];
-+       return (ORBitSmallSkeleton)
-+          _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_ignoreWord;
-+       break;
-+      case 'n':
-+       if (strcmp((opname + 2), "sertHTML"))
-+          break;
-+       *impl =
-+          (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->
-+          insertHTML;
-+       *m_data =
-+          (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.methods.
-+          _buffer[9];
-+       return (ORBitSmallSkeleton)
-+          _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_insertHTML;
-+       break;
-+      case 's':
-+       switch (opname[2]) {
-+         case 'P':
-+          switch (opname[3]) {
-+            case 'a':
-+             if (strcmp((opname + 4), "ragraphEmpty"))
-+                break;
-+             *impl =
-+                (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->
-+                isParagraphEmpty;
-+             *m_data =
-+                (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.
-+                methods._buffer[7];
-+             return (ORBitSmallSkeleton)
-+                _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_isParagraphEmpty;
-+             break;
-+            case 'r':
-+             if (strcmp((opname + 4), "eviousParagraphEmpty"))
-+                break;
-+             *impl =
-+                (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->
-+                isPreviousParagraphEmpty;
-+             *m_data =
-+                (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.
-+                methods._buffer[8];
-+             return (ORBitSmallSkeleton)
-+                _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_isPreviousParagraphEmpty;
-+             break;
-+            default:
-+             break;
-+          }
-+          break;
-+         default:
-+          break;
-+       }
-+       break;
-+      default:
-+       break;
-+      }
-+      break;
-+     case 'q':
-+      if (strcmp((opname + 1), "ueryInterface"))
-+       break;
-+      *impl = (gpointer) servant->vepv->Bonobo_Unknown_epv->queryInterface;
-+      *m_data = (gpointer) & Bonobo_Unknown__iinterface.methods._buffer[2];
-+      return (ORBitSmallSkeleton)
-+       _ORBIT_skel_small_Bonobo_Unknown_queryInterface;
-+      break;
-+     case 'r':
-+      switch (opname[1]) {
-+      case 'e':
-+       if (strcmp((opname + 2), "f"))
-+          break;
-+       *impl = (gpointer) servant->vepv->Bonobo_Unknown_epv->ref;
-+       *m_data = (gpointer) & Bonobo_Unknown__iinterface.methods._buffer[0];
-+       return (ORBitSmallSkeleton) _ORBIT_skel_small_Bonobo_Unknown_ref;
-+       break;
-+      case 'u':
-+       if (strcmp((opname + 2), "nCommand"))
-+          break;
-+       *impl =
-+          (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->
-+          runCommand;
-+       *m_data =
-+          (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.methods.
-+          _buffer[2];
-+       return (ORBitSmallSkeleton)
-+          _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_runCommand;
-+       break;
-+      default:
-+       break;
-+      }
-+      break;
-+     case 's':
-+      switch (opname[1]) {
-+      case 'e':
-+       switch (opname[2]) {
-+         case 'a':
-+          if (strcmp((opname + 3), "rchByData"))
-+             break;
-+          *impl =
-+             (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->
-+             searchByData;
-+          *m_data =
-+             (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.methods.
-+             _buffer[6];
-+          return (ORBitSmallSkeleton)
-+             _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_searchByData;
-+          break;
-+         case 't':
-+          switch (opname[3]) {
-+            case 'O':
-+             if (strcmp((opname + 4), "bjectDataByType"))
-+                break;
-+             *impl =
-+                (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->
-+                setObjectDataByType;
-+             *m_data =
-+                (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.
-+                methods._buffer[5];
-+             return (ORBitSmallSkeleton)
-+                _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_setObjectDataByType;
-+             break;
-+            case 'P':
-+             if (strcmp((opname + 4), "aragraphData"))
-+                break;
-+             *impl =
-+                (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->
-+                setParagraphData;
-+             *m_data =
-+                (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.
-+                methods._buffer[4];
-+             return (ORBitSmallSkeleton)
-+                _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_setParagraphData;
-+             break;
-+            default:
-+             break;
-+          }
-+          break;
-+         default:
-+          break;
-+       }
-+       break;
-+      default:
-+       break;
-+      }
-+      break;
-+     case 't':
-+      if (strcmp((opname + 1), "haw"))
-+       break;
-+      *impl = (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->thaw;
-+      *m_data =
-+       (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.methods.
-+       _buffer[11];
-+      return (ORBitSmallSkeleton)
-+       _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_thaw;
-+      break;
-+     case 'u':
-+      switch (opname[1]) {
-+      case 'n':
-+       switch (opname[2]) {
-+         case 'd':
-+          switch (opname[3]) {
-+            case 'o':
-+             switch (opname[4]) {
-+               case 'B':
-+                if (strcmp((opname + 5), "egin"))
-+                   break;
-+                *impl =
-+                   (gpointer) servant->vepv->
-+                   GNOME_GtkHTML_Editor_Engine_epv->undoBegin;
-+                *m_data =
-+                   (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.
-+                   methods._buffer[12];
-+                return (ORBitSmallSkeleton)
-+                   _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_undoBegin;
-+                break;
-+               case 'E':
-+                if (strcmp((opname + 5), "nd"))
-+                   break;
-+                *impl =
-+                   (gpointer) servant->vepv->
-+                   GNOME_GtkHTML_Editor_Engine_epv->undoEnd;
-+                *m_data =
-+                   (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.
-+                   methods._buffer[13];
-+                return (ORBitSmallSkeleton)
-+                   _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_undoEnd;
-+                break;
-+               default:
-+                break;
-+             }
-+             break;
-+            default:
-+             break;
-+          }
-+          break;
-+         case 'r':
-+          if (strcmp((opname + 3), "ef"))
-+             break;
-+          *impl = (gpointer) servant->vepv->Bonobo_Unknown_epv->unref;
-+          *m_data =
-+             (gpointer) & Bonobo_Unknown__iinterface.methods._buffer[1];
-+          return (ORBitSmallSkeleton)
-+             _ORBIT_skel_small_Bonobo_Unknown_unref;
-+          break;
-+         default:
-+          break;
-+       }
-+       break;
-+      default:
-+       break;
-+      }
-+      break;
-+     default:
-+      break;
-+   }
-+   return NULL;
-+}
-+
-+void
-+POA_GNOME_GtkHTML_Editor_Engine__init(PortableServer_Servant servant,
-+                                    CORBA_Environment * env)
-+{
-+   static PortableServer_ClassInfo class_info =
-+      { NULL,
-+(ORBit_small_impl_finder) & get_skel_small_GNOME_GtkHTML_Editor_Engine, "IDL:GNOME/GtkHTML/Editor/Engine:1.0",
-+       &GNOME_GtkHTML_Editor_Engine__classid, NULL,
-+       &GNOME_GtkHTML_Editor_Engine__iinterface };
-+   POA_GNOME_GtkHTML_Editor_Engine__vepv *fakevepv = NULL;
-+
-+   if (((PortableServer_ServantBase *) servant)->vepv[0]->finalize == 0) {
-+      ((PortableServer_ServantBase *) servant)->vepv[0]->finalize =
-+       POA_GNOME_GtkHTML_Editor_Engine__fini;
-+   }
-+   PortableServer_ServantBase__init(((PortableServer_ServantBase *) servant),
-+                                  env);
-+   POA_Bonobo_Unknown__init(servant, env);
-+   ORBit_classinfo_register(&class_info);
-+   ORBIT_SERVANT_SET_CLASSINFO(servant, &class_info);
-+
-+   if (!class_info.vepvmap) {
-+      class_info.vepvmap =
-+       g_new0(ORBit_VepvIdx, GNOME_GtkHTML_Editor_Engine__classid + 1);
-+      class_info.vepvmap[Bonobo_Unknown__classid] =
-+       (((char *) &(fakevepv->Bonobo_Unknown_epv)) -
-+        ((char *) (fakevepv))) / sizeof(GFunc);
-+      class_info.vepvmap[GNOME_GtkHTML_Editor_Engine__classid] =
-+       (((char *) &(fakevepv->GNOME_GtkHTML_Editor_Engine_epv)) -
-+        ((char *) (fakevepv))) / sizeof(GFunc);
-+   }
-+}
-+
-+void
-+POA_GNOME_GtkHTML_Editor_Engine__fini(PortableServer_Servant servant,
-+                                    CORBA_Environment * env)
-+{
-+   POA_Bonobo_Unknown__fini(servant, env);
-+   PortableServer_ServantBase__fini(servant, env);
-+}
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/gtkhtml_editor_stubs.c vim/src/gtkhtml_editor_stubs.c
---- vimcopy/src/gtkhtml_editor_stubs.c Wed Dec 31 18:00:00 1969
-+++ vim/src/gtkhtml_editor_stubs.c     Sat Jul 26 13:16:47 2003
-@@ -0,0 +1,496 @@
-+/*
-+ * This file was generated by orbit-idl-2 - DO NOT EDIT!
-+ */
-+
-+#include <string.h>
-+#define ORBIT2_STUBS_API
-+#include "gtkhtml.h"
-+
-+CORBA_any *
-+GNOME_GtkHTML_Editor_Listener_event(GNOME_GtkHTML_Editor_Listener _obj,
-+                                  const CORBA_char * name,
-+                                  const CORBA_any * arg,
-+                                  CORBA_Environment * ev)
-+{
-+   CORBA_any *_ORBIT_retval;
-+   POA_GNOME_GtkHTML_Editor_Listener__epv *_ORBIT_epv;
-+
-+   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
-+       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Listener__classid) &&
-+       (_ORBIT_epv =
-+      (POA_GNOME_GtkHTML_Editor_Listener__epv *) ORBIT_STUB_GetEpv(_obj,
-+                                                                   GNOME_GtkHTML_Editor_Listener__classid))->
-+       event) {
-+      ORBIT_STUB_PreCall(_obj);
-+      _ORBIT_retval =
-+       _ORBIT_epv->event(ORBIT_STUB_GetServant(_obj), name, arg, ev);
-+      ORBIT_STUB_PostCall(_obj);
-+   } else {                   /* remote marshal */
-+      gpointer _args[2];
-+
-+      _args[0] = (gpointer) & name;
-+      _args[1] = (gpointer) arg;
-+      ORBit_small_invoke_stub_n(_obj,
-+                              &GNOME_GtkHTML_Editor_Listener__iinterface.
-+                              methods, 0, &_ORBIT_retval, _args, NULL, ev);
-+
-+   }
-+   return _ORBIT_retval;
-+}
-+
-+GNOME_GtkHTML_Editor_Listener
-+GNOME_GtkHTML_Editor_Engine__get_listener(GNOME_GtkHTML_Editor_Engine _obj,
-+                                        CORBA_Environment * ev)
-+{
-+   GNOME_GtkHTML_Editor_Listener _ORBIT_retval;
-+   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
-+
-+   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
-+       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
-+       (_ORBIT_epv =
-+      (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
-+                                                                 GNOME_GtkHTML_Editor_Engine__classid))->
-+       _get_listener) {
-+      ORBIT_STUB_PreCall(_obj);
-+      _ORBIT_retval =
-+       _ORBIT_epv->_get_listener(ORBIT_STUB_GetServant(_obj), ev);
-+      ORBIT_STUB_PostCall(_obj);
-+   } else {                   /* remote marshal */
-+      ORBit_small_invoke_stub_n(_obj,
-+                              &GNOME_GtkHTML_Editor_Engine__iinterface.
-+                              methods, 0, &_ORBIT_retval, NULL, NULL, ev);
-+
-+   }
-+   return _ORBIT_retval;
-+}
-+
-+void
-+GNOME_GtkHTML_Editor_Engine__set_listener(GNOME_GtkHTML_Editor_Engine _obj,
-+                                        const GNOME_GtkHTML_Editor_Listener
-+                                        value, CORBA_Environment * ev)
-+{
-+   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
-+
-+   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
-+       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
-+       (_ORBIT_epv =
-+      (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
-+                                                                 GNOME_GtkHTML_Editor_Engine__classid))->
-+       _set_listener) {
-+      ORBIT_STUB_PreCall(_obj);
-+      _ORBIT_epv->_set_listener(ORBIT_STUB_GetServant(_obj), value, ev);
-+      ORBIT_STUB_PostCall(_obj);
-+   } else {                   /* remote marshal */
-+      gpointer _args[1];
-+
-+      _args[0] = (gpointer) & value;
-+      ORBit_small_invoke_stub_n(_obj,
-+                              &GNOME_GtkHTML_Editor_Engine__iinterface.
-+                              methods, 1, NULL, _args, NULL, ev);
-+
-+   }
-+}
-+CORBA_boolean
-+GNOME_GtkHTML_Editor_Engine_runCommand(GNOME_GtkHTML_Editor_Engine _obj,
-+                                     const CORBA_char * command,
-+                                     CORBA_Environment * ev)
-+{
-+   CORBA_boolean _ORBIT_retval;
-+   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
-+
-+   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
-+       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
-+       (_ORBIT_epv =
-+      (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
-+                                                                 GNOME_GtkHTML_Editor_Engine__classid))->
-+       runCommand) {
-+      ORBIT_STUB_PreCall(_obj);
-+      _ORBIT_retval =
-+       _ORBIT_epv->runCommand(ORBIT_STUB_GetServant(_obj), command, ev);
-+      ORBIT_STUB_PostCall(_obj);
-+   } else {                   /* remote marshal */
-+      gpointer _args[1];
-+
-+      _args[0] = (gpointer) & command;
-+      ORBit_small_invoke_stub_n(_obj,
-+                              &GNOME_GtkHTML_Editor_Engine__iinterface.
-+                              methods, 2, &_ORBIT_retval, _args, NULL, ev);
-+
-+   }
-+   return _ORBIT_retval;
-+}
-+
-+CORBA_string
-+GNOME_GtkHTML_Editor_Engine_getParagraphData(GNOME_GtkHTML_Editor_Engine _obj,
-+                                           const CORBA_char * key,
-+                                           CORBA_Environment * ev)
-+{
-+   CORBA_string _ORBIT_retval;
-+   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
-+
-+   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
-+       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
-+       (_ORBIT_epv =
-+      (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
-+                                                                 GNOME_GtkHTML_Editor_Engine__classid))->
-+       getParagraphData) {
-+      ORBIT_STUB_PreCall(_obj);
-+      _ORBIT_retval =
-+       _ORBIT_epv->getParagraphData(ORBIT_STUB_GetServant(_obj), key, ev);
-+      ORBIT_STUB_PostCall(_obj);
-+   } else {                   /* remote marshal */
-+      gpointer _args[1];
-+
-+      _args[0] = (gpointer) & key;
-+      ORBit_small_invoke_stub_n(_obj,
-+                              &GNOME_GtkHTML_Editor_Engine__iinterface.
-+                              methods, 3, &_ORBIT_retval, _args, NULL, ev);
-+
-+   }
-+   return _ORBIT_retval;
-+}
-+
-+void
-+GNOME_GtkHTML_Editor_Engine_setParagraphData(GNOME_GtkHTML_Editor_Engine _obj,
-+                                           const CORBA_char * key,
-+                                           const CORBA_char * value,
-+                                           CORBA_Environment * ev)
-+{
-+   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
-+
-+   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
-+       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
-+       (_ORBIT_epv =
-+      (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
-+                                                                 GNOME_GtkHTML_Editor_Engine__classid))->
-+       setParagraphData) {
-+      ORBIT_STUB_PreCall(_obj);
-+      _ORBIT_epv->setParagraphData(ORBIT_STUB_GetServant(_obj), key, value,
-+                                 ev);
-+      ORBIT_STUB_PostCall(_obj);
-+   } else {                   /* remote marshal */
-+      gpointer _args[2];
-+
-+      _args[0] = (gpointer) & key;
-+      _args[1] = (gpointer) & value;
-+      ORBit_small_invoke_stub_n(_obj,
-+                              &GNOME_GtkHTML_Editor_Engine__iinterface.
-+                              methods, 4, NULL, _args, NULL, ev);
-+
-+   }
-+}
-+void
-+GNOME_GtkHTML_Editor_Engine_setObjectDataByType(GNOME_GtkHTML_Editor_Engine
-+                                              _obj,
-+                                              const CORBA_char * type_name,
-+                                              const CORBA_char * key,
-+                                              const CORBA_char * data,
-+                                              CORBA_Environment * ev)
-+{
-+   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
-+
-+   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
-+       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
-+       (_ORBIT_epv =
-+      (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
-+                                                                 GNOME_GtkHTML_Editor_Engine__classid))->
-+       setObjectDataByType) {
-+      ORBIT_STUB_PreCall(_obj);
-+      _ORBIT_epv->setObjectDataByType(ORBIT_STUB_GetServant(_obj), type_name,
-+                                    key, data, ev);
-+      ORBIT_STUB_PostCall(_obj);
-+   } else {                   /* remote marshal */
-+      gpointer _args[3];
-+
-+      _args[0] = (gpointer) & type_name;
-+      _args[1] = (gpointer) & key;
-+      _args[2] = (gpointer) & data;
-+      ORBit_small_invoke_stub_n(_obj,
-+                              &GNOME_GtkHTML_Editor_Engine__iinterface.
-+                              methods, 5, NULL, _args, NULL, ev);
-+
-+   }
-+}
-+CORBA_boolean
-+GNOME_GtkHTML_Editor_Engine_searchByData(GNOME_GtkHTML_Editor_Engine _obj,
-+                                       const CORBA_long level,
-+                                       const CORBA_char * klass,
-+                                       const CORBA_char * key,
-+                                       const CORBA_char * value,
-+                                       CORBA_Environment * ev)
-+{
-+   CORBA_boolean _ORBIT_retval;
-+   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
-+
-+   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
-+       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
-+       (_ORBIT_epv =
-+      (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
-+                                                                 GNOME_GtkHTML_Editor_Engine__classid))->
-+       searchByData) {
-+      ORBIT_STUB_PreCall(_obj);
-+      _ORBIT_retval =
-+       _ORBIT_epv->searchByData(ORBIT_STUB_GetServant(_obj), level, klass,
-+                                key, value, ev);
-+      ORBIT_STUB_PostCall(_obj);
-+   } else {                   /* remote marshal */
-+      gpointer _args[4];
-+
-+      _args[0] = (gpointer) & level;
-+      _args[1] = (gpointer) & klass;
-+      _args[2] = (gpointer) & key;
-+      _args[3] = (gpointer) & value;
-+      ORBit_small_invoke_stub_n(_obj,
-+                              &GNOME_GtkHTML_Editor_Engine__iinterface.
-+                              methods, 6, &_ORBIT_retval, _args, NULL, ev);
-+
-+   }
-+   return _ORBIT_retval;
-+}
-+
-+CORBA_boolean
-+GNOME_GtkHTML_Editor_Engine_isParagraphEmpty(GNOME_GtkHTML_Editor_Engine _obj,
-+                                           CORBA_Environment * ev)
-+{
-+   CORBA_boolean _ORBIT_retval;
-+   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
-+
-+   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
-+       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
-+       (_ORBIT_epv =
-+      (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
-+                                                                 GNOME_GtkHTML_Editor_Engine__classid))->
-+       isParagraphEmpty) {
-+      ORBIT_STUB_PreCall(_obj);
-+      _ORBIT_retval =
-+       _ORBIT_epv->isParagraphEmpty(ORBIT_STUB_GetServant(_obj), ev);
-+      ORBIT_STUB_PostCall(_obj);
-+   } else {                   /* remote marshal */
-+      ORBit_small_invoke_stub_n(_obj,
-+                              &GNOME_GtkHTML_Editor_Engine__iinterface.
-+                              methods, 7, &_ORBIT_retval, NULL, NULL, ev);
-+
-+   }
-+   return _ORBIT_retval;
-+}
-+
-+CORBA_boolean
-+GNOME_GtkHTML_Editor_Engine_isPreviousParagraphEmpty
-+   (GNOME_GtkHTML_Editor_Engine _obj, CORBA_Environment * ev)
-+{
-+   CORBA_boolean _ORBIT_retval;
-+   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
-+
-+   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
-+       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
-+       (_ORBIT_epv =
-+      (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
-+                                                                 GNOME_GtkHTML_Editor_Engine__classid))->
-+       isPreviousParagraphEmpty) {
-+      ORBIT_STUB_PreCall(_obj);
-+      _ORBIT_retval =
-+       _ORBIT_epv->isPreviousParagraphEmpty(ORBIT_STUB_GetServant(_obj),
-+                                            ev);
-+      ORBIT_STUB_PostCall(_obj);
-+   } else {                   /* remote marshal */
-+      ORBit_small_invoke_stub_n(_obj,
-+                              &GNOME_GtkHTML_Editor_Engine__iinterface.
-+                              methods, 8, &_ORBIT_retval, NULL, NULL, ev);
-+
-+   }
-+   return _ORBIT_retval;
-+}
-+
-+void
-+GNOME_GtkHTML_Editor_Engine_insertHTML(GNOME_GtkHTML_Editor_Engine _obj,
-+                                     const CORBA_char * html,
-+                                     CORBA_Environment * ev)
-+{
-+   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
-+
-+   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
-+       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
-+       (_ORBIT_epv =
-+      (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
-+                                                                 GNOME_GtkHTML_Editor_Engine__classid))->
-+       insertHTML) {
-+      ORBIT_STUB_PreCall(_obj);
-+      _ORBIT_epv->insertHTML(ORBIT_STUB_GetServant(_obj), html, ev);
-+      ORBIT_STUB_PostCall(_obj);
-+   } else {                   /* remote marshal */
-+      gpointer _args[1];
-+
-+      _args[0] = (gpointer) & html;
-+      ORBit_small_invoke_stub_n(_obj,
-+                              &GNOME_GtkHTML_Editor_Engine__iinterface.
-+                              methods, 9, NULL, _args, NULL, ev);
-+
-+   }
-+}
-+void
-+GNOME_GtkHTML_Editor_Engine_freeze(GNOME_GtkHTML_Editor_Engine _obj,
-+                                 CORBA_Environment * ev)
-+{
-+   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
-+
-+   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
-+       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
-+       (_ORBIT_epv =
-+      (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
-+                                                                 GNOME_GtkHTML_Editor_Engine__classid))->
-+       freeze) {
-+      ORBIT_STUB_PreCall(_obj);
-+      _ORBIT_epv->freeze(ORBIT_STUB_GetServant(_obj), ev);
-+      ORBIT_STUB_PostCall(_obj);
-+   } else {                   /* remote marshal */
-+      ORBit_small_invoke_stub_n(_obj,
-+                              &GNOME_GtkHTML_Editor_Engine__iinterface.
-+                              methods, 10, NULL, NULL, NULL, ev);
-+
-+   }
-+}
-+void
-+GNOME_GtkHTML_Editor_Engine_thaw(GNOME_GtkHTML_Editor_Engine _obj,
-+                               CORBA_Environment * ev)
-+{
-+   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
-+
-+   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
-+       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
-+       (_ORBIT_epv =
-+      (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
-+                                                                 GNOME_GtkHTML_Editor_Engine__classid))->
-+       thaw) {
-+      ORBIT_STUB_PreCall(_obj);
-+      _ORBIT_epv->thaw(ORBIT_STUB_GetServant(_obj), ev);
-+      ORBIT_STUB_PostCall(_obj);
-+   } else {                   /* remote marshal */
-+      ORBit_small_invoke_stub_n(_obj,
-+                              &GNOME_GtkHTML_Editor_Engine__iinterface.
-+                              methods, 11, NULL, NULL, NULL, ev);
-+
-+   }
-+}
-+void
-+GNOME_GtkHTML_Editor_Engine_undoBegin(GNOME_GtkHTML_Editor_Engine _obj,
-+                                    const CORBA_char * undo_name,
-+                                    const CORBA_char * redo_name,
-+                                    CORBA_Environment * ev)
-+{
-+   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
-+
-+   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
-+       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
-+       (_ORBIT_epv =
-+      (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
-+                                                                 GNOME_GtkHTML_Editor_Engine__classid))->
-+       undoBegin) {
-+      ORBIT_STUB_PreCall(_obj);
-+      _ORBIT_epv->undoBegin(ORBIT_STUB_GetServant(_obj), undo_name, redo_name,
-+                          ev);
-+      ORBIT_STUB_PostCall(_obj);
-+   } else {                   /* remote marshal */
-+      gpointer _args[2];
-+
-+      _args[0] = (gpointer) & undo_name;
-+      _args[1] = (gpointer) & redo_name;
-+      ORBit_small_invoke_stub_n(_obj,
-+                              &GNOME_GtkHTML_Editor_Engine__iinterface.
-+                              methods, 12, NULL, _args, NULL, ev);
-+
-+   }
-+}
-+void
-+GNOME_GtkHTML_Editor_Engine_undoEnd(GNOME_GtkHTML_Editor_Engine _obj,
-+                                  CORBA_Environment * ev)
-+{
-+   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
-+
-+   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
-+       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
-+       (_ORBIT_epv =
-+      (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
-+                                                                 GNOME_GtkHTML_Editor_Engine__classid))->
-+       undoEnd) {
-+      ORBIT_STUB_PreCall(_obj);
-+      _ORBIT_epv->undoEnd(ORBIT_STUB_GetServant(_obj), ev);
-+      ORBIT_STUB_PostCall(_obj);
-+   } else {                   /* remote marshal */
-+      ORBit_small_invoke_stub_n(_obj,
-+                              &GNOME_GtkHTML_Editor_Engine__iinterface.
-+                              methods, 13, NULL, NULL, NULL, ev);
-+
-+   }
-+}
-+void
-+GNOME_GtkHTML_Editor_Engine_ignoreWord(GNOME_GtkHTML_Editor_Engine _obj,
-+                                     const CORBA_char * word,
-+                                     CORBA_Environment * ev)
-+{
-+   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
-+
-+   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
-+       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
-+       (_ORBIT_epv =
-+      (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
-+                                                                 GNOME_GtkHTML_Editor_Engine__classid))->
-+       ignoreWord) {
-+      ORBIT_STUB_PreCall(_obj);
-+      _ORBIT_epv->ignoreWord(ORBIT_STUB_GetServant(_obj), word, ev);
-+      ORBIT_STUB_PostCall(_obj);
-+   } else {                   /* remote marshal */
-+      gpointer _args[1];
-+
-+      _args[0] = (gpointer) & word;
-+      ORBit_small_invoke_stub_n(_obj,
-+                              &GNOME_GtkHTML_Editor_Engine__iinterface.
-+                              methods, 14, NULL, _args, NULL, ev);
-+
-+   }
-+}
-+void
-+GNOME_GtkHTML_Editor_Engine_dropUndo(GNOME_GtkHTML_Editor_Engine _obj,
-+                                   CORBA_Environment * ev)
-+{
-+   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
-+
-+   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
-+       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
-+       (_ORBIT_epv =
-+      (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
-+                                                                 GNOME_GtkHTML_Editor_Engine__classid))->
-+       dropUndo) {
-+      ORBIT_STUB_PreCall(_obj);
-+      _ORBIT_epv->dropUndo(ORBIT_STUB_GetServant(_obj), ev);
-+      ORBIT_STUB_PostCall(_obj);
-+   } else {                   /* remote marshal */
-+      ORBit_small_invoke_stub_n(_obj,
-+                              &GNOME_GtkHTML_Editor_Engine__iinterface.
-+                              methods, 15, NULL, NULL, NULL, ev);
-+
-+   }
-+}
-+CORBA_boolean
-+GNOME_GtkHTML_Editor_Engine_hasUndo(GNOME_GtkHTML_Editor_Engine _obj,
-+                                  CORBA_Environment * ev)
-+{
-+   CORBA_boolean _ORBIT_retval;
-+   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
-+
-+   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
-+       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
-+       (_ORBIT_epv =
-+      (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
-+                                                                 GNOME_GtkHTML_Editor_Engine__classid))->
-+       hasUndo) {
-+      ORBIT_STUB_PreCall(_obj);
-+      _ORBIT_retval = _ORBIT_epv->hasUndo(ORBIT_STUB_GetServant(_obj), ev);
-+      ORBIT_STUB_PostCall(_obj);
-+   } else {                   /* remote marshal */
-+      ORBit_small_invoke_stub_n(_obj,
-+                              &GNOME_GtkHTML_Editor_Engine__iinterface.
-+                              methods, 16, &_ORBIT_retval, NULL, NULL, ev);
-+
-+   }
-+   return _ORBIT_retval;
-+}
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/gui.c vim/src/gui.c
---- vimcopy/src/gui.c  Sat Jan 10 13:10:01 2004
-+++ vim/src/gui.c      Sat Jan 10 13:06:43 2004
-@@ -439,8 +439,12 @@
-      * Create the GUI shell.
-      */
-     gui.in_use = TRUE;                /* Must be set after menus have been set up */
-+#ifdef FEAT_GUI_COMPONENT
-+    vim_bonobo_wait_for_instantiation();
-+#else
-     if (gui_mch_init() == FAIL)
-       goto error;
-+#endif
-     /* Avoid a delay for an error message that was printed in the terminal
-      * where Vim was started. */
-@@ -4061,8 +4065,8 @@
- #ifdef FEAT_GUI_GTK
-       /* Need to wake up the main loop */
--      if (gtk_main_level() > 0)
--          gtk_main_quit();
-+      if (MAIN_LEVEL() > 0)
-+          MAIN_QUIT();
- #endif
-     }
- }
-@@ -4275,8 +4279,12 @@
-     int
- no_console_input()
- {
--    return ((!gui.in_use || gui.starting)
--# ifndef NO_CONSOLE
-+    return ((!gui.in_use || gui.starting || !gui.shell_created
-+#ifdef FEAT_GUI_COMPONENT
-+            || gui.processing_call
-+#endif
-+                )
-+# if !defined(NO_CONSOLE) && !defined(FEAT_GUI_COMPONENT)
-           && !isatty(0) && !isatty(2)
- # endif
-           );
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/gui.h vim/src/gui.h
---- vimcopy/src/gui.h  Tue May  6 12:02:22 2003
-+++ vim/src/gui.h      Mon Oct 27 22:28:19 2003
-@@ -35,6 +35,22 @@
- # include <gtk/gtk.h>
- #endif
-+# if defined(FEAT_GUI_GNOME) && defined(FEAT_GUI_COMPONENT)
-+    #include "libbonoboui.h"
-+    #include "vim_bonobo_main.h"
-+    #include "vim_bonobo_factory.h"
-+    #define MAIN vim_bonobo_main
-+    #define MAIN_LEVEL vim_bonobo_main_level
-+    #define MAIN_QUIT vim_bonobo_main_quit
-+    #define MAIN_ITERATION_DO vim_bonobo_main_iteration_do
-+    #define NO_CONSOLE
-+# else
-+    #define MAIN gtk_main
-+    #define MAIN_LEVEL gtk_main_level
-+    #define MAIN_QUIT gtk_main_quit
-+    #define MAIN_ITERATION_DO gtk_main_iteration_do
-+#endif
-+
- #ifdef FEAT_GUI_BEOS
- # include "gui_beos.h"
- #endif
-@@ -392,6 +408,14 @@
-     GtkWidget *toolbar;           /* toolbar */
- # endif
- # ifdef FEAT_GUI_GNOME
-+#  ifdef FEAT_GUI_COMPONENT
-+    GtkWidget     *vbox;
-+    BonoboPlug    *plug;
-+    BonoboControl *control;
-+    BonoboPersistStream * pstream;
-+    BonoboPersistFile * pfile;
-+    int                processing_call;   /* gui loop is handling a call */
-+#  endif
-     GtkWidget *menubar_h;         /* menubar handle */
-     GtkWidget *toolbar_h;         /* toolbar handle */
- # endif
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/gui_gtk.c vim/src/gui_gtk.c
---- vimcopy/src/gui_gtk.c      Thu Jan 15 10:17:11 2004
-+++ vim/src/gui_gtk.c  Thu Jan 15 10:13:18 2004
-@@ -39,7 +39,7 @@
- #include "vim.h"
--#ifdef FEAT_GUI_GNOME
-+#if 0
- /* Gnome redefines _() and N_().  Grrr... */
- # ifdef _
- #  undef _
-@@ -549,9 +549,332 @@
- # endif /* !HAVE_GTK2 */
-+#ifdef FEAT_GUI_COMPONENT
-+
-+
-+static void
-+verb_activate( BonoboUIComponent *uic, gpointer data, const char *cname )
-+{
-+    gui_menu_cb((vimmenu_T *) data);
-+
-+    /* make sure the menu action is taken immediately */
-+    if (MAIN_LEVEL() > 0)
-+      MAIN_QUIT();
-+}
-+
-+/* Takes name (a label), and appends a normalized version of name to
-+ * the destination string.  Normalization in this case means taking only 
-+ * alphanumeric characters, and discarding all others.  */
-+static void g_string_append_normalized_name( GString * dest, char_u * name )
-+{
-+    gchar * cur;
-+
-+    if( name == NULL ) 
-+    {
-+        return;
-+    }
-+    cur = name;
-+    while( *cur != '\0' ) {
-+        gunichar wc;
-+        wc = g_utf8_get_char(cur);
-+        if( g_unichar_isalnum( wc ) ) {
-+            g_string_append_unichar( dest, wc );
-+        }
-+        cur = g_utf8_next_char(cur);
-+    }
-+}
-+
-+/* for the given menu, create the corresponding xml path.
-+ * if to_parent is TRUE, returns the path to the parent of the given menu.
-+ */
-+static
-+char * xml_path_for_menu( vimmenu_T * menu, int to_parent )
-+{
-+    GString * normname;
-+    GString * path;
-+    char * retpath;
-+    
-+    normname = g_string_sized_new( 64 );
-+    path = g_string_sized_new( 128 );
-+    while( 1 ) {
-+        if( menu_is_toolbar(menu->name) ) {
-+            /* "Toolbar" is a standard Bonobo UI element, but Vim uses "ToolBar", so we
-+             * have to check for this. */
-+            g_string_prepend( path, "/Toolbar");
-+        } else {
-+            g_string_assign( normname, "" );
-+            g_string_append_normalized_name( normname, menu->dname );
-+            g_string_prepend( path, normname->str );
-+            g_string_prepend( path, "/" );
-+        }
-+        if( menu->parent == NULL ) {
-+            if( menu && menu_is_menubar( menu->name ) ) {
-+                g_string_prepend( path, "/menu" );
-+            }
-+            break;
-+        }
-+        menu = menu->parent;
-+    }
-+    g_string_free( normname, TRUE );
-+    retpath = path->str;
-+    g_string_free( path, FALSE );
-+
-+    if( to_parent ) {
-+        gchar * slash;
-+        slash = g_strrstr(retpath, "/");
-+        if( slash == retpath )
-+            slash[1] = '\0';
-+        else if( slash ) 
-+            *slash = '\0';
-+    }
-+    return( retpath );
-+}
-+
-+/* Because the container which embeds Vim may not have the same toolbar icons
-+ * installed, we need to send the icons in the XML stream.  This function
-+ * takes the given GtkImage, encodes it as XML and returns the resulting XML
-+ * as a string. */
-+static char *
-+gtk_image_to_xml_attrs( GtkImage * image)
-+{
-+    GString * xml = g_string_sized_new(32);
-+    GtkImageType type = gtk_image_get_storage_type(image);
-+    char * attrs;
-+    char * imagexml;
-+
-+    if( type == GTK_IMAGE_STOCK ) {
-+        GtkIconSize size;
-+        GtkIconSet * iconset;
-+        gchar * stockname;
-+        GdkPixbuf * pixbuf;
-+
-+        gtk_image_get_stock(image, &stockname, &size);
-+        pixbuf = gtk_widget_render_icon(gui.drawarea, stockname, size, NULL);
-+        imagexml = bonobo_ui_util_pixbuf_to_xml(pixbuf);
-+        g_string_append_printf(xml, " pixtype=\"pixbuf\" pixname=\"%s\"", imagexml);
-+        g_object_unref(pixbuf);
-+        g_free(imagexml);
-+    } else if( type == GTK_IMAGE_PIXBUF ) {
-+        imagexml = bonobo_ui_util_pixbuf_to_xml(gtk_image_get_pixbuf(image));
-+        g_string_append_printf(xml, " pixtype=\"pixbuf\" pixname=\"%s\"", imagexml);
-+        g_free(imagexml);
-+    }
-+    attrs = xml->str;
-+    g_string_free(xml, FALSE);
-+    return( attrs );
-+}
-+
-+
-+/* Generate XML which represents Vim's menus and toolbars.  Starts from the
-+ * given menu entry.  XML is appended to "xml", and commands/verbs are added
-+ * to the "commands" list.  If do_siblings is true, XML is also generated for
-+ * the siblings of the given menu (following the menu->next pointer); otherwise
-+ * only the menu and its descendents are processed.
-+ */
-+static
-+void generate_gui_xml_recurse( vimmenu_T * menu, GString * xml, GSList ** commands, int do_siblings)
-+{
-+    GString * normname = g_string_sized_new(16);
-+    GString * verbname = g_string_sized_new(32);
-+    char_u * label;
-+    int use_mnemonic;
-+    BonoboUIComponent *uic;
-+    gchar * command;
-+
-+    uic = bonobo_control_get_ui_component (BONOBO_CONTROL (gui.control));
-+
-+    while( menu ) 
-+    {
-+        use_mnemonic = (p_wak[0] != 'n' );
-+        label = translate_mnemonic_tag( menu->name, use_mnemonic );
-+        g_string_assign( normname, "" );
-+        g_string_append_normalized_name( normname, menu->dname );
-+        if( menu->children ) {
-+            if( menu_is_toolbar( menu->name )) {
-+                g_string_append( xml, "<dockitem name=\"Toolbar\" look=\"icon\" tips=\"1\">");
-+                generate_gui_xml_recurse( menu->children, xml, commands, TRUE );
-+                g_string_append( xml, "</dockitem>");
-+            } else {
-+                g_string_append_printf( xml, "<submenu name=\"%s\" label=\"%s\">\n", normname->str, label);
-+
-+                generate_gui_xml_recurse( menu->children, xml, commands, TRUE );
-+                g_string_append( xml, "</submenu>\n");
-+            }
-+        } else if( menu_is_separator(menu->name)) {
-+            g_string_append( xml, "<separator />\n" );
-+        } else if( menu->parent && menu_is_toolbar(menu->parent->name)) {
-+            char * menupath = xml_path_for_menu(menu, FALSE);
-+            GtkImage *image = NULL;
-+            char * imagexml;
-+            char_u *tooltip;
-+
-+            g_string_assign(verbname, "");
-+            g_string_append_normalized_name(verbname, menupath);
-+            vim_free(menupath);
-+            image = GTK_IMAGE(create_menu_icon(menu, GTK_ICON_SIZE_SMALL_TOOLBAR));
-+            imagexml = gtk_image_to_xml_attrs(image);
-+            tooltip = CONVERT_TO_UTF8(menu->strings[MENU_INDEX_TIP]);
-+            g_string_append_printf( xml, "<toolitem name=\"%s\" label=\"%s\" verb=\"%s\" tip=\"%s\" %s />\n", normname->str, label, verbname->str, tooltip, imagexml);
-+            gtk_object_sink(GTK_OBJECT(image));
-+            g_free(imagexml);
-+            CONVERT_TO_UTF8_FREE(tooltip);
-+            
-+            command = g_strdup_printf( "<cmd name=\"%s\" sensitive=\"%c\" />\n", verbname->str, menu->sensitive ? '1' : '0');
-+            *commands = g_slist_prepend( *commands, command );
-+            bonobo_ui_component_add_verb(uic, verbname->str, verb_activate, menu);
-+        } else if( menu_is_menubar(menu->name)) {
-+            char * menupath = xml_path_for_menu(menu, FALSE);
-+
-+            g_string_assign(verbname, "");
-+            g_string_append_normalized_name(verbname, menupath);
-+            vim_free(menupath);
-+            
-+            g_string_append_printf( xml, "<menuitem name=\"%s\" label=\"%s\" verb=\"%s\" />\n", normname->str, label, verbname->str);
-+
-+            command = g_strdup_printf( "<cmd name=\"%s\" sensitive=\"%c\" />\n", verbname->str, menu->sensitive ? '1' : '0');
-+            *commands = g_slist_prepend( *commands, command );
-+            bonobo_ui_component_add_verb(uic, verbname->str, verb_activate, menu);
-+        }
-+        if( label ) {
-+            vim_free( label );
-+        }
-+        if( do_siblings ) {
-+            menu = menu->next;
-+        } else {
-+            menu = NULL;
-+        }
-+    }
-+    g_string_free( normname, TRUE );
-+}
-+
-+/* Create XML representing the menus and toolbars, and send them to the
-+ * container application.  We only need to process menu entries which
-+ * have changed (they are marked "dirty"). */
-+static
-+void set_gui_xml(vimmenu_T * menu)
-+{
-+    GSList * commands = NULL;
-+    GSList * command;
-+    BonoboUIComponent *uic;
-+    GString * xml = g_string_sized_new(1024);
-+    int path_exists;
-+    uic = bonobo_control_get_ui_component (BONOBO_CONTROL (gui.control));
-+
-+    if( bonobo_ui_component_get_container(uic) == CORBA_OBJECT_NIL ) {
-+        return;
-+    }
-+
-+    while( menu ) {
-+        if( menu->dirty ) {
-+            if (menu_is_popup(menu->name)) {
-+                /* do nothing */            
-+            } else if( menu_is_menubar(menu->name)) {
-+                char * menupath = xml_path_for_menu(menu, TRUE);
-+                path_exists = bonobo_ui_component_path_exists(uic, menupath, NULL);
-+                g_string_assign(xml, "");
-+                generate_gui_xml_recurse (menu, xml, &commands, FALSE);
-+                /*fprintf(stdout, "set %s\n", menupath);*/
-+                /*fprintf(stdout, "set %s\n%s", menupath, xml->str);*/
-+                /*fflush(stdout);*/
-+                bonobo_ui_component_set(uic, menupath, xml->str, NULL);
-+                g_free(menupath);
-+            } else if( menu_is_toolbar(menu->name)) {
-+                char * menupath = xml_path_for_menu(menu, TRUE);
-+                path_exists = bonobo_ui_component_path_exists(uic, menupath, NULL);
-+                g_string_assign(xml, "");
-+                generate_gui_xml_recurse (menu, xml, &commands, FALSE);
-+                /*fprintf(stdout, "set %s\n", menupath);*/
-+                /*fprintf(stdout, "set %s\n%s", menupath, xml->str);*/
-+                /*fflush(stdout);*/
-+                bonobo_ui_component_set(uic, menupath, xml->str, NULL);
-+                g_free(menupath);
-+            }
-+            menu->dirty = FALSE;
-+        }
-+        menu = menu->next;
-+    }
-+    /* the commands are inserted separately into a list, and set one by one,
-+     * otherwise it's not possible to update a subtree of the UI 
-+     */
-+    command = commands;
-+    while( command ) {
-+        /*fprintf(stdout, "set %s\n%s", "/commands", command->data);
-+        fflush(stdout);*/
-+        bonobo_ui_component_set(uic, "/commands", command->data, NULL);
-+        g_free(command->data);
-+        command = command->next;
-+    }
-+    g_slist_free( commands );
-+}
-+
-+
-+/* remember whether a timeout has been scheduled for updating the gui */
-+static gboolean update_gui_idle_installed = FALSE;
-+
-+/* if we have been embedded in a container, update the gui now, otherwise
-+ * wait awhile and try again. */
-+static gboolean
-+update_gui_idle(gpointer data)
-+{
-+    BonoboUIComponent *uic;
-+
-+    uic = bonobo_control_get_ui_component (BONOBO_CONTROL (gui.control));
-+    if( bonobo_ui_component_get_container(uic) == CORBA_OBJECT_NIL ) {
-+        /* we aren't in a container yet; try again later... */
-+        g_timeout_add(100, &update_gui_idle, NULL);
-+        return FALSE;
-+    }
-+    bonobo_ui_component_freeze(uic, NULL);
-+    set_gui_xml( (vimmenu_T *)root_menu );
-+    update_gui_idle_installed = FALSE;
-+    bonobo_ui_component_thaw(uic, NULL);
-+    return FALSE; /* don't call me again */
-+}
-+
-+/* Mark the given menu as dirty -- we need to re-send the XML representing
-+ * this menu to the container.  But don't do the update immediately; otherwise
-+ * we'd be generating the complete UI XML each time a menu entry is added,
-+ * which would be very slow.  Instead, schedule an update in which all 
-+ * dirty menus will be processed. */
-+void
-+update_menu_later(vimmenu_T *menu)
-+{
-+    if (!update_gui_idle_installed)
-+    {
-+        update_gui_idle_installed = TRUE;
-+        g_idle_add_full(GDK_PRIORITY_EVENTS + 10,
-+                        &update_gui_idle, NULL, NULL);
-+    }
-+    while( menu->parent ) 
-+        menu = menu->parent;
-+    menu->dirty = TRUE;
-+}
-+
-+/* Schedule an update for the entire UI (all menus and toolbars) */
-+void update_ui_later()
-+{
-+    vimmenu_T *menu = root_menu;
-+
-+    if (!update_gui_idle_installed)
-+    {
-+        update_gui_idle_installed = TRUE;
-+        g_idle_add_full(GDK_PRIORITY_EVENTS + 10,
-+                        &update_gui_idle, NULL, NULL);
-+    }
-+    while( menu ) {
-+        menu->dirty = TRUE;
-+        menu = menu->next;
-+    }
-+}
-+#endif
-+
-     void
- gui_mch_add_menu(vimmenu_T *menu, int idx)
- {
-+#ifdef FEAT_GUI_COMPONENT
-+    update_menu_later(menu);
-+    return;
-+#else
-     vimmenu_T *parent;
-     GtkWidget *parent_widget;
-@@ -597,6 +920,7 @@
-     if (vim_strchr(p_go, GO_TEAROFF) != NULL)
-       gtk_widget_show(menu->tearoff_handle);
-     gtk_menu_prepend(GTK_MENU(menu->submenu_id), menu->tearoff_handle);
-+#endif
- }
- /*ARGSUSED*/
-@@ -613,8 +937,8 @@
- # endif
-     /* make sure the menu action is taken immediately */
--    if (gtk_main_level() > 0)
--      gtk_main_quit();
-+    if (MAIN_LEVEL() > 0)
-+      MAIN_QUIT();
- }
- # if defined(FEAT_TOOLBAR) && !defined(HAVE_GTK2)
-@@ -719,6 +1043,10 @@
-     void
- gui_mch_add_menu_item(vimmenu_T *menu, int idx)
- {
-+#ifdef FEAT_GUI_COMPONENT
-+    update_menu_later(menu);
-+    return;
-+#else
-     vimmenu_T *parent;
-     parent = menu->parent;
-@@ -821,6 +1149,7 @@
-           gtk_signal_connect(GTK_OBJECT(menu->id), "activate",
-                              GTK_SIGNAL_FUNC(menu_item_activate), menu);
-     }
-+#endif
- }
- #endif /* FEAT_MENU */
-@@ -845,6 +1174,10 @@
-     guint     accel_key;
- # endif
-+#ifdef FEAT_GUI_COMPONENT
-+    return;
-+#endif
-+
-     for (menu = root_menu; menu != NULL; menu = menu->next)
-     {
-       if (menu->id == NULL)
-@@ -901,6 +1234,9 @@
-     void
- gui_mch_toggle_tearoffs(int enable)
- {
-+#ifdef FEAT_GUI_COMPONENT
-+    return;
-+#endif
-     recurse_tearoffs(root_menu, enable);
- }
- #endif /* FEAT_MENU */
-@@ -1005,6 +1341,9 @@
-     void
- gui_mch_destroy_menu(vimmenu_T *menu)
- {
-+#ifdef FEAT_GUI_COMPONENT
-+    return;
-+#endif
- # ifdef FEAT_TOOLBAR
-     if (menu->parent != NULL && menu_is_toolbar(menu->parent->name))
-     {
-@@ -1119,8 +1458,8 @@
-     gui_drag_scrollbar(sb, value, dragging);
--    if (gtk_main_level() > 0)
--      gtk_main_quit();
-+    if (MAIN_LEVEL() > 0)
-+      MAIN_QUIT();
- }
- /* SBAR_VERT or SBAR_HORIZ */
-@@ -1179,8 +1518,8 @@
-     vw->browse_fname = (char_u *)g_strdup(gtk_file_selection_get_filename(
-                                       GTK_FILE_SELECTION(vw->filedlg)));
-     gtk_widget_hide(vw->filedlg);
--    if (gtk_main_level() > 0)
--      gtk_main_quit();
-+    if (MAIN_LEVEL() > 0)
-+      MAIN_QUIT();
- }
- /*ARGSUSED*/
-@@ -1195,8 +1534,8 @@
-       vw->browse_fname = NULL;
-     }
-     gtk_widget_hide(vw->filedlg);
--    if (gtk_main_level() > 0)
--      gtk_main_quit();
-+    if (MAIN_LEVEL() > 0)
-+      MAIN_QUIT();
- }
- /*ARGSUSED*/
-@@ -1210,8 +1549,8 @@
-     }
-     gui.filedlg = NULL;
--    if (gtk_main_level() > 0)
--      gtk_main_quit();
-+    if (MAIN_LEVEL() > 0)
-+      MAIN_QUIT();
-     return FALSE;
- }
-@@ -1294,7 +1633,7 @@
-     gtk_widget_show(gui.filedlg);
-     while (gui.filedlg && GTK_WIDGET_DRAWABLE(gui.filedlg))
--      gtk_main_iteration_do(TRUE);
-+      MAIN_ITERATION_DO(TRUE);
-     if (gui.browse_fname == NULL)
-       return NULL;
-@@ -1514,8 +1853,8 @@
- dlg_destroy_cb(int *p)
- {
-     *p = TRUE;                /* set dialog_destroyed to break out of the loop */
--    if (gtk_main_level() > 0)
--      gtk_main_quit();
-+    if (MAIN_LEVEL() > 0)
-+      MAIN_QUIT();
- }
- /* ARGSUSED */
-@@ -1815,7 +2154,7 @@
-     /* loop here until the dialog goes away */
-     while (dialog_status == -1 && !dialog_destroyed
-                                              && GTK_WIDGET_DRAWABLE(dialog))
--      gtk_main_iteration_do(TRUE);
-+      MAIN_ITERATION_DO(TRUE);
-     if (dialog_status < 0)
-       dialog_status = 0;
-@@ -2799,8 +3138,8 @@
-     CONVERT_FROM_UTF8_FREE(find_text);
- #endif
--    if (rc && gtk_main_level() > 0)
--      gtk_main_quit(); /* make sure cmd will be handled immediately */
-+    if (rc && MAIN_LEVEL() > 0)
-+        MAIN_QUIT(); /* make sure cmd will be handled immediately */
- }
- /* our usual callback function */
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/gui_gtk_x11.c vim/src/gui_gtk_x11.c
---- vimcopy/src/gui_gtk_x11.c  Thu Jan 15 10:17:11 2004
-+++ vim/src/gui_gtk_x11.c      Thu Jan 15 10:13:19 2004
-@@ -24,6 +24,7 @@
- #include "vim.h"
- #ifdef FEAT_GUI_GNOME
- /* Gnome redefines _() and N_().  Grrr... */
-+#if 0
- # ifdef _
- #  undef _
- # endif
-@@ -36,6 +37,7 @@
- # ifdef bindtextdomain
- #  undef bindtextdomain
- # endif
-+#endif
- # if defined(FEAT_GETTEXT) && !defined(ENABLE_NLS)
- #  define ENABLE_NLS  /* so the texts in the dialog boxes are translated */
- # endif
-@@ -615,9 +617,10 @@
- expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data)
- {
-     /* Skip this when the GUI isn't set up yet, will redraw later. */
--    if (gui.starting)
-+    if (gui.starting) {
-+        g_warning("ignoring expose_event; gui still starting.\n");
-       return FALSE;
--
-+    }
-     out_flush();              /* make sure all output has been processed */
-     gui_redraw(event->area.x, event->area.y,
-              event->area.width, event->area.height);
-@@ -658,8 +661,8 @@
-       xev.xproperty.state = PropertyNewValue;
-       serverEventProc(GDK_WINDOW_XDISPLAY(widget->window), &xev);
--      if (gtk_main_level() > 0)
--          gtk_main_quit();
-+      if (MAIN_LEVEL() > 0)
-+          MAIN_QUIT();
-     }
-     return FALSE;
- }
-@@ -760,6 +763,10 @@
-     if (blink_state == BLINK_NONE)
-       gui_mch_start_blink();
-+#ifdef FEAT_GUI_COMPONENT
-+    /*gtk_plug_grab_focus(GTK_PLUG(gui.plug));*/
-+    /*gtk_window_set_focus(GTK_WINDOW(gui.plug), gui.drawarea);*/
-+#endif
-     /* make sure keyboard input goes there */
-     if (gtk_socket_id == 0 || !GTK_WIDGET_HAS_FOCUS(gui.drawarea))
-       gtk_widget_grab_focus(gui.drawarea);
-@@ -771,6 +778,11 @@
-     static gint
- leave_notify_event(GtkWidget *widget, GdkEventCrossing *event, gpointer data)
- {
-+#ifdef FEAT_GUI_COMPONENT
-+    /*gtk_plug_ungrab_focus(GTK_PLUG(gui.plug));*/
-+    /*gdk_display_keyboard_ungrab (gtk_widget_get_display (gui.drawarea),
-+                                 gtk_get_current_event_time ());*/
-+#endif
-     if (blink_state != BLINK_NONE)
-       gui_mch_stop_blink();
-@@ -781,8 +793,16 @@
-     static gint
- focus_in_event(GtkWidget *widget, GdkEventFocus *event, gpointer data)
- {
-+    GdkEventMask mask;
-     gui_focus_change(TRUE);
-+#ifdef FEAT_GUI_COMPONENT
-+    gtk_widget_grab_focus(gui.drawarea);
-+    mask = gdk_window_get_events(gui.drawarea->window);
-+    mask |= GDK_KEY_PRESS | GDK_KEY_RELEASE;
-+    gdk_window_set_events(gui.drawarea->window, mask);
-+#endif
-+
-     if (blink_state == BLINK_NONE)
-       gui_mch_start_blink();
-@@ -797,6 +817,9 @@
-     static gint
- focus_out_event(GtkWidget *widget, GdkEventFocus *event, gpointer data)
- {
-+#ifdef FEAT_GUI_COMPONENT
-+/*    gtk_plug_ungrab_focus(GTK_PLUG(gui.plug));*/
-+#endif
-     gui_focus_change(FALSE);
-     if (blink_state != BLINK_NONE)
-@@ -1138,8 +1161,8 @@
-     if (p_mh)
-       gui_mch_mousehide(TRUE);
--    if (gtk_main_level() > 0)
--      gtk_main_quit();
-+    if (MAIN_LEVEL() > 0)
-+        MAIN_QUIT();
-     return TRUE;
- }
-@@ -1174,8 +1197,8 @@
-     else
-       clip_lose_selection(&clip_star);
--    if (gtk_main_level() > 0)
--      gtk_main_quit();
-+    if (MAIN_LEVEL() > 0)
-+      MAIN_QUIT();
-     return TRUE;
- }
-@@ -1215,9 +1238,8 @@
-       received_selection = RS_FAIL;
-       /* clip_free_selection(cbd); ??? */
--      if (gtk_main_level() > 0)
--          gtk_main_quit();
--
-+        if (MAIN_LEVEL() > 0)
-+            MAIN_QUIT();      /* make sure the above will be handled immediately */
-       return;
-     }
-@@ -1298,8 +1320,8 @@
-     g_free(tmpbuf_utf8);
- #endif
--    if (gtk_main_level() > 0)
--      gtk_main_quit();
-+    if (MAIN_LEVEL() > 0)
-+        MAIN_QUIT();      /* make sure the above will be handled immediately */
- }
- /*
-@@ -1459,6 +1481,15 @@
-       using_gnome = 1;
- #endif
-+
-+#ifdef FEAT_GUI_COMPONENT
-+    if( !vim_bonobo_init(&gui_argc, gui_argv))
-+    {
-+        /* in component mode, we don't care about trying to continue without 
-+         * a gui; if we can't create the factory, we might as well quit. */
-+        mch_exit(2);
-+    }
-+#else
-     /* Don't use gtk_init() or gnome_init(), it exits on failure. */
-     if (!gtk_init_check(&gui_argc, &gui_argv))
-     {
-@@ -1466,10 +1497,29 @@
-       EMSG(_(e_opendisp));
-       return FAIL;
-     }
-+#endif
-     return OK;
- }
-+#if FEAT_GUI_COMPONENT
-+static gint
-+control_activate_event(BonoboControl *control, gboolean activated)
-+{
-+    if (activated) 
-+    {
-+        gui_focus_change (TRUE);
-+        if (blink_state == BLINK_NONE)
-+            gui_mch_start_blink();
-+    } else {
-+        gui_focus_change (FALSE);
-+        if (blink_state != BLINK_NONE)
-+            gui_mch_stop_blink();
-+    }
-+    return TRUE;
-+}
-+#endif
-+
- /****************************************************************************
-  * Mouse handling callbacks
-@@ -1530,8 +1580,8 @@
-     /* inform the editor engine about the occurence of this event */
-     gui_send_mouse_event(button, x, y, FALSE, vim_modifiers);
--    if (gtk_main_level() > 0)
--      gtk_main_quit();
-+    if (MAIN_LEVEL() > 0)
-+      MAIN_QUIT();
-     /*
-      * Auto repeat timer handling.
-@@ -1726,8 +1776,8 @@
-       vim_modifiers |= MOUSE_ALT;
-     gui_send_mouse_event(button, x, y, repeated_click, vim_modifiers);
--    if (gtk_main_level() > 0)
--      gtk_main_quit(); /* make sure the above will be handled immediately */
-+    if (MAIN_LEVEL() > 0)
-+        MAIN_QUIT();      /* make sure the above will be handled immediately */
-     return TRUE;
- }
-@@ -1775,8 +1825,8 @@
-     gui_send_mouse_event(button, (int)event->x, (int)event->y,
-                                                       FALSE, vim_modifiers);
--    if (gtk_main_level() > 0)
--      gtk_main_quit(); /* make sure the above will be handled immediately */
-+    if (MAIN_LEVEL() > 0)
-+      MAIN_QUIT();    /* make sure the above will be handled immediately */
-     return TRUE;
- }
-@@ -1811,8 +1861,8 @@
-       vim_modifiers |= MOUSE_ALT;
-     gui_send_mouse_event(MOUSE_RELEASE, x, y, FALSE, vim_modifiers);
--    if (gtk_main_level() > 0)
--      gtk_main_quit();        /* make sure it will be handled immediately */
-+    if (MAIN_LEVEL() > 0)
-+        MAIN_QUIT();      /* make sure the above will be handled immediately */
-     return TRUE;
- }
-@@ -2035,8 +2085,8 @@
-     else
-       add_to_input_buf(dropkey + 3, (int)(sizeof(dropkey) - 3));
--    if (gtk_main_level() > 0)
--      gtk_main_quit();
-+    if (MAIN_LEVEL() > 0)
-+        MAIN_QUIT();      /* make sure the above will be handled immediately */
- }
- /*
-@@ -2502,6 +2552,7 @@
-     static void
- mainwin_realize(GtkWidget *widget, gpointer data)
- {
-+#ifndef FEAT_GUI_COMPONENT
- /* If you get an error message here, you still need to unpack the runtime
-  * archive! */
- #ifdef magick
-@@ -2585,6 +2636,7 @@
- #endif /* !HAVE_GTK2 */
-     }
-+#endif /* FEAT_GUI_COMPONENT */
- #if !(defined(FEAT_GUI_GNOME) && defined(FEAT_SESSION))
-     /* Register a handler for WM_SAVE_YOURSELF with GDK's low-level X I/F */
-@@ -2603,7 +2655,7 @@
- #endif
-       setup_save_yourself();
--#ifdef FEAT_CLIENTSERVER
-+#if defined(FEAT_CLIENTSERVER) &&!defined(FEAT_GUI_COMPONENT)
-     if (serverName == NULL && serverDelayedStartName != NULL)
-     {
-       /* This is a :gui command in a plain vim with no previous server */
-@@ -2651,7 +2703,7 @@
-     return cursor;
- }
--#ifdef HAVE_GTK_MULTIHEAD
-+#if defined(HAVE_GTK_MULTIHEAD) && !defined(FEAT_GUI_COMPONENT)
- /*ARGSUSED1*/
-     static void
- mainwin_screen_changed_cb(GtkWidget  *widget,
-@@ -2976,7 +3028,11 @@
- #ifdef FEAT_GUI_GNOME
-       if (using_gnome)
-       {
--          gui.mainwin = gnome_app_new("Vim", NULL);
-+# if defined(FEAT_GUI_COMPONENT)
-+            gui.mainwin = NULL;
-+# else
-+            gui.mainwin = gnome_app_new("vim", NULL);
-+# endif
- # ifdef USE_XSMP
-           /* Use the GNOME save-yourself functionality now. */
-           xsmp_close();
-@@ -2987,14 +3043,28 @@
-           gui.mainwin = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-     }
-+#ifdef FEAT_GUI_COMPONENT
-+    vbox = gtk_vbox_new(FALSE, 0);
-+    gui.vbox = vbox;
-+#else
-     gtk_widget_set_name(gui.mainwin, "vim-main-window");
-+#endif
- #ifdef HAVE_GTK2
-     /* Create the PangoContext used for drawing all text. */
-+#ifdef FEAT_GUI_COMPONENT
-+    gui.text_context = gtk_widget_create_pango_context(GTK_WIDGET(gui.vbox));
-+#else
-     gui.text_context = gtk_widget_create_pango_context(gui.mainwin);
-+#endif
-     pango_context_set_base_dir(gui.text_context, PANGO_DIRECTION_LTR);
- #endif
-+#ifdef FEAT_GUI_COMPONENT
-+    bonobo_control_construct (BONOBO_CONTROL (gui.control), GTK_WIDGET(gui.vbox));
-+    gtk_widget_add_events(GTK_WIDGET(gui.drawarea), GDK_VISIBILITY_NOTIFY_MASK);
-+    gtk_widget_show_all(GTK_WIDGET(gui.vbox));
-+#else
- #ifndef HAVE_GTK2
-     gtk_window_set_policy(GTK_WINDOW(gui.mainwin), TRUE, TRUE, TRUE);
- #endif
-@@ -3017,8 +3087,6 @@
-     gui.accel_group = gtk_accel_group_get_default();
- #endif
--    vbox = gtk_vbox_new(FALSE, 0);
--
- #ifdef FEAT_GUI_GNOME
-     if (using_gnome)
-     {
-@@ -3034,6 +3102,9 @@
-       gtk_container_add(GTK_CONTAINER(gui.mainwin), vbox);
-       gtk_widget_show(vbox);
-     }
-+#endif
-+  
-+#ifndef FEAT_GUI_COMPONENT
- #ifdef FEAT_MENU
-     /*
-@@ -3139,6 +3210,7 @@
-       gtk_box_pack_start(GTK_BOX(vbox), gui.toolbar, FALSE, FALSE, 0);
-     }
- #endif /* FEAT_TOOLBAR */
-+#endif /* FEAT_GUI_COMPONENT */
-     gui.formwin = gtk_form_new();
-     gtk_container_border_width(GTK_CONTAINER(gui.formwin), 0);
-@@ -3166,6 +3238,11 @@
-     gtk_widget_show(gui.formwin);
-     gtk_box_pack_start(GTK_BOX(vbox), gui.formwin, TRUE, TRUE, 0);
-+#ifdef FEAT_GUI_COMPONENT
-+    GTK_WIDGET_SET_FLAGS (gui.drawarea, GTK_CAN_FOCUS);
-+    g_signal_connect(G_OBJECT(gui.drawarea), "key_press_event",
-+                        G_CALLBACK(key_press_event), NULL);
-+#else
-     /* For GtkSockets, key-presses must go to the focus widget (drawarea)
-      * and not the window. */
-     gtk_signal_connect((gtk_socket_id == 0) ? GTK_OBJECT(gui.mainwin)
-@@ -3180,6 +3257,7 @@
-                    "key_release_event",
-                    G_CALLBACK(&key_release_event), NULL);
- #endif
-+#endif /* FEAT_GUI_COMPONENT */
-     gtk_signal_connect(GTK_OBJECT(gui.drawarea), "realize",
-                      GTK_SIGNAL_FUNC(drawarea_realize_cb), NULL);
-     gtk_signal_connect(GTK_OBJECT(gui.drawarea), "unrealize",
-@@ -3211,16 +3289,27 @@
-      */
-     gui.border_offset = gui.border_width;
-+#ifdef FEAT_GUI_COMPONENT
-+    gtk_signal_connect(GTK_OBJECT(gui.drawarea), "visibility_notify_event",
-+                     GTK_SIGNAL_FUNC(visibility_event), NULL);
-+#else
-     gtk_signal_connect(GTK_OBJECT(gui.mainwin), "visibility_notify_event",
-                      GTK_SIGNAL_FUNC(visibility_event), NULL);
-+#endif
-     gtk_signal_connect(GTK_OBJECT(gui.drawarea), "expose_event",
-                      GTK_SIGNAL_FUNC(expose_event), NULL);
-     /*
-      * Only install these enter/leave callbacks when 'p' in 'guioptions'.
-      * Only needed for some window managers.
-+     *
-+     * Force this on for bonobo, otherwise the toolbar gets the focus 
-+     * after you click a button, and you can't get the focus back to the 
-+     * drawarea.
-      */
-+#ifndef FEAT_GUI_COMPONENT
-     if (vim_strchr(p_go, GO_POINTER) != NULL)
-+#endif
-     {
-       gtk_signal_connect(GTK_OBJECT(gui.drawarea), "leave_notify_event",
-                          GTK_SIGNAL_FUNC(leave_notify_event), NULL);
-@@ -3228,10 +3317,19 @@
-                          GTK_SIGNAL_FUNC(enter_notify_event), NULL);
-     }
-+#ifdef FEAT_GUI_COMPONENT
-+    g_signal_connect(G_OBJECT(gui.control), "activate",
-+                   G_CALLBACK (control_activate_event), NULL);
-+    gtk_signal_connect(GTK_OBJECT(gui.drawarea), "focus_out_event",
-+                         GTK_SIGNAL_FUNC(focus_out_event), NULL);
-+    gtk_signal_connect(GTK_OBJECT(gui.drawarea), "focus_in_event",
-+                         GTK_SIGNAL_FUNC(focus_in_event), NULL);
-+#else 
-     gtk_signal_connect(GTK_OBJECT(gui.mainwin), "focus_out_event",
-                          GTK_SIGNAL_FUNC(focus_out_event), NULL);
-     gtk_signal_connect(GTK_OBJECT(gui.mainwin), "focus_in_event",
-                          GTK_SIGNAL_FUNC(focus_in_event), NULL);
-+#endif
-     gtk_signal_connect(GTK_OBJECT(gui.drawarea), "motion_notify_event",
-                      GTK_SIGNAL_FUNC(motion_notify_event), NULL);
-@@ -3404,7 +3502,7 @@
-      * otherwise the hints don't work. */
-     width  = gui_get_base_width();
-     height = gui_get_base_height();
--# ifdef HAVE_GTK2
-+# if defined( HAVE_GTK2 ) && !defined(FEAT_GUI_COMPONENT)
-     width  += get_menu_tool_width();
-     height += get_menu_tool_height();
- # endif
-@@ -3451,8 +3549,18 @@
- form_configure_event(GtkWidget *widget, GdkEventConfigure *event,
-                    gpointer data)
- {
-+    int height;
-+
-     gtk_form_freeze(GTK_FORM(gui.formwin));
--    gui_resize_shell(event->width, event->height);
-+#ifdef FEAT_GUI_COMPONENT
-+    /* width_inc and height_inc (see window manager hints, above) aren't
-+     * respected for embedded controls, so we have to make a slight adjustment
-+     * to make sure the bottom line doesn't get clipped. */
-+    height = gui.char_height * ((event->height - 2 )/ gui.char_height);
-+#else
-+    height = event->height;
-+#endif
-+    gui_resize_shell(event->width, height);
-     gtk_form_thaw(GTK_FORM(gui.formwin));
-     return TRUE;
-@@ -3584,8 +3692,10 @@
-      * changed them). */
-     highlight_gui_started();  /* re-init colors and fonts */
-+#ifndef FEAT_GUI_COMPONENT
-     gtk_signal_connect(GTK_OBJECT(gui.mainwin), "destroy",
-                      GTK_SIGNAL_FUNC(mainwin_destroy_cb), NULL);
-+#endif
- #ifdef FEAT_HANGULIN
-     hangul_keyboard_set();
-@@ -3653,7 +3763,9 @@
-                                                 NULL);
- # endif
- #endif
--      gtk_widget_show(gui.mainwin);
-+#ifndef FEAT_GUI_COMPONENT
-+        gtk_widget_show(gui.mainwin);
-+#endif
- #if defined(FEAT_GUI_GNOME) && defined(HAVE_GTK2) && defined(FEAT_MENU)
-       if (menu_handler != 0)
-@@ -3683,8 +3795,8 @@
-     if (gui.mainwin != NULL)
-       gtk_widget_destroy(gui.mainwin);
--    if (gtk_main_level() > 0)
--      gtk_main_quit();
-+    if (MAIN_LEVEL() > 0)
-+      MAIN_QUIT();    /* make sure the above will be handled immediately */
- }
- /*
-@@ -3731,6 +3843,7 @@
-     static gboolean
- force_shell_resize_idle(gpointer data)
- {
-+    g_warning("force_shell_resize_idle called!");
-     if (gui.mainwin != NULL
-           && GTK_WIDGET_REALIZED(gui.mainwin)
-           && GTK_WIDGET_VISIBLE(gui.mainwin))
-@@ -3779,7 +3892,7 @@
-     /* this will cause the proper resizement to happen too */
-     update_window_manager_hints();
--#ifdef HAVE_GTK2
-+#if defined( HAVE_GTK2 ) && !defined(FEAT_GUI_COMPONENT)
-     /* With GTK+ 2, changing the size of the form widget doesn't resize
-      * the window.  So lets do it the other way around and resize the
-      * main window instead. */
-@@ -3870,6 +3983,7 @@
- {
-     GtkWidget *widget;
-+#ifndef FEAT_GUI_COMPONENT
- # ifdef FEAT_GUI_GNOME
-     if (using_gnome)
-       widget = gui.menubar_h;
-@@ -3886,6 +4000,7 @@
-       update_window_manager_hints();
-     }
-+#endif
- }
- #endif /* FEAT_MENU */
-@@ -3937,8 +4052,8 @@
-     vw->fontname = (char_u *)gtk_font_selection_dialog_get_font_name(fs);
-     gtk_widget_hide(vw->fontdlg);
--    if (gtk_main_level() > 0)
--      gtk_main_quit();
-+    if (MAIN_LEVEL() > 0)
-+        MAIN_QUIT();      /* make sure the above will be handled immediately */
- }
- /*ARGSUSED*/
-@@ -3948,8 +4063,8 @@
-     gui_T *vw = (gui_T *)cbdata;
-     gtk_widget_hide(vw->fontdlg);
--    if (gtk_main_level() > 0)
--      gtk_main_quit();
-+    if (MAIN_LEVEL() > 0)
-+        MAIN_QUIT();      /* make sure the above will be handled immediately */
- }
- /*ARGSUSED*/
-@@ -3959,8 +4074,8 @@
-     gui_T *vw = (gui_T *)cbdata;
-     vw->fontdlg = NULL;
--    if (gtk_main_level() > 0)
--      gtk_main_quit();
-+    if (MAIN_LEVEL() > 0)
-+        MAIN_QUIT();      /* make sure the above will be handled immediately */
- }
- #endif /* !HAVE_GTK2 */
-@@ -4127,7 +4242,7 @@
-     /* Wait for the font dialog to be closed. */
-     while (gui.fontdlg && GTK_WIDGET_DRAWABLE(gui.fontdlg))
--      gtk_main_iteration_do(TRUE);
-+      MAIN_ITERATION_DO(TRUE);
-     if (gui.fontname != NULL)
-     {
-@@ -5640,8 +5755,13 @@
-     void
- gui_mch_update(void)
- {
-+#ifdef FEAT_GUI_COMPONENT
-+    if( gui.processing_call ) {
-+        return;
-+    }
-+#endif
-     while (gtk_events_pending() && !vim_is_input_buf_full())
--      gtk_main_iteration_do(FALSE);
-+        MAIN_ITERATION_DO(TRUE);
- }
-     static gint
-@@ -5652,8 +5772,8 @@
-     /* Just inform the caller about the occurence of it */
-     *timed_out = TRUE;
--    if (gtk_main_level() > 0)
--      gtk_main_quit();
-+    if (MAIN_LEVEL() > 0)
-+        MAIN_QUIT();      /* make sure the above will be handled immediately */
-     return FALSE;             /* don't happen again */
- }
-@@ -5673,8 +5793,8 @@
-     add_to_input_buf(bytes, 3);
--    if (gtk_main_level() > 0)
--      gtk_main_quit();
-+    if (MAIN_LEVEL() > 0)
-+      MAIN_QUIT();
- }
- #endif
-@@ -5741,7 +5861,7 @@
-       /*
-        * Loop in GTK+ processing  until a timeout or input occurs.
-        */
--      gtk_main();
-+      MAIN();
-       /* Got char, return immediately */
-       if (input_available())
-@@ -5816,6 +5936,7 @@
-       gdk_window_clear(gui.drawarea->window);
- }
-+
- /*
-  * Redraw any text revealed by scrolling up/down.
-  */
-@@ -5930,7 +6051,7 @@
-                             (guint32)GDK_CURRENT_TIME);
-       while (received_selection == RS_NONE)
--          gtk_main(); /* wait for selection_received_cb */
-+          MAIN();     /* wait for selection_received_cb */
-       if (received_selection != RS_FAIL)
-           return;
-@@ -5998,6 +6119,13 @@
-     void
- gui_mch_menu_grey(vimmenu_T *menu, int grey)
- {
-+#ifdef FEAT_GUI_COMPONENT
-+    if( menu->sensitive != !grey ) {
-+        menu->sensitive = !grey;
-+        update_menu_later(menu);
-+    }
-+    return;
-+#endif
-     if (menu->id == NULL)
-       return;
-@@ -6133,6 +6261,40 @@
- /* The last set mouse pointer shape is remembered, to be used when it goes
-  * from hidden to not hidden. */
- static int last_shape = 0;
-+#endif
-+
-+#if 0
-+static BonoboWindow *
-+bonobo_create_window(void)
-+{
-+    BonoboWindow      *win;
-+    BonoboUIContainer *ui_container;
-+    BonoboUIComponent *ui_component;
-+                                                                                
-+    win = BONOBO_WINDOW (bonobo_window_new ("vim", "vim"));                                                                                
-+    ui_container = bonobo_window_get_ui_container (win);
-+    bonobo_ui_engine_config_set_path (bonobo_window_get_ui_engine (win),
-+                      "/gnome-vim/UIConfig/kvps");
-+                                                                                
-+    /* Create a UI component with which to communicate with the window */
-+    ui_component = bonobo_ui_component_new_default ();
-+
-+    gui.component = ui_component;
-+                                                                                
-+    /* Associate the BonoboUIComponent with the container */
-+    bonobo_ui_component_set_container (
-+        ui_component, BONOBO_OBJREF (ui_container), NULL);
-+                                                                                
-+    //bonobo_ui_util_set_ui (ui_component, "", 
-+                   //HELLO_SRCDIR HELLO_UI_XML,
-+                   //"bonobo-hello", NULL);
-+                                                                                
-+    /* Associate our verb -> callback mapping with the BonoboWindow */
-+    /* All the callback's user_data pointers will be set to 'win' */
-+    //bonobo_ui_component_add_verb_list_with_data (ui_component, hello_verbs, win);
-+                                                                                
-+    return win;
-+}
- #endif
- /*
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/main.c vim/src/main.c
---- vimcopy/src/main.c Sat Jan 10 13:10:02 2004
-+++ vim/src/main.c     Sat Jan 10 13:06:44 2004
-@@ -79,7 +79,7 @@
- # ifdef VIMDLL
- _export
- # endif
--# ifdef FEAT_GUI_MSWIN
-+# if defined(FEAT_GUI_MSWIN)
- #  ifdef __BORLANDC__
- _cdecl
- #  endif
-@@ -239,8 +239,12 @@
-     TIME_MSG("locale set");
- #endif
--#ifdef FEAT_GUI
-+#if defined(FEAT_GUI_COMPONENT)
-+    gui.dofork = FALSE;                   /* don't use fork when running as component */
-+#else
-+# if defined(FEAT_GUI) && !defined(FEAT_GUI_COMPONENT)
-     gui.dofork = TRUE;                    /* default is to use fork() */
-+# endif
- #endif
- #if defined(FEAT_XCLIPBOARD) || defined(FEAT_CLIENTSERVER)
-@@ -439,6 +443,10 @@
-       ++initstr;
-     }
-+#ifdef FEAT_GUI_COMPONENT
-+    main_start_gui();
-+#endif
-+
-     if (TOLOWER_ASC(initstr[0]) == 'g')
-     {
-       main_start_gui();
-@@ -1634,12 +1642,14 @@
-      * Call settmode and starttermcap here, so the T_KS and T_TI may be
-      * defined by termcapinit and redifined in .exrc.
-      */
-+#ifndef FEAT_GUI_COMPONENT
-     settmode(TMODE_RAW);
-     if (need_wait_return || msg_didany)
-     {
-       wait_return(TRUE);
-       TIME_MSG("waiting for return");
-     }
-+#endif
-     starttermcap();       /* start termcap if not done by wait_return() */
- #ifdef FEAT_MOUSE
-@@ -1766,6 +1776,9 @@
- #ifdef FEAT_WINDOWS
-       curwin = firstwin;
-       curbuf = curwin->w_buffer;
-+#endif
-+#ifdef FEAT_GUI_COMPONENT
-+      persistent_buffer = curbuf;
- #endif
-     }
-     TIME_MSG("opening buffers");
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/mbyte.c vim/src/mbyte.c
---- vimcopy/src/mbyte.c        Thu Jan 15 10:17:11 2004
-+++ vim/src/mbyte.c    Thu Jan 15 10:13:20 2004
-@@ -3129,8 +3129,8 @@
-     im_add_to_input((char_u *)str, (int)strlen(str));
--    if (gtk_main_level() > 0)
--      gtk_main_quit();
-+    if (MAIN_LEVEL() > 0)
-+      MAIN_QUIT();
- }
- /*
-@@ -4138,7 +4138,11 @@
-           if (gui.fontset != NOFONTSET
-                   && gui.fontset->type == GDK_FONT_FONTSET)
-           {
-+#ifdef FEAT_GUI_COMPONENT
-+              widget = gui.drawarea;
-+#else
-               widget = gui.mainwin;
-+#endif
-               gdk_window_get_size(widget->window, &width, &height);
-               attrmask |= (int)GDK_IC_STATUS_AREA;
-@@ -4719,9 +4723,15 @@
-       while (event_queue != NULL && processing_queued_event)
-       {
-           GdkEvent *ev = event_queue->data;
--
-+            GtkWidget *output;
-+            
-           gboolean *ret;
--          gtk_signal_emit_by_name((GtkObject*)gui.mainwin, "key_press_event",
-+#ifdef FEAT_GUI_COMPONENT
-+            output = gui.drawarea;
-+#else
-+            output = gui.mainwin;
-+#endif
-+          gtk_signal_emit_by_name((GtkObject*)output, "key_press_event",
-                                                                   ev, &ret);
-           gdk_event_free(ev);
-           event_queue = event_queue->next;
-@@ -4733,8 +4743,8 @@
-           key_press_event_queue = NULL;
-       }
-     }
--    if (gtk_main_level() > 0)
--      gtk_main_quit();
-+    if (MAIN_LEVEL() > 0)
-+      MAIN_QUIT();
- }
- /*
-@@ -4869,7 +4879,11 @@
-       GtkWidget       *widget = gui.drawarea;
-       attr->style = (GdkIMStyle)xim_input_style;
-+#ifdef FEAT_GUI_COMPONENT
-+      attr->client_window = gui.drawarea->window;
-+#else
-       attr->client_window = gui.mainwin->window;
-+#endif
-       if ((colormap = gtk_widget_get_colormap(widget)) !=
-           gtk_widget_get_default_colormap())
-@@ -4916,7 +4930,11 @@
-           }
-           else
-           {
-+#ifdef FEAT_GUI_COMPONENT
-+              gdk_window_get_size(gui.drawarea->window, &width, &height);
-+#else
-               gdk_window_get_size(gui.mainwin->window, &width, &height);
-+#endif
-               attrmask |= (int)GDK_IC_STATUS_AREA_REQ;
-               attr->status_area.x = 0;
-               attr->status_area.y = height - gui.char_height - 1;
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/misc1.c vim/src/misc1.c
---- vimcopy/src/misc1.c        Sat Jan 10 13:10:02 2004
-+++ vim/src/misc1.c    Sat Jan 10 13:06:46 2004
-@@ -2346,6 +2346,11 @@
- #ifdef FEAT_TITLE
-       need_maketitle = TRUE;      /* set window title later */
- #endif
-+#if defined(FEAT_GUI_COMPONENT)
-+        if( curbuf == persistent_buffer) {
-+            component_set_dirty(TRUE);
-+        }
-+#endif
-     }
-     ++curbuf->b_changedtick;
-     ++global_changedtick;
-@@ -2614,6 +2619,11 @@
- #endif
- #ifdef FEAT_TITLE
-       need_maketitle = TRUE;      /* set window title later */
-+#endif
-+#if defined(FEAT_GUI_COMPONENT)
-+        if( curbuf == persistent_buffer) {
-+            component_set_dirty(FALSE);
-+        }
- #endif
-     }
-     ++buf->b_changedtick;
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/quote vim/src/quote
---- vimcopy/src/quote  Wed Dec 31 18:00:00 1969
-+++ vim/src/quote      Thu Oct 23 17:20:23 2003
-@@ -0,0 +1,7 @@
-+function! Quote()
-+normal msHmt
-+%g/^GtkHTML_QUOTE_ON/.,/GtkHTML_QUOTE_OFF/s/^/> /
-+%g/^> GtkHTML_QUOTE_ON/d
-+%g/^> GtkHTML_QUOTE_OFF/d
-+normal 'tzt's
-+endfunction
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/structs.h vim/src/structs.h
---- vimcopy/src/structs.h      Sat Jan 10 13:10:03 2004
-+++ vim/src/structs.h  Sat Jan 10 13:06:46 2004
-@@ -1039,6 +1039,10 @@
-     char_u    *b_p_bh;        /* 'bufhidden' */
-     char_u    *b_p_bt;        /* 'buftype' */
- #endif
-+#if defined(FEAT_GUI_COMPONENT)
-+    int         emb_buffer;     /* this buffer is associated with the container application,
-+                                   and cannot be removed */
-+#endif
-     int               b_p_bl;         /* 'buflisted' */
- #ifdef FEAT_CINDENT
-     int               b_p_cin;        /* 'cindent' */
-@@ -1231,6 +1235,9 @@
-     signlist_T        *b_signlist;    /* list of signs to draw */
- #endif
-+#if defined(FEAT_GUI_COMPONENT) && defined(FEAT_GUI_GNOME)
-+    pos_T     b_saved_cursor_pos;     /* start pos of last VIsual */
-+#endif
- };
- /*
-@@ -1716,8 +1723,11 @@
-     GtkWidget *tearoff_handle;
-     GtkWidget   *label;                   /* Used by "set wak=" code. */
- #endif
--#ifdef FEAT_GUI_MOTIF
-+#if defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_COMPONENT)
-     int               sensitive;          /* turn button on/off */
-+#if defined(FEAT_GUI_COMPONENT)
-+    int         dirty;              /* menu item has been updated; container needs to know */
-+#endif
- #endif
- #if defined(FEAT_GUI_ATHENA) || defined(FEAT_GUI_MOTIF)
-     Pixmap    image;              /* Toolbar image */
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/undo.c vim/src/undo.c
---- vimcopy/src/undo.c Sat Mar  8 14:01:28 2003
-+++ vim/src/undo.c     Sat Nov  1 18:03:21 2003
-@@ -725,6 +725,7 @@
- #endif
- }
-+
- /*
-  * u_sync: stop adding to the current entry list
-  */
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/vim-container.xml vim/src/vim-container.xml
---- vimcopy/src/vim-container.xml      Wed Dec 31 18:00:00 1969
-+++ vim/src/vim-container.xml  Sat Jul 26 13:16:48 2003
-@@ -0,0 +1,83 @@
-+<Root>
-+
-+<commands>
-+      <cmd name="FileNewWindow" _label="_New Window" _tip="Open a new window"
-+             pixtype="stock" pixname="gtk-new" accel="*Control*n"/>
-+
-+      <cmd name="FileOpen" _label="_Open..." _tip="Open a file"
-+           pixtype="stock" pixname="gtk-open" accel="*Control*o"/>
-+
-+      <cmd name="FileCloseWindow" _label="_Close" _tip="Close window"
-+             pixtype="stock" pixname="gtk-close" accel="*Control*w"/>
-+
-+        <cmd name="FileExit" _label="_Quit" _tip="Quit the program"
-+           pixtype="stock" pixname="gtk-quit" accel="*Control*q"/>
-+      
-+      <cmd name="Preferences" _label="_Preferences..." _tip="Change preferences"  sensitive="0"
-+           pixtype="stock" pixname="gtk-preferences"/>
-+
-+      <cmd name="HelpAbout" _label="_About" _tip="About this application"
-+           pixtype="stock" pixname="About"/>
-+      <cmd name="Help" _label="Contents" _tip="Help On this application"
-+           pixtype="stock" pixname="Help" accel="F1"/>
-+
-+
-+      <cmd name="DnDNewWindow" _label="Open in new window"/>
-+      <cmd name="DnDSameWindow" _label="Open in this window"/>
-+      <cmd name="DnDCancel" _label="Cancel"
-+           pixtype="stock" pixname="Cancel"/>
-+</commands>
-+
-+<menu>
-+        <submenu name="File" _label="_File">
-+
-+              <menuitem name="FileNewWindow" verb=""/>
-+
-+              <placeholder name="Open Placeholder" delimit="top">
-+                      <menuitem name="FileOpen" verb=""/>
-+              </placeholder>
-+
-+              <placeholder name="File Items Placeholder" delimit="top"/>
-+
-+              <separator/>
-+
-+              <menuitem name="FileCloseWindow" verb=""/>
-+
-+              <menuitem name="FileExit" verb=""/>
-+
-+      </submenu>
-+
-+      <submenu name="Edit" _label="_Edit">
-+              <menuitem name="Preferences" verb=""/>
-+        </submenu>
-+
-+      <submenu name="View" _label="_View" hidden="1">
-+              <placeholder name="View Preferences Placeholder"/>
-+              <placeholder name="View Items Placeholder" delimit="top"/>
-+      </submenu>
-+
-+      <submenu name="Help" _label="_Help">
-+              <menuitem name="Help" verb=""/>
-+              <menuitem name="HelpAbout" verb=""/>
-+      </submenu>
-+</menu>
-+
-+<dockitem name="Toolbar" relief="none" homogeneous="1" behavior="exclusive">
-+
-+        <toolitem name="TBOpen" _label="Open" pixtype="stock"
-+                  pixname="Open" verb="FileOpen"/>
-+
-+        <toolitem name="TBCloseWindow" _label="Close" pixtype="stock"
-+                  pixname="Close" verb="FileCloseWindow"/>
-+</dockitem>
-+
-+<popups>
-+        <popup name="dragndrop">
-+            <menuitem name="DnDNewWindow" verb=""/>
-+            <menuitem name="DnDSameWindow" verb=""/>
-+            <separator/>
-+            <menuitem name="DnDCancel" verb=""/>
-+        </popup>
-+</popups>
-+
-+</Root>
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/vim.h vim/src/vim.h
---- vimcopy/src/vim.h  Sat Jan 10 13:10:03 2004
-+++ vim/src/vim.h      Sat Jan 10 13:06:47 2004
-@@ -739,6 +739,10 @@
- #define READ_STDIN    0x04    /* read from stdin */
- #define READ_BUFFER   0x08    /* read from curbuf (converting stdin) */
- #define READ_DUMMY    0x10    /* reading into a dummy buffer */
-+#define READ_EMB_STREAM 0x20    /* read from container stream object 
-+                                        (i.e. Bonobo Persist Stream) */
-+#define READ_EMB_FILE   0x40    /* read from container file object 
-+                                        (i.e. Bonobo Persist File) */
- /* Values for change_indent() */
- #define INDENT_SET    1       /* set indent */
-@@ -1026,6 +1030,7 @@
-     EVENT_CURSORHOLD,         /* cursor in same position for a while */
-     EVENT_FUNCUNDEFINED,      /* if calling a function which doesn't exist */
-     EVENT_REMOTEREPLY,                /* upon string reception from a remote vim */
-+    EVENT_EMBEDDED_COMPONENT, /* upon embedding of vim as a component */
-     NUM_EVENTS                        /* MUST be the last one */
- };
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/vim_bonobo_control.c vim/src/vim_bonobo_control.c
---- vimcopy/src/vim_bonobo_control.c   Wed Dec 31 18:00:00 1969
-+++ vim/src/vim_bonobo_control.c       Sat Jan 10 21:03:08 2004
-@@ -0,0 +1,612 @@
-+/**
-+ * vim_bonobo_control.c
-+ *
-+ * Author:
-+ *   Jason Hildebrand <jason@peaceworks.ca>
-+ *
-+ */
-+#include <stdio.h>
-+
-+#include "vim.h"
-+#include "vim_bonobo_control.h"
-+#include "gtkhtml_editor.h"
-+
-+#include <gnome.h>
-+#include <libbonoboui.h>
-+#include <libbonobo.h>
-+/*#include <libnautilus/nautilus-view.h>*/
-+#include <X11/Intrinsic.h>
-+#include <X11/Xatom.h>
-+#include <gdk/gdkx.h>
-+
-+struct _VimControlPrivate {
-+    BonoboUIComponent *component;
-+};
-+
-+static GObjectClass *vim_control_parent_class;
-+
-+static gboolean
-+quit_vim(gpointer data)
-+{
-+    getout_preserve_modified(0);
-+}
-+
-+static void
-+vim_control_destroy (BonoboObject *control)
-+{
-+      BonoboUIComponent *uic;
-+
-+      g_return_if_fail (control != NULL);
-+      g_return_if_fail (VIM_IS_CONTROL (control));
-+
-+    g_message ("Destroying VimControl...");
-+
-+      uic = bonobo_control_get_ui_component (BONOBO_CONTROL (control));
-+    if( uic != CORBA_OBJECT_NIL )
-+        bonobo_ui_component_unset_container (uic, NULL);
-+
-+      BONOBO_OBJECT_CLASS (vim_control_parent_class)->destroy (control);
-+
-+    /* we only support creating one vim control per process, so when this one
-+     * is finished, we're done. */ 
-+    g_timeout_add(50, &quit_vim, NULL);
-+}
-+
-+static void
-+vim_control_finalize (GObject *object)
-+{
-+      VimControl *control;
-+
-+      g_return_if_fail (object != NULL);
-+      g_return_if_fail (VIM_IS_CONTROL (object));
-+
-+      control = VIM_CONTROL (object);
-+
-+      g_free (control->priv);
-+
-+      G_OBJECT_CLASS (vim_control_parent_class)->finalize (object);
-+}
-+
-+static void
-+vim_control_set_ui_container (VimControl *control,
-+                            Bonobo_UIContainer ui_container)
-+{
-+      BonoboUIComponent *uic;
-+      
-+      g_return_if_fail (control != NULL);
-+      g_return_if_fail (VIM_IS_CONTROL (control));
-+      g_return_if_fail (ui_container != CORBA_OBJECT_NIL);
-+
-+      uic = bonobo_control_get_ui_component (BONOBO_CONTROL (control));
-+      bonobo_ui_component_set_container (uic, ui_container, NULL);
-+
-+    /* schedule a UI update */
-+    update_ui_later();
-+}
-+
-+static void
-+vim_control_unset_ui_container (VimControl *control)
-+{
-+      BonoboUIComponent *uic;
-+
-+      g_return_if_fail (control != NULL);
-+      g_return_if_fail (VIM_IS_CONTROL (control));
-+
-+      uic = bonobo_control_get_ui_component (BONOBO_CONTROL (control));
-+      bonobo_ui_component_unset_container (uic, NULL);
-+}
-+
-+static grab_keys = 0;
-+
-+#if 0
-+static GdkFilterReturn
-+filter_key_events (GdkXEvent *gdk_xevent, GdkEvent *event, gpointer data)
-+{
-+ /* GdkScreen *screen = gdk_drawable_get_screen (event->any.window);
-+  GdkDisplay *display = gdk_screen_get_display (screen);*/
-+  XEvent *xevent = (XEvent *)gdk_xevent;
-+                                                                                
-+  GdkFilterReturn return_val;
-+                                                                                
-+  return_val = GDK_FILTER_CONTINUE;
-+                                                                                
-+  switch (xevent->type)
-+  {
-+      case KeyPress:
-+        g_warning("Key press!");
-+        break;
-+
-+      case KeyRelease:
-+        g_warning("Key release!");
-+        break;
-+
-+      default:
-+        break;
-+  }
-+  return return_val;
-+}
-+#endif
-+
-+static void
-+set_frame_cb (BonoboControl *object, gpointer data)
-+{
-+    Bonobo_ControlFrame frame;
-+      VimControl *control;
-+
-+      g_return_if_fail (object != NULL);
-+      g_return_if_fail (VIM_IS_CONTROL (object));
-+
-+    frame = bonobo_control_get_control_frame (object, NULL);
-+    if (frame == CORBA_OBJECT_NIL)
-+        return;
-+    CORBA_Object_release (frame, NULL);
-+
-+      control = VIM_CONTROL (object);
-+
-+    Bonobo_UIContainer ui_container;
-+
-+    ui_container = bonobo_control_get_remote_ui_container (BONOBO_CONTROL (control), NULL);
-+    if (ui_container != CORBA_OBJECT_NIL) {
-+        vim_control_set_ui_container (control, ui_container);
-+        bonobo_object_release_unref (ui_container, NULL);
-+    }
-+
-+}
-+
-+static void
-+embedded_cb (GtkPlug *plug)
-+{
-+    Atom     wm_class;
-+    Atom     actual_type;
-+    int        actual_format;
-+    unsigned long actual_length;
-+    unsigned long remaining_bytes;
-+    unsigned char * wm_class_value;
-+    Window   win;
-+    Window   root;
-+    Window   parent;
-+    Window * children = NULL;
-+    unsigned int nchildren;
-+    int     result;
-+
-+    wm_class = gdk_x11_get_xatom_by_name("WM_CLASS");
-+    win = GDK_WINDOW_XID(plug->socket_window);
-+
-+    while( TRUE ) {
-+        /*g_warning("checking xid %d", win);*/
-+        result = XGetWindowProperty (GDK_WINDOW_XDISPLAY (plug->socket_window), 
-+                            win, 
-+                            wm_class, 0, 120, False, XA_STRING, 
-+                            &actual_type, &actual_format,
-+                  &actual_length, &remaining_bytes, &wm_class_value);
-+        if( result == Success && actual_type != None) {
-+            /*g_warning("WM_CLASS is %s", wm_class_value);*/
-+            apply_autocmds(EVENT_EMBEDDED_COMPONENT, wm_class_value, NULL, FALSE, persistent_buffer);
-+            Xfree(wm_class_value);         
-+            break;
-+        }
-+        gdk_error_trap_push ();
-+        result = XQueryTree(GDK_WINDOW_XDISPLAY(plug->socket_window),
-+                       win,
-+                       &root, &parent, &children, &nchildren);
-+        if (gdk_error_trap_pop () || !result) {
-+            break;
-+        }
-+        if( children ) {
-+            Xfree(children);
-+            children = NULL;
-+        }
-+        if( root == parent) {
-+            /* we've reached the root window */
-+            break;
-+        }
-+        win = parent;
-+    }
-+}
-+
-+static void
-+vim_control_class_init (VimControl *klass)
-+{
-+      GObjectClass *gobject_class = (GObjectClass *)klass;
-+      BonoboObjectClass *bonobo_object_class = (BonoboObjectClass *)klass;
-+      BonoboControlClass *control_class = (BonoboControlClass *)klass;
-+
-+      vim_control_parent_class= g_type_class_peek_parent (klass);
-+
-+      bonobo_object_class->destroy = vim_control_destroy;
-+      gobject_class->finalize = vim_control_finalize;
-+}
-+
-+static char_u * stream_buffer = NULL;
-+static int stream_offset = 0;
-+static CORBA_long  stream_length = 0;
-+static Bonobo_Stream current_stream;
-+
-+/* It seems like it is an error to attempt to read more data
-+ * than is available from a bonobo stream.  So we slurp in
-+ * the entire file in one chunk, and then pass it back in 
-+ * pieces to the caller. 
-+ */
-+int
-+vim_control_persist_stream_read(char_u * buffer, int reqsize)
-+{
-+    int read_size;
-+
-+    if( stream_offset >= stream_length ) {
-+        return 0;
-+    }
-+    read_size = stream_length - stream_offset >= reqsize ? 
-+                    reqsize : stream_length - stream_offset;
-+    mch_memmove(buffer, &stream_buffer[stream_offset], read_size);
-+    stream_offset += read_size;
-+    return read_size;
-+}
-+
-+int
-+vim_control_persist_stream_write(char_u * buffer, int reqsize)
-+{
-+    CORBA_Environment ev;
-+
-+    CORBA_exception_init(&ev);
-+    bonobo_stream_client_write(current_stream, buffer, reqsize, &ev);
-+      if (ev._major != CORBA_NO_EXCEPTION ) {
-+        g_warning("Error writing to stream");
-+              CORBA_exception_free (&ev);
-+        return 0;
-+      }
-+    CORBA_exception_free (&ev);
-+    return reqsize;
-+}
-+
-+void
-+component_set_dirty(gboolean dirty)
-+{
-+    bonobo_persist_set_dirty(BONOBO_PERSIST(gui.pstream), dirty);
-+    bonobo_persist_set_dirty(BONOBO_PERSIST(gui.pfile), dirty);
-+}
-+
-+static void load_buffer_from_stream( const Bonobo_Stream         stream,
-+                      Bonobo_Persist_ContentType  type,
-+                      CORBA_Environment          *ev)
-+{
-+    exarg_T           ea;                     /* Ex command arguments */
-+
-+    g_warning ("load_buffer_from_stream");
-+
-+    stream_buffer = bonobo_stream_client_read( stream, -1, &stream_length, ev);
-+      if (ev->_major != CORBA_NO_EXCEPTION) {
-+        g_warning("Error reading from stream");
-+        return;
-+      }
-+    stream_offset = 0;
-+
-+    if( persistent_buffer ) {
-+        /* make it possible to delete the existing buffer, so that it 
-+         * can be replaced with what we are about to load */
-+        persistent_buffer->emb_buffer = FALSE;
-+    }
-+
-+    vim_memset(&ea, 0, sizeof(ea));
-+    ea.cmd = "e ++enc=utf-8";
-+    ea.force_enc = 8; /* this is the offset of "utf-8" in the cmd */
-+
-+    read_from_container = PERSIST_STREAM_IO;
-+    do_ecmd(0, NULL, NULL, &ea, 1, ECMD_OLDBUF|ECMD_FORCEIT);
-+    read_from_container = NORMAL_IO;
-+
-+    /* we've set the fileencoding to utf-8; set encoding to utf-8 as * well.*/
-+    do_cmdline_cmd("set encoding=utf-8");
-+
-+    /* remember this buffer */
-+      persistent_buffer = curbuf;
-+    ga_clear(&error_ga);
-+    g_free(stream_buffer);
-+
-+        
-+    /* run a filter to obtain plain text from the html */
-+    if( !strcmp( type, "text/html" )) {
-+        vim_bonobo_call_begin();
-+        /* Substitutions to recognize quoted text */
-+        do_cmdline_cmd("%s/<!--+GtkHTML[^>]*class=\"ClueFlow\"[^>]*key=\"orig\"[^>]*value=\"1\">-->/<pre>GtkHTML_QUOTE_ON<\\/pre>");
-+        do_cmdline_cmd("%s/<!--+GtkHTML[^>]*class=\"ClueFlow\"[^>]*clear=\"orig\"[^>]*>-->/<pre>GtkHTML_QUOTE_OFF<\\/pre>");
-+        do_cmdline_cmd("%s/<\\/i><\\/blockquote>/<\\/pre><\\/i><\\/blockquote>/");
-+        do_cmdline_cmd("%!html2text -nobs");
-+        do_cmdline_cmd("call EvoQuote()");
-+        vim_bonobo_call_end();
-+    }
-+    do_cmdline_cmd("set nomodified");
-+    component_set_dirty(FALSE);
-+}
-+
-+static void load_buffer_from_stream_cb(BonoboPersistStream *ps,
-+                      const Bonobo_Stream         stream,
-+                      Bonobo_Persist_ContentType  type,
-+                      void                       *closure,
-+                      CORBA_Environment          *ev)
-+{
-+    load_buffer_from_stream(stream, type, ev);
-+}
-+
-+static void 
-+save_buffer_to_stream( const Bonobo_Stream         stream,
-+                      Bonobo_Persist_ContentType  type,
-+                      CORBA_Environment          *ev)
-+{
-+    buf_T * buf;
-+    exarg_T           ea;                     /* Ex command arguments */
-+
-+    /*g_warning ("save_buffer_to_stream");*/
-+
-+    current_stream = stream;
-+    write_to_container = PERSIST_STREAM_IO;
-+
-+    if( !strcmp(type, "text/html")) {
-+        vim_control_persist_stream_write("<pre>", 5);
-+    }
-+
-+    vim_memset(&ea, 0, sizeof(ea));
-+    ea.cmd = "e ++enc=utf-8";
-+    ea.force_enc = 8; /* this is the offset of "utf-8" in the cmd */
-+
-+    buf = persistent_buffer;
-+    buf_write(buf, "dummy", "dummy", 1, buf->b_ml.ml_line_count, 
-+                &ea, FALSE, FALSE, TRUE, TRUE);
-+    if( !strcmp(type, "text/html")) {
-+        vim_control_persist_stream_write("</pre>", 6);
-+    }
-+    write_to_container = NORMAL_IO;
-+    ga_clear(&error_ga);
-+}
-+
-+static void 
-+save_buffer_to_stream_cb(BonoboPersistStream         *ps,
-+                      const Bonobo_Stream         stream,
-+                      Bonobo_Persist_ContentType  type,
-+                      void                       *closure,
-+                      CORBA_Environment          *ev)
-+{
-+    save_buffer_to_stream(stream, type, ev);
-+}
-+
-+static gint
-+load_buffer_from_file (BonoboPersistFile *pf,
-+                const CORBA_char  *filename,
-+                      CORBA_Environment *ev,
-+                void              *closure)
-+{
-+      Bonobo_PersistStream ps = closure;
-+      BonoboStream *stream;
-+      
-+    /* FIXME!! */
-+    stream = bonobo_get_object(filename, "IDL:Bonobo/Stream:1.0", ev);
-+
-+      if (!stream)
-+              return 0;
-+
-+      load_buffer_from_stream (ps, "text/plain", ev);
-+      return 0; /* Return 0 on success */
-+}
-+
-+static gint
-+save_to_file (BonoboPersistFile *pf,
-+              const CORBA_char  *filename,
-+              CORBA_Environment *ev,
-+              void              *closure)
-+{
-+      Bonobo_PersistStream ps = closure;
-+      BonoboStream *stream;
-+      
-+    
-+    /*
-+      stream = bonobo_stream_open (
-+              BONOBO_IO_DRIVER_FS,
-+              filename, Bonobo_STORAGE_WRITE | Bonobo_STORAGE_CREATE,
-+              S_IRUSR | S_IWUSR | S_IRGRP);
-+
-+      if (!stream)
-+              return 0;
-+
-+      save_buffer_to_stream (NULL, ps, "text/plain", ev);
-+    */
-+      return 0; /* Return 0 on success */
-+}
-+
-+
-+Bonobo_Persist_ContentTypeList * 
-+persist_stream_types( BonoboPersistStream * ps, void * closure, CORBA_Environment *ev )
-+{
-+    /*g_warning ("persist_stream_types");*/
-+    return bonobo_persist_generate_content_types(2, "text/plain", "text/html");
-+}
-+
-+
-+#if 0
-+static void
-+nv_load_location_cb (NautilusView *view, const char *location, gpointer user_data)
-+{
-+      g_return_if_fail (NAUTILUS_IS_VIEW (view));
-+      g_return_if_fail (location != NULL);
-+
-+      nautilus_view_report_load_underway (NAUTILUS_VIEW (view));
-+
-+    /* FIXME: load the file here (using gnome-vfs)! */
-+      nautilus_view_report_load_complete (NAUTILUS_VIEW (view));
-+}
-+#endif
-+
-+static enum {
-+    EDITOR_NEEDS_ESCAPE
-+} EditorControlProps;
-+
-+editor_get_prop (BonoboPropertyBag *bag,
-+         BonoboArg         *arg,
-+         guint              arg_id,
-+         CORBA_Environment *ev,
-+         gpointer           user_data)
-+{
-+    //GtkHTMLControlData *cd = user_data;
-+                                                                                
-+    switch (arg_id) {
-+    case EDITOR_NEEDS_ESCAPE:
-+        BONOBO_ARG_SET_BOOLEAN (arg, TRUE);
-+        break;
-+    default:
-+        bonobo_exception_set (ev, ex_Bonobo_PropertyBag_NotFound);
-+        break;
-+    }
-+}
-+
-+static void
-+editor_set_prop (BonoboPropertyBag *bag,
-+         const BonoboArg   *arg,
-+         guint              arg_id,
-+         CORBA_Environment *ev,
-+         gpointer           user_data)
-+{
-+    //GtkHTMLControlData *cd = user_data;
-+                                                                                
-+    switch (arg_id) {
-+    case EDITOR_NEEDS_ESCAPE:
-+        bonobo_exception_set (ev, ex_Bonobo_PropertyBag_ReadOnly);
-+        break;
-+    default:
-+        bonobo_exception_set (ev, ex_Bonobo_PropertyBag_NotFound);
-+        break;
-+    }
-+}
-+
-+static void
-+vim_control_init (VimControl *control)
-+{
-+      control->priv = g_new0 (VimControlPrivate, 1);
-+}
-+
-+BONOBO_TYPE_FUNC (VimControl, BONOBO_TYPE_CONTROL, vim_control);
-+
-+BonoboObject *
-+vim_control_add_interfaces (VimControl     *control,
-+                        BonoboObject *to_aggregate)
-+{
-+      BonoboPersistFile   *file;
-+    //NautilusView        *nv;
-+      BonoboPersistStream *stream;
-+    EditorEngine        *engine; /* GtkHTML editor engine interface */
-+      //BonoboItemContainer *item_container;
-+
-+      
-+      g_return_val_if_fail (VIM_IS_CONTROL (control), NULL);
-+      g_return_val_if_fail (BONOBO_IS_OBJECT (to_aggregate), NULL);
-+
-+      /* Interface Bonobo::PersistStream */
-+    stream = bonobo_persist_stream_new (load_buffer_from_stream_cb,
-+                                        save_buffer_to_stream_cb, 
-+                                        persist_stream_types, 
-+                                        VIM_OAFIID, 
-+                                        control);
-+    if (!stream) {
-+        bonobo_object_unref (BONOBO_OBJECT (to_aggregate));
-+        return NULL;
-+    }
-+      bonobo_object_add_interface (BONOBO_OBJECT (to_aggregate),
-+                                   BONOBO_OBJECT (stream));
-+    gui.pstream = stream;
-+
-+      /* Interface Bonobo::PersistFile */
-+      file = bonobo_persist_file_new (load_buffer_from_file, 
-+                                          save_buffer_to_stream, VIM_OAFIID, control);
-+      if (!file) {
-+              bonobo_object_unref (BONOBO_OBJECT (to_aggregate));
-+              return NULL;
-+      }
-+      bonobo_object_add_interface (BONOBO_OBJECT (to_aggregate),
-+                                   BONOBO_OBJECT (file));
-+    gui.pfile = file;
-+
-+    /*
-+    nv = nautilus_view_new_from_bonobo_control(BONOBO_CONTROL(control));
-+    if( !nv ) {
-+        bonobo_object_unref (BONOBO_OBJECT(to_aggregate));
-+        return NULL;
-+    }
-+      bonobo_object_add_interface (BONOBO_OBJECT (to_aggregate),
-+                                   BONOBO_OBJECT (nv));
-+
-+      g_signal_connect (G_OBJECT (nv), "load_location",
-+                        G_CALLBACK (nv_load_location_cb), NULL);
-+        */
-+
-+    engine = editor_engine_new();
-+    if( !engine ) {
-+        bonobo_object_unref (BONOBO_OBJECT(to_aggregate));
-+        return NULL;
-+    }
-+      bonobo_object_add_interface (BONOBO_OBJECT (to_aggregate),
-+                                   BONOBO_OBJECT (engine));
-+
-+      return to_aggregate;
-+}
-+
-+VimControl *
-+vim_control_construct (VimControl    *control)
-+{
-+      GtkWidget             *button;
-+      GtkWidget             *label;
-+    BonoboPlug            *plug;
-+    GtkAccelGroup         *group;
-+    GClosure              *closure;
-+      //VimControlPrivate     *priv;
-+    BonoboPropertyBag  *pb;
-+    BonoboArg          *def;
-+      
-+      g_return_val_if_fail (control != NULL, NULL);
-+      g_return_val_if_fail (VIM_IS_CONTROL (control), NULL);
-+
-+
-+      if (!vim_control_add_interfaces (control, BONOBO_OBJECT (control)))
-+              return NULL;
-+
-+    gui.control = BONOBO_CONTROL(control);
-+    gui.plug = (BonoboPlug *)bonobo_control_get_plug(control);
-+    gui.mainwin = GTK_WIDGET(gui.plug);
-+    gui_mch_init();
-+
-+    g_signal_connect (control, "set_frame", G_CALLBACK (set_frame_cb), NULL);
-+    g_signal_connect (gui.plug, "embedded", G_CALLBACK (embedded_cb), NULL);
-+
-+      /* Create the vim-view */
-+      //priv->image_view = vim_image_view_new (vim, FALSE);
-+      //if (!priv->image_view) {
-+              //bonobo_object_unref (BONOBO_OBJECT (control));
-+              //return NULL;
-+      //}
-+
-+    pb = bonobo_property_bag_new (editor_get_prop, editor_set_prop, NULL);
-+    bonobo_control_set_properties (control, BONOBO_OBJREF (pb), NULL);
-+                                                                                
-+    def = bonobo_arg_new (BONOBO_ARG_BOOLEAN);
-+    BONOBO_ARG_SET_BOOLEAN (def, TRUE);
-+                                                                                
-+    bonobo_property_bag_add (pb, "EditorNeedsEscape", EDITOR_NEEDS_ESCAPE,
-+                 BONOBO_ARG_BOOLEAN, def,
-+                 "Whether the editor requires Escape key events",
-+                 0);
-+                                                                                
-+    CORBA_free (def);
-+
-+    bonobo_object_unref (BONOBO_OBJECT (pb));
-+    
-+      return control;
-+}
-+
-+VimControl *
-+vim_control_new (void)
-+{
-+      VimControl *control;
-+      
-+    g_message ("Creating VimControl...");
-+
-+      control = g_object_new (VIM_CONTROL_TYPE, NULL);
-+
-+      return vim_control_construct (control);
-+}
-+
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/vim_bonobo_control.h vim/src/vim_bonobo_control.h
---- vimcopy/src/vim_bonobo_control.h   Wed Dec 31 18:00:00 1969
-+++ vim/src/vim_bonobo_control.h       Sat Jul 26 13:16:48 2003
-@@ -0,0 +1,50 @@
-+/*
-+ * vim_bonobo_control.h
-+ *
-+ * Author:
-+ *   Jason Hildebrand (jason@peaceworks.ca)
-+ *
-+ */
-+
-+#ifndef _VIM_CONTROL_H_
-+#define _VIM_CONTROL_H_
-+
-+#include <bonobo/bonobo-control.h>
-+#define VIM_OAFIID "OAFIID:Vim_Control"
-+#define NORMAL_IO 0
-+#define PERSIST_STREAM_IO 1
-+#define PERSIST_FILE_IO 2
-+
-+G_BEGIN_DECLS
-+ 
-+#define VIM_CONTROL_TYPE           (vim_control_get_type ())
-+#define VIM_CONTROL(o)             (G_TYPE_CHECK_INSTANCE_CAST ((o), VIM_CONTROL_TYPE, VimControl))
-+#define VIM_CONTROL_CLASS(k)       (G_TYPE_CHECK_CLASS_CAST((k), VIM_CONTROL_TYPE, VimControlClass))
-+
-+#define VIM_IS_CONTROL(o)          (G_TYPE_CHECK_INSTANCE_TYPE ((o), VIM_CONTROL_TYPE))
-+#define VIM_IS_CONTROL_CLASS(k)    (G_TYPE_CHECK_CLASS_TYPE ((k), VIM_CONTROL_TYPE))
-+#define VIM_CONTROL_GET_CLASS(o)   (G_TYPE_INSTANCE_GET_CLASS ((o), VIM_CONTROL_TYPE, VimControlClass))
-+
-+typedef struct _VimControl         VimControl;
-+typedef struct _VimControlClass    VimControlClass;
-+typedef struct _VimControlPrivate  VimControlPrivate;
-+
-+struct _VimControl {
-+      BonoboControl control;
-+
-+      VimControlPrivate *priv;
-+};
-+
-+struct _VimControlClass {
-+      BonoboControlClass parent_class;
-+};
-+
-+GType         vim_control_get_type                    (void);
-+VimControl    *vim_control_new                         (void);
-+VimControl    *vim_control_construct                   (VimControl    *control);
-+
-+void set_curbuf_persistent(void);
-+
-+G_END_DECLS
-+
-+#endif /* _VIM_CONTROL_H_*/
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/vim_bonobo_factory.c vim/src/vim_bonobo_factory.c
---- vimcopy/src/vim_bonobo_factory.c   Wed Dec 31 18:00:00 1969
-+++ vim/src/vim_bonobo_factory.c       Sun Oct 26 16:51:53 2003
-@@ -0,0 +1,73 @@
-+/*
-+ * vim_bonobo_factory.c
-+ *
-+ * Author:
-+ *   Jason Hildebrand (jason@peaceworks.ca)
-+ *
-+ */
-+
-+#include "vim.h"
-+#include "version.h"
-+#include <bonobo/bonobo-generic-factory.h>
-+#include "vim_bonobo_control.h"
-+
-+static BonoboGenericFactory *factory = NULL;
-+static int vim_instantiated = 0;
-+
-+static BonoboObject *
-+vim_bonobo_factory(BonoboGenericFactory *this,
-+              const char           *oaf_iid,
-+              void                 *data)
-+{
-+    VimControl     *vim;
-+    BonoboObject *retval;
-+
-+    g_return_val_if_fail (this != NULL, NULL);
-+    g_return_val_if_fail (oaf_iid != NULL, NULL);
-+
-+    if( vim_instantiated ) {
-+        /* we cannot instantiate more than one control from this process,
-+         * because of all of vim's global variables */
-+        return NULL;
-+    }
-+                                                                                
-+    g_message ("Trying to produce a '%s'...", oaf_iid);
-+                                                                                
-+    if (strcmp (oaf_iid, VIM_OAFIID) == 0) {
-+        vim = vim_control_new ();
-+        if (vim == NULL)
-+            return NULL;
-+        retval = BONOBO_OBJECT (vim);
-+    } else {
-+        g_warning ("Unknown IID `%s' requested", oaf_iid);
-+        return NULL;
-+    }
-+    vim_instantiated = 1;
-+                                                                                
-+    return retval;
-+}
-+
-+/* wait until this component is instantiated */
-+int vim_bonobo_wait_for_instantiation()
-+{
-+    while( !vim_instantiated) {
-+        MAIN_ITERATION_DO(TRUE);
-+    }
-+}
-+
-+
-+int vim_bonobo_init(int *argc, char *argv[])
-+{
-+    if (!bonobo_ui_init ("gnome-vim", VIM_VERSION_SHORT, argc, argv))
-+        g_error (_("Could not initialize Bonobo"));
-+                                                                                
-+    factory = bonobo_generic_factory_new (
-+        VIM_FACTORY_OAFIID, vim_bonobo_factory, NULL);
-+                                                                                
-+    if (factory == NULL) {
-+        g_error ("Couldn't create factory.\n");
-+        return 0;
-+    }
-+    return 1;
-+}
-+
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/vim_bonobo_factory.h vim/src/vim_bonobo_factory.h
---- vimcopy/src/vim_bonobo_factory.h   Wed Dec 31 18:00:00 1969
-+++ vim/src/vim_bonobo_factory.h       Sun Oct 26 16:55:12 2003
-@@ -0,0 +1,17 @@
-+/*
-+ * vim_bonobo_factory.h
-+ *
-+ * Author:
-+ *   Jason Hildebrand (jason@peaceworks.ca)
-+ *
-+ */
-+
-+#if !defined( _VIM_BONOBO_FACTORY_H)
-+#define _VIM_BONOBO_FACTORY_H
-+
-+#define VIM_FACTORY_OAFIID     "OAFIID:Vim_Control_Factory"
-+
-+void gui_component_init(int *argc, char *argv []);
-+int gui_component_wait_for_instantiation(void);
-+
-+#endif
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/vim_bonobo_main.c vim/src/vim_bonobo_main.c
---- vimcopy/src/vim_bonobo_main.c      Wed Dec 31 18:00:00 1969
-+++ vim/src/vim_bonobo_main.c  Sun Oct 26 20:04:35 2003
-@@ -0,0 +1,98 @@
-+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-+#include "vim.h"
-+
-+#include <glib/gmain.h>
-+#include <glib-object.h>
-+#include <bonobo/Bonobo.h>
-+
-+static guint              bonobo_main_loop_level = 0;
-+static GSList *           bonobo_main_loops = NULL;
-+
-+static gboolean           in_bonobo_call = FALSE;
-+
-+
-+/**
-+ * bonobo_main:
-+ * 
-+ * Activates the Bonobo POA Manager and enters the main event loop.
-+ */
-+void
-+vim_bonobo_main (void)
-+{
-+      GMainLoop *loop;
-+
-+    if( in_bonobo_call ) {
-+        return;
-+    }
-+
-+      bonobo_activate ();
-+
-+      bonobo_main_loop_level++;
-+  
-+      loop = g_main_loop_new (NULL, TRUE);
-+      bonobo_main_loops = g_slist_prepend (bonobo_main_loops, loop);
-+
-+      if (g_main_loop_is_running (bonobo_main_loops->data))
-+              g_main_loop_run (loop);
-+
-+      bonobo_main_loops = g_slist_remove (bonobo_main_loops, loop);
-+
-+      g_main_loop_unref (loop);
-+
-+      bonobo_main_loop_level--;
-+}
-+
-+/**
-+ * bonobo_main_quit:
-+ * 
-+ * Quits the main event loop.
-+ */
-+void
-+vim_bonobo_main_quit (void)
-+{
-+      g_return_if_fail (bonobo_main_loops != NULL);
-+
-+      g_main_loop_quit (bonobo_main_loops->data);
-+}
-+
-+int
-+vim_bonobo_main_level(void)
-+{
-+    return bonobo_main_loop_level;
-+}
-+
-+static long save_p_report;
-+static int save_msg_silent;
-+static int save_emsg_silent;
-+
-+void
-+vim_bonobo_call_begin(void)
-+{
-+    in_bonobo_call = TRUE;
-+    gui.processing_call = TRUE;
-+    save_p_report = p_report;
-+    p_report = 100000;
-+    save_msg_silent = msg_silent;
-+    msg_silent = TRUE;
-+    save_emsg_silent = emsg_silent;
-+    emsg_silent = TRUE;
-+}
-+
-+void
-+vim_bonobo_call_end(void)
-+{
-+    in_bonobo_call = FALSE;
-+    gui.processing_call = FALSE;
-+    msg_silent = save_msg_silent;
-+    emsg_silent = save_emsg_silent;
-+    p_report = save_p_report;
-+}
-+
-+gboolean
-+vim_bonobo_main_iteration_do(may_block)
-+{
-+    if( ! in_bonobo_call ) {
-+        g_main_context_iteration(NULL, may_block);
-+    }
-+}
-+
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/vim_bonobo_main.h vim/src/vim_bonobo_main.h
---- vimcopy/src/vim_bonobo_main.h      Wed Dec 31 18:00:00 1969
-+++ vim/src/vim_bonobo_main.h  Sat Oct 11 10:22:11 2003
-@@ -0,0 +1,16 @@
-+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-+
-+#ifndef __VIM_BONOBO_MAIN_H__
-+#define __VIM_BONOBO_MAIN_H__
-+
-+#include <glib-object.h>
-+#include <bonobo/Bonobo.h>
-+
-+void                      vim_bonobo_main                      (void);
-+void                vim_bonobo_main_quit     (void);
-+int                 vim_bonobo_level(void);
-+gboolean            vim_bonobo_main_iteration_do(int may_block);
-+void                vim_bonobo_call_begin(void);
-+void                vim_bonobo_call_end(void);
-+
-+#endif /* __VIM_BONOBO_MAIN_H__ */
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/vim_proxy_factory.c vim/src/vim_proxy_factory.c
---- vimcopy/src/vim_proxy_factory.c    Wed Dec 31 18:00:00 1969
-+++ vim/src/vim_proxy_factory.c        Sun Oct 26 19:34:07 2003
-@@ -0,0 +1,66 @@
-+/*
-+ * vim_proxy_factory.c
-+ *
-+ * Author:
-+ *   Jason Hildebrand (jason@peaceworks.ca)
-+ *
-+ */
-+
-+#include "vim.h"
-+#include "version.h"
-+#include <libbonobo.h>
-+#include <bonobo/bonobo-foreign-object.h>
-+#include <bonobo/bonobo-generic-factory.h>
-+#include "vim_bonobo_control.h"
-+#include "vim_bonobo_factory.h"
-+
-+#define VIM_PROXY_OAFIID "OAFIID:Vim_Proxy_Factory"
-+
-+static BonoboGenericFactory *factory = NULL;
-+
-+static BonoboObject *
-+vim_proxy_factory(BonoboGenericFactory *this,
-+              const char           *oaf_iid,
-+              void                 *data)
-+{
-+    CORBA_Object realfactory;
-+    CORBA_Environment ev;
-+    BonoboObject * vim_control = NULL;
-+    CORBA_Object corba_control;
-+
-+    g_return_val_if_fail (this != NULL, NULL);
-+    g_return_val_if_fail (oaf_iid != NULL, NULL);
-+
-+    g_message ("Trying to produce a '%s'...", oaf_iid);
-+                                                                                
-+    if (strcmp (oaf_iid, VIM_OAFIID) == 0) {
-+        CORBA_exception_init(&ev);
-+
-+        realfactory = bonobo_activation_activate_from_id (VIM_FACTORY_OAFIID,
-+                                                  Bonobo_ACTIVATION_FLAG_PRIVATE,
-+                                                  NULL,
-+                                                  &ev);
-+        if (ev._major != CORBA_NO_EXCEPTION ) {
-+            CORBA_exception_free (&ev);
-+            return NULL;
-+        }
-+
-+        corba_control = Bonobo_GenericFactory_createObject(realfactory, VIM_OAFIID, &ev);
-+        if (ev._major != CORBA_NO_EXCEPTION ) {
-+            CORBA_exception_free (&ev);
-+            return NULL;
-+        }
-+        CORBA_exception_free (&ev);
-+        vim_control = bonobo_foreign_object_new(corba_control);
-+    } else {
-+        g_warning ("Unknown IID `%s' requested", oaf_iid);
-+        return NULL;
-+    }
-+    return vim_control;
-+}
-+
-+
-+BONOBO_ACTIVATION_FACTORY (VIM_PROXY_OAFIID,
-+               "Vim Proxy Factory", "1.0",
-+               vim_proxy_factory, NULL);
-+
This page took 0.471325 seconds and 4 git commands to generate.