]> git.pld-linux.org Git - packages/vim.git/commitdiff
- orphaned, outdated
authorJan Rękorajski <baggins@pld-linux.org>
Fri, 21 Apr 2006 23:41:34 +0000 (23:41 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    014_all_vim-6.3-dns-syntax.patch -> 1.2
    015_all_vim-6.3-screen.linux-is-dark-83416.patch -> 1.2
    6.4.001 -> 1.2
    6.4.002 -> 1.2
    6.4.003 -> 1.2
    6.4.004 -> 1.2
    6.4.005 -> 1.2
    6.4.006 -> 1.2
    6.4.007 -> 1.2
    6.4.008 -> 1.2
    vim-CAN-2005-0069.patch -> 1.3
    vim-CMDLINE_COMPL.patch -> 1.2
    vim-bonobo-20030726.patch -> 1.2
    vim-docpath.patch -> 1.3
    vim-fhs.patch -> 1.5
    vim-hold_gui_events.patch -> 1.2
    vim-ispell-axp.patch -> 1.2
    vim-ispell.patch -> 1.19
    vim-lib64.patch -> 1.2
    vim-libacl_fix.patch -> 1.2
    vim-mktemp.patch -> 1.2
    vim-ocaml.patch -> 1.3
    vim-pl.po.patch -> 1.3
    vim-python_ts.patch -> 1.4
    vim-specsyntax-pld.patch -> 1.4
    vim-specsyntax.patch -> 1.3
    vim-specsyntax4.patch -> 1.8

27 files changed:
014_all_vim-6.3-dns-syntax.patch [deleted file]
015_all_vim-6.3-screen.linux-is-dark-83416.patch [deleted file]
6.4.001 [deleted file]
6.4.002 [deleted file]
6.4.003 [deleted file]
6.4.004 [deleted file]
6.4.005 [deleted file]
6.4.006 [deleted file]
6.4.007 [deleted file]
6.4.008 [deleted file]
vim-CAN-2005-0069.patch [deleted file]
vim-CMDLINE_COMPL.patch [deleted file]
vim-bonobo-20030726.patch [deleted file]
vim-docpath.patch [deleted file]
vim-fhs.patch [deleted file]
vim-hold_gui_events.patch [deleted file]
vim-ispell-axp.patch [deleted file]
vim-ispell.patch [deleted file]
vim-lib64.patch [deleted file]
vim-libacl_fix.patch [deleted file]
vim-mktemp.patch [deleted file]
vim-ocaml.patch [deleted file]
vim-pl.po.patch [deleted file]
vim-python_ts.patch [deleted file]
vim-specsyntax-pld.patch [deleted file]
vim-specsyntax.patch [deleted file]
vim-specsyntax4.patch [deleted file]

diff --git a/014_all_vim-6.3-dns-syntax.patch b/014_all_vim-6.3-dns-syntax.patch
deleted file mode 100644 (file)
index 7cab4a2..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-# Better DNS syntax highlighting.
-
---- vim63/runtime/syntax/dns.vim-old   2004-09-26 22:46:26.000000000 -0700
-+++ vim63/runtime/syntax/dns.vim       2004-09-26 23:17:20.000000000 -0700
-@@ -13,13 +13,14 @@
- endif
- " Last match is taken!
--syn match     dnsKeyword      "\<\(IN\|A\|SOA\|NS\|CNAME\|MX\|PTR\|SOA\|MB\|MG\|MR\|NULL\|WKS\|HINFO\|TXT\|CS\|CH\|CPU\|OS\)\>"
-+syn match     dnsKeyword      "\<\(IN\|A\|AAAA\|SOA\|NS\|CNAME\|MX\|PTR\|SOA\|MB\|MG\|MR\|NULL\|WKS\|HINFO\|TXT\|CS\|CH\|CPU\|OS\|SRV\)\>"
- syn match   dnsRecordName       "^[^  ]*"
- syn match   dnsPreProc                "^\$[^ ]*"
- syn match   dnsComment                ";.*$"
- syn match   dnsDataFQDN               "\<[^   ]*\.[   ]*$"
- syn match   dnsConstant                       "\<\([0-9][0-9.]*\|[0-9.]*[0-9]\)\>"
- syn match   dnsIPaddr         "\<\(\([0-2]\)\{0,1}\([0-9]\)\{1,2}\.\)\{3}\([0-2]\)\{0,1}\([0-9]\)\{1,2}\>[    ]*$"
-+syn match   dnsIP6addr                "\<\([[:xdigit:]]\{0,4}:\)\{2,7}\(\|[[:xdigit:]]\{0,4}\)\>[     ]*$"
- " Define the default highlighting.
- " For version 5.7 and earlier: only when not done already
-@@ -38,6 +39,7 @@
-     HiLink dnsKeyword     Keyword
-     HiLink dnsRecordName  Type
-     HiLink dnsIPaddr      Type
-+    HiLink dnsIP6addr     Type
-     HiLink dnsIPerr       Error
-     HiLink dnsConstant          Constant
diff --git a/015_all_vim-6.3-screen.linux-is-dark-83416.patch b/015_all_vim-6.3-screen.linux-is-dark-83416.patch
deleted file mode 100644 (file)
index 2f3ebe4..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-# TERM=screen.linux background detection, Gentoo bug 83416.
-Index: src/option.c
-===================================================================
---- src/option.c       (revision 2)
-+++ src/option.c       (revision 3)
-@@ -3109,11 +3109,15 @@
-       /*
-        * If 'background' wasn't set by the user, try guessing the value,
-        * depending on the terminal name.  Only need to check for terminals
--       * with a dark background, that can handle color.  Only "linux"
--       * console at the moment.
-+       * with a dark background, that can handle color.  We recognise:
-+       *   * 'linux'           -- linux console
-+       *   * 'screen.linux'    -- linux console, with screen
-        */
-       idx4 = findoption((char_u *)"bg");
--      if (!(options[idx4].flags & P_WAS_SET) && STRCMP(T_NAME, "linux") == 0)
-+      if (!(options[idx4].flags & P_WAS_SET) && (
-+                  (STRCMP(T_NAME, "linux") == 0) ||
-+                  (STRCMP(T_NAME, "screen.linux") == 0)
-+              ))
-       {
-           set_string_option_direct(NULL, idx4, (char_u *)"dark", OPT_FREE);
-           /* don't mark it as set, when starting the GUI it may be changed
diff --git a/6.4.001 b/6.4.001
deleted file mode 100644 (file)
index 50405a6..0000000
--- a/6.4.001
+++ /dev/null
@@ -1,57 +0,0 @@
-To: vim-dev@vim.org
-Subject: Patch 6.4.001 (extra)
-Fcc: outbox
-From: Bram Moolenaar <Bram@moolenaar.net>
-Mime-Version: 1.0
-Content-Type: text/plain; charset=ISO-8859-1
-Content-Transfer-Encoding: 8bit
-------------
-
-Note: This only changes the code for Global IME, none of the 6.4
-executables are affected.
-
-
-Patch 6.4.001 (extra)
-Problem:    Win32: Can't compile the Global IME code.
-Solution:   Change "hwnd" to "hWnd". (Yongwei)
-Files:     src/glbl_ime.cpp
-
-
-*** ../vim-6.4.000/src/glbl_ime.cpp    Tue May 11 22:29:41 2004
---- src/glbl_ime.cpp   Mon Oct 17 11:03:43 2005
-***************
-*** 136,142 ****
-      {
-  #if defined(WIN3264) && defined(FEAT_MBYTE)
-       if (wide_WindowProc)
-!          lResult = DefWindowProcW(hwnd, Msg, wParam, lParam);
-       else
-  #endif
-           lResult = DefWindowProc(hWnd, Msg, wParam, lParam);
---- 136,142 ----
-      {
-  #if defined(WIN3264) && defined(FEAT_MBYTE)
-       if (wide_WindowProc)
-!          lResult = DefWindowProcW(hWnd, Msg, wParam, lParam);
-       else
-  #endif
-           lResult = DefWindowProc(hWnd, Msg, wParam, lParam);
-*** ../vim-6.4.000/src/version.c       Sat Oct 15 13:23:40 2005
---- src/version.c      Mon Oct 17 11:08:25 2005
-***************
-*** 643,644 ****
---- 643,646 ----
-  {   /* Add new patch number below this line */
-+ /**/
-+     1,
-  /**/
-
--- 
-Well, you come from nothing, you go back to nothing...  What have you
-lost?  Nothing!
-                               -- Monty Python: The life of Brian
-
- /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
-///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
-\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
- \\\     Buy LOTR 3 and help AIDS victims -- http://ICCF.nl/lotr.html   ///
diff --git a/6.4.002 b/6.4.002
deleted file mode 100644 (file)
index 0c807b1..0000000
--- a/6.4.002
+++ /dev/null
@@ -1,282 +0,0 @@
-To: vim-dev@vim.org
-Subject: Patch 6.4.002
-Fcc: outbox
-From: Bram Moolenaar <Bram@moolenaar.net>
-Mime-Version: 1.0
-Content-Type: text/plain; charset=ISO-8859-1
-Content-Transfer-Encoding: 8bit
-------------
-
-Patch 6.4.002
-Problem:    Unix: There is a small chance that the ownership of the wrong file
-           is changed.
-Solution:   Use fchown() instead of chown() for the viminfo file and the
-           backup file.
-Files:     src/ex_cmds.c, src/fileio.c
-
-
-*** ../vim-6.4.001/src/ex_cmds.c       Thu Jul 21 22:23:54 2005
---- src/ex_cmds.c      Tue Nov 29 17:23:48 2005
-***************
-*** 14,19 ****
---- 14,23 ----
-  #include "vim.h"
-  #include "version.h"
-  
-+ #ifdef HAVE_FCNTL_H
-+ # include <fcntl.h>
-+ #endif
-+ 
-  #ifdef FEAT_EX_EXTRA
-  static int linelen __ARGS((int *has_tab));
-  #endif
-***************
-*** 1510,1516 ****
-  
-       if (tempname != NULL)
-       {
-!          fp_out = mch_fopen((char *)tempname, WRITEBIN);
-  
-           /*
-            * If we can't create in the same directory, try creating a
---- 1514,1536 ----
-  
-       if (tempname != NULL)
-       {
-!          int fd;
-! 
-!          /* Use mch_open() to be able to use O_EXCL and set file
-!           * protection same as original file, but strip s-bit. */
-! #ifdef UNIX
-!          fd = mch_open((char *)tempname,
-!                  O_CREAT|O_EXTRA|O_EXCL|O_WRONLY,
-!                                     (int)((st_old.st_mode & 0777) | 0600));
-! #else
-!          fd = mch_open((char *)tempname,
-!                  O_CREAT|O_EXTRA|O_EXCL|O_WRONLY,
-!                                     0600);   /* r&w for user only */
-! #endif
-!          if (fd < 0)
-!              fp_out = NULL;
-!          else
-!              fp_out = fdopen(fd, WRITEBIN);
-  
-           /*
-            * If we can't create in the same directory, try creating a
-***************
-*** 1522,1539 ****
-               if ((tempname = vim_tempname('o')) != NULL)
-                   fp_out = mch_fopen((char *)tempname, WRITEBIN);
-           }
-! #ifdef UNIX
-           /*
-!           * Set file protection same as original file, but strip s-bit
-!           * and make sure the owner can read/write it.
-            */
-           if (fp_out != NULL)
-!          {
-!              (void)mch_setperm(tempname,
-!                                (long)((st_old.st_mode & 0777) | 0600));
-!              /* this only works for root: */
-!              (void)chown((char *)tempname, st_old.st_uid, st_old.st_gid);
-!          }
-  #endif
-       }
-      }
---- 1542,1555 ----
-               if ((tempname = vim_tempname('o')) != NULL)
-                   fp_out = mch_fopen((char *)tempname, WRITEBIN);
-           }
-! 
-! #if defined(UNIX) && defined(HAVE_FCHOWN)
-           /*
-!           * Make sure the owner can read/write it.  This only works for
-!           * root.
-            */
-           if (fp_out != NULL)
-!              (void)fchown(fileno(fp_out), st_old.st_uid, st_old.st_gid);
-  #endif
-       }
-      }
-*** ../vim-6.4.001/src/fileio.c        Fri Mar 18 19:16:29 2005
---- src/fileio.c       Tue Nov 29 16:51:26 2005
-***************
-*** 3087,3093 ****
-           if (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)
-               backup_copy = TRUE;
-           else
-  # endif
---- 3087,3098 ----
-           if (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
-! #  ifndef HAVE_FCHOWN
-!                  || st.st_uid != st_old.st_uid
-!                  || st.st_gid != st_old.st_gid
-! #  endif
-!                  )
-               backup_copy = TRUE;
-           else
-  # endif
-***************
-*** 3102,3125 ****
-               for (i = 4913; ; i += 123)
-               {
-                   sprintf((char *)gettail(IObuff), "%d", i);
-!                  if (mch_stat((char *)IObuff, &st) < 0)
-                       break;
-               }
-               fd = mch_open((char *)IObuff, O_CREAT|O_WRONLY|O_EXCL, perm);
--              close(fd);
-               if (fd < 0)     /* can't write in directory */
-                   backup_copy = TRUE;
-               else
-               {
-  # ifdef UNIX
-!                  chown((char *)IObuff, st_old.st_uid, st_old.st_gid);
-!                  (void)mch_setperm(IObuff, perm);
-                   if (mch_stat((char *)IObuff, &st) < 0
-                           || st.st_uid != st_old.st_uid
-                           || st.st_gid != st_old.st_gid
-                           || st.st_mode != perm)
-                       backup_copy = TRUE;
-  # endif
-                   mch_remove(IObuff);
-               }
-           }
---- 3107,3133 ----
-               for (i = 4913; ; i += 123)
-               {
-                   sprintf((char *)gettail(IObuff), "%d", i);
-!                  if (mch_lstat((char *)IObuff, &st) < 0)
-                       break;
-               }
-               fd = mch_open((char *)IObuff, O_CREAT|O_WRONLY|O_EXCL, perm);
-               if (fd < 0)     /* can't write in directory */
-                   backup_copy = TRUE;
-               else
-               {
-  # ifdef UNIX
-! #  ifdef HAVE_FCHOWN
-!                  fchown(fd, st_old.st_uid, st_old.st_gid);
-! #  endif
-                   if (mch_stat((char *)IObuff, &st) < 0
-                           || st.st_uid != st_old.st_uid
-                           || st.st_gid != st_old.st_gid
-                           || st.st_mode != perm)
-                       backup_copy = TRUE;
-  # endif
-+                  /* Close the file before removing it, on MS-Windows we
-+                   * can't delete an open file. */
-+                  close(fd);
-                   mch_remove(IObuff);
-               }
-           }
-***************
-*** 3333,3343 ****
-                        * bits for the group same as the protection bits for
-                        * others.
-                        */
-!                      if (st_new.st_gid != st_old.st_gid &&
-  # ifdef HAVE_FCHOWN  /* sequent-ptx lacks fchown() */
-!                                  fchown(bfd, (uid_t)-1, st_old.st_gid) != 0
-! # else
-!                        chown((char *)backup, (uid_t)-1, st_old.st_gid) != 0
-  # endif
-                                               )
-                           mch_setperm(backup,
---- 3341,3349 ----
-                        * bits for the group same as the protection bits for
-                        * others.
-                        */
-!                      if (st_new.st_gid != st_old.st_gid
-  # ifdef HAVE_FCHOWN  /* sequent-ptx lacks fchown() */
-!                              && fchown(bfd, (uid_t)-1, st_old.st_gid) != 0
-  # endif
-                                               )
-                           mch_setperm(backup,
-***************
-*** 3999,4004 ****
---- 4005,4033 ----
-      }
-  #endif
-  
-+ #ifdef UNIX
-+     /* When creating a new file, set its owner/group to that of the original
-+      * file.  Get the new device and inode number. */
-+     if (backup != NULL && !backup_copy)
-+     {
-+ # ifdef HAVE_FCHOWN
-+      struct stat     st;
-+ 
-+      /* don't change the owner when it's already OK, some systems remove
-+       * permission or ACL stuff */
-+      if (mch_stat((char *)wfname, &st) < 0
-+              || st.st_uid != st_old.st_uid
-+              || st.st_gid != st_old.st_gid)
-+      {
-+          fchown(fd, st_old.st_uid, st_old.st_gid);
-+          if (perm >= 0)      /* set permission again, may have changed */
-+              (void)mch_setperm(wfname, perm);
-+      }
-+ # endif
-+      buf_setino(buf);
-+     }
-+ #endif
-+ 
-      if (close(fd) != 0)
-      {
-       errmsg = (char_u *)_("E512: Close failed");
-***************
-*** 4021,4047 ****
-       * ACL on a file the user doesn't own). */
-      if (!backup_copy)
-       mch_set_acl(wfname, acl);
-- #endif
-- 
-- #ifdef UNIX
--     /* When creating a new file, set its owner/group to that of the original
--      * file.  Get the new device and inode number. */
--     if (backup != NULL && !backup_copy)
--     {
--      struct stat     st;
-- 
--      /* don't change the owner when it's already OK, some systems remove
--       * permission or ACL stuff */
--      if (mch_stat((char *)wfname, &st) < 0
--              || st.st_uid != st_old.st_uid
--              || st.st_gid != st_old.st_gid)
--      {
--          chown((char *)wfname, st_old.st_uid, st_old.st_gid);
--          if (perm >= 0)      /* set permission again, may have changed */
--              (void)mch_setperm(wfname, perm);
--      }
--      buf_setino(buf);
--     }
-  #endif
-  
-  
---- 4050,4055 ----
-*** ../vim-6.4.001/src/version.c       Mon Oct 17 11:09:59 2005
---- src/version.c      Tue Nov 29 19:23:24 2005
-***************
-*** 643,644 ****
---- 643,646 ----
-  {   /* Add new patch number below this line */
-+ /**/
-+     2,
-  /**/
-
--- 
-hundred-and-one symptoms of being an internet addict:
-250. You've given up the search for the "perfect woman" and instead,
-     sit in front of the PC until you're just too tired to care.
-
- /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
-///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
-\\\        download, build and distribute -- http://www.A-A-P.org        ///
- \\\            help me help AIDS victims -- http://www.ICCF.nl         ///
diff --git a/6.4.003 b/6.4.003
deleted file mode 100644 (file)
index c75ae2c..0000000
--- a/6.4.003
+++ /dev/null
@@ -1,49 +0,0 @@
-To: vim-dev@vim.org
-Subject: Patch 6.4.003
-Fcc: outbox
-From: Bram Moolenaar <Bram@moolenaar.net>
-Mime-Version: 1.0
-Content-Type: text/plain; charset=ISO-8859-1
-Content-Transfer-Encoding: 8bit
-------------
-
-Patch 6.4.003 (after 6.4.002)
-Problem:    Build problem on non-Unix systems.
-Solution:   Use stat() instead of lstat().
-Files:     src/fileio.c
-
-
-*** ../vim-6.4.002/src/fileio.c        Tue Nov 29 19:29:15 2005
---- src/fileio.c       Wed Nov 30 11:48:29 2005
-***************
-*** 3107,3113 ****
---- 3107,3117 ----
-               for (i = 4913; ; i += 123)
-               {
-                   sprintf((char *)gettail(IObuff), "%d", i);
-+ #ifdef HAVE_LSTAT
-                   if (mch_lstat((char *)IObuff, &st) < 0)
-+ #else
-+                  if (mch_stat((char *)IObuff, &st) < 0)
-+ #endif
-                       break;
-               }
-               fd = mch_open((char *)IObuff, O_CREAT|O_WRONLY|O_EXCL, perm);
-*** ../vim-6.4.002/src/version.c       Tue Nov 29 19:29:15 2005
---- src/version.c      Wed Nov 30 11:49:19 2005
-***************
-*** 643,644 ****
---- 643,646 ----
-  {   /* Add new patch number below this line */
-+ /**/
-+     3,
-  /**/
-
--- 
-If VIM were a woman, I'd marry her.  Slim, organized, helpful
-and beautiful; what's not to like?     --David A. Rogers
-
- /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
-///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
-\\\        download, build and distribute -- http://www.A-A-P.org        ///
- \\\            help me help AIDS victims -- http://www.ICCF.nl         ///
diff --git a/6.4.004 b/6.4.004
deleted file mode 100644 (file)
index 740d485..0000000
--- a/6.4.004
+++ /dev/null
@@ -1,51 +0,0 @@
-To: vim-dev@vim.org
-Subject: Patch 6.4.004
-Fcc: outbox
-From: Bram Moolenaar <Bram@moolenaar.net>
-Mime-Version: 1.0
-Content-Type: text/plain; charset=ISO-8859-1
-Content-Transfer-Encoding: 8bit
-------------
-
-Patch 6.4.004
-Problem:    "go" does not work correctly in combination with 'virtualedit'.
-           (Alojz Motesicky)
-Solution:   Reset the "coladd" field.
-Files:     src/memline.c
-
-
-*** ../vim-6.4.003/src/memline.c       Thu Feb 17 11:02:53 2005
---- src/memline.c      Thu Dec  1 16:07:04 2005
-***************
-*** 4368,4373 ****
---- 4368,4376 ----
-      {
-       curwin->w_cursor.lnum = lnum;
-       curwin->w_cursor.col = (colnr_T)boff;
-+ # ifdef FEAT_VIRTUALEDIT
-+      curwin->w_cursor.coladd = 0;
-+ # endif
-       curwin->w_set_curswant = TRUE;
-      }
-      check_cursor();
-*** ../vim-6.4.003/src/version.c       Wed Nov 30 12:38:32 2005
---- src/version.c      Thu Dec  1 16:07:55 2005
-***************
-*** 643,644 ****
---- 643,646 ----
-  {   /* Add new patch number below this line */
-+ /**/
-+     4,
-  /**/
-
--- 
-       Bravely bold Sir Robin, rode forth from Camelot,
-       He was not afraid to die, Oh Brave Sir Robin,
-       He was not at all afraid to be killed in nasty ways
-       Brave, brave, brave, brave Sir Robin.
-                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
-
- /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
-///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
-\\\        download, build and distribute -- http://www.A-A-P.org        ///
- \\\            help me help AIDS victims -- http://www.ICCF.nl         ///
diff --git a/6.4.005 b/6.4.005
deleted file mode 100644 (file)
index dbc2b70..0000000
--- a/6.4.005
+++ /dev/null
@@ -1,52 +0,0 @@
-To: vim-dev@vim.org
-Subject: Patch 6.4.005
-Fcc: outbox
-From: Bram Moolenaar <Bram@moolenaar.net>
-Mime-Version: 1.0
-Content-Type: text/plain; charset=ISO-8859-1
-Content-Transfer-Encoding: 8bit
-------------
-
-Patch 6.4.005
-Problem:    When truncating a message with multi-byte characters the '<' may
-           be written before the buffer. (Pawel S. Veselov)
-Solution:   Don't write the '<' when there is sufficient room.
-Files:     src/message.c
-
-
-*** ../vim-6.4.004/src/message.c       Sun Jun 13 12:15:03 2004
---- src/message.c      Thu Dec 22 22:26:05 2005
-***************
-*** 718,723 ****
---- 718,727 ----
-       {
-           int size = vim_strsize(s);
-  
-+          /* There may be room anyway when there are multibyte chars. */
-+          if (size <= room)
-+              return s;
-+ 
-           for (n = 0; size >= room; )
-           {
-               size -= (*mb_ptr2cells)(s + n);
-*** ../vim-6.4.004/src/version.c       Thu Dec  1 16:08:05 2005
---- src/version.c      Thu Dec 22 22:33:27 2005
-***************
-*** 643,644 ****
---- 643,646 ----
-  {   /* Add new patch number below this line */
-+ /**/
-+     5,
-  /**/
-
--- 
-ARTHUR: Old woman!
-DENNIS: Man!
-ARTHUR: Man.  I'm sorry.  Old man, What knight live in that castle over there?
-DENNIS: I'm thirty-seven.
-                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
-
- /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
-///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
-\\\        download, build and distribute -- http://www.A-A-P.org        ///
- \\\            help me help AIDS victims -- http://www.ICCF.nl         ///
diff --git a/6.4.006 b/6.4.006
deleted file mode 100644 (file)
index 7a7e517..0000000
--- a/6.4.006
+++ /dev/null
@@ -1,64 +0,0 @@
-To: vim-dev@vim.org
-Subject: Patch 6.4.006
-Fcc: outbox
-From: Bram Moolenaar <Bram@moolenaar.net>
-Mime-Version: 1.0
-Content-Type: text/plain; charset=ISO-8859-1
-Content-Transfer-Encoding: 8bit
-------------
-
-Patch 6.4.006
-Problem:    ":argedit 1234.c" edits the file ".c". (Karsten Hopp)
-Solution:   Don't accept a count for ":argedit", ":argadd" and ":argdelete".
-Files:     src/ex_cmds.h
-
-
-*** ../vim-6.4.005/src/ex_cmds.h       Mon Aug 30 14:58:51 2004
---- src/ex_cmds.h      Thu Dec 22 22:29:14 2005
-***************
-*** 109,121 ****
-  EX(CMD_args,         "args",         ex_args,
-                       BANG|FILES|EDITCMD|ARGOPT|TRLBAR),
-  EX(CMD_argadd,               "argadd",       ex_argadd,
-!                      BANG|NEEDARG|RANGE|NOTADR|ZEROR|COUNT|FILES|TRLBAR),
-  EX(CMD_argdelete,    "argdelete",    ex_argdelete,
-!                      BANG|RANGE|NOTADR|COUNT|FILES|TRLBAR),
-  EX(CMD_argdo,                "argdo",        ex_listdo,
-                       BANG|NEEDARG|EXTRA|NOTRLCOM),
-  EX(CMD_argedit,              "argedit",      ex_argedit,
-!                      BANG|NEEDARG|RANGE|NOTADR|COUNT|FILE1|EDITCMD|TRLBAR),
-  EX(CMD_argglobal,    "argglobal",    ex_args,
-                       BANG|FILES|EDITCMD|ARGOPT|TRLBAR),
-  EX(CMD_arglocal,     "arglocal",     ex_args,
---- 109,121 ----
-  EX(CMD_args,         "args",         ex_args,
-                       BANG|FILES|EDITCMD|ARGOPT|TRLBAR),
-  EX(CMD_argadd,               "argadd",       ex_argadd,
-!                      BANG|NEEDARG|RANGE|NOTADR|ZEROR|FILES|TRLBAR),
-  EX(CMD_argdelete,    "argdelete",    ex_argdelete,
-!                      BANG|RANGE|NOTADR|FILES|TRLBAR),
-  EX(CMD_argdo,                "argdo",        ex_listdo,
-                       BANG|NEEDARG|EXTRA|NOTRLCOM),
-  EX(CMD_argedit,              "argedit",      ex_argedit,
-!                      BANG|NEEDARG|RANGE|NOTADR|FILE1|EDITCMD|TRLBAR),
-  EX(CMD_argglobal,    "argglobal",    ex_args,
-                       BANG|FILES|EDITCMD|ARGOPT|TRLBAR),
-  EX(CMD_arglocal,     "arglocal",     ex_args,
-*** ../vim-6.4.005/src/version.c       Thu Dec 22 22:36:58 2005
---- src/version.c      Thu Dec 22 22:38:08 2005
-***************
-*** 643,644 ****
---- 643,646 ----
-  {   /* Add new patch number below this line */
-+ /**/
-+     6,
-  /**/
-
--- 
-"Lisp has all the visual appeal of oatmeal with nail clippings thrown in."
-                                                         -- Larry Wall
-
- /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
-///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
-\\\        download, build and distribute -- http://www.A-A-P.org        ///
- \\\            help me help AIDS victims -- http://www.ICCF.nl         ///
diff --git a/6.4.007 b/6.4.007
deleted file mode 100644 (file)
index 13341e1..0000000
--- a/6.4.007
+++ /dev/null
@@ -1,54 +0,0 @@
-To: vim-dev@vim.org
-Subject: Patch 6.4.007
-Fcc: outbox
-From: Bram Moolenaar <Bram@moolenaar.net>
-Mime-Version: 1.0
-Content-Type: text/plain; charset=ISO-8859-1
-Content-Transfer-Encoding: 8bit
-------------
-
-Patch 6.4.007
-Problem:    Crash when expanding a file name argument in backticks. (Adri
-           Verhoef)
-Solution:   Check for the NUL after the expansion result.
-Files:     src/os_unix.c
-
-
-*** ../vim-6.4.006/src/os_unix.c       Sat Oct  8 16:39:10 2005
---- src/os_unix.c      Thu Feb  2 12:48:28 2006
-***************
-*** 5051,5057 ****
-       /* Space or NL separates */
-       if (shell_style == STYLE_ECHO || shell_style == STYLE_BT)
-       {
-!          while (!(shell_style == STYLE_ECHO && *p == ' ') && *p != '\n')
-               ++p;
-           if (p == buffer + len)              /* last entry */
-               *p = NUL;
---- 5051,5058 ----
-       /* Space or NL separates */
-       if (shell_style == STYLE_ECHO || shell_style == STYLE_BT)
-       {
-!          while (!(shell_style == STYLE_ECHO && *p == ' ')
-!                                                 && *p != '\n' && *p != NUL)
-               ++p;
-           if (p == buffer + len)              /* last entry */
-               *p = NUL;
-*** ../vim-6.4.006/src/version.c       Thu Dec 22 22:39:11 2005
---- src/version.c      Wed Feb  8 11:10:30 2006
-***************
-*** 643,644 ****
---- 643,646 ----
-  {   /* Add new patch number below this line */
-+ /**/
-+     7,
-  /**/
-
--- 
-"My particular problem is with registry entries, which seem to just accumulate
-like plastic coffee cups..."           -- Paul Moore
-
- /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
-///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
-\\\        download, build and distribute -- http://www.A-A-P.org        ///
- \\\            help me help AIDS victims -- http://www.ICCF.nl         ///
diff --git a/6.4.008 b/6.4.008
deleted file mode 100644 (file)
index f759a7a..0000000
--- a/6.4.008
+++ /dev/null
@@ -1,75 +0,0 @@
-To: vim-dev@vim.org
-Subject: Patch 6.4.008
-Fcc: outbox
-From: Bram Moolenaar <Bram@moolenaar.net>
-Mime-Version: 1.0
-Content-Type: text/plain; charset=ISO-8859-1
-Content-Transfer-Encoding: 8bit
-------------
-
-Patch 6.4.008
-Problem:    Hang in search for 'hlsearch' highlighting. (Yukihiro Nakadaira)
-Solution:   Skip over (multi-byte) character instead of single byte.
-Files:     src/screen.c
-
-
-*** ../vim-6.4.007/src/screen.c        Wed Jan 19 11:03:00 2005
---- src/screen.c       Sat Feb 25 14:34:41 2006
-***************
-*** 5803,5814 ****
-               || (shl->rm.endpos[0].lnum == 0
-                   && shl->rm.endpos[0].col == shl->rm.startpos[0].col))
-       {
-!          matchcol = shl->rm.startpos[0].col + 1;
-!          if (ml_get_buf(shl->buf, lnum, FALSE)[matchcol - 1] == NUL)
-           {
-               shl->lnum = 0;
-               break;
-           }
-       }
-       else
-           matchcol = shl->rm.endpos[0].col;
---- 5803,5824 ----
-               || (shl->rm.endpos[0].lnum == 0
-                   && shl->rm.endpos[0].col == shl->rm.startpos[0].col))
-       {
-!          char_u      *ml;
-! 
-!          matchcol = shl->rm.startpos[0].col;
-!          ml = ml_get_buf(shl->buf, lnum, FALSE) + matchcol;
-!          if (*ml == NUL)
-           {
-+              ++matchcol;
-               shl->lnum = 0;
-               break;
-           }
-+ #ifdef FEAT_MBYTE
-+          if (has_mbyte)
-+              matchcol += mb_ptr2len_check(ml);
-+          else
-+ #endif
-+              ++matchcol;
-       }
-       else
-           matchcol = shl->rm.endpos[0].col;
-*** ../vim-6.4.007/src/version.c       Wed Feb  8 11:11:51 2006
---- src/version.c      Sat Feb 25 14:37:36 2006
-***************
-*** 643,644 ****
---- 643,646 ----
-  {   /* Add new patch number below this line */
-+ /**/
-+     8,
-  /**/
-
--- 
-Team-building exercises come in many forms but they all trace their roots back
-to the prison system.  In your typical team-building exercise the employees
-are subjected to a variety of unpleasant situations until they become either a
-cohesive team or a ring of car jackers.
-                               (Scott Adams - The Dilbert principle)
-
- /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
-///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
-\\\        download, build and distribute -- http://www.A-A-P.org        ///
- \\\            help me help AIDS victims -- http://www.ICCF.nl         ///
diff --git a/vim-CAN-2005-0069.patch b/vim-CAN-2005-0069.patch
deleted file mode 100644 (file)
index 1c462f9..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -burN vim63.orig/runtime/tools/vimspell.sh vim63/runtime/tools/vimspell.sh
---- vim63.orig/runtime/tools/vimspell.sh       2005-03-19 15:54:53.345907600 +0100
-+++ vim63/runtime/tools/vimspell.sh    2005-03-19 15:56:32.960763840 +0100
-@@ -13,9 +13,7 @@
- # March 1999
- INFILE=$1
--OUTFILE=/tmp/vimspell.$$
--# if you have "tempfile", use the following line
--#OUTFILE=`tempfile`
-+OUTFILE=`mktemp -t vimspellXXXXXX` || exit 1
- #
- # local spellings
diff --git a/vim-CMDLINE_COMPL.patch b/vim-CMDLINE_COMPL.patch
deleted file mode 100644 (file)
index 0ad89c3..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -ru vim-5.4e.old/src/ex_docmd.c vim-5.4e/src/ex_docmd.c
---- vim-5.4e.old/src/ex_docmd.c        Tue Feb 16 21:25:54 1999
-+++ vim-5.4e/src/ex_docmd.c    Tue Feb 23 17:13:57 1999
-@@ -5902,9 +5902,7 @@
- {
-     int           mode;
-     char_u  *cmdp;
--#ifdef CMDLINE_COMPL
-     char_u  *ambigstr;
--#endif
-     cmdp = eap->cmd;
-     mode = get_map_mode(&cmdp, eap->forceit || isabbrev);
diff --git a/vim-bonobo-20030726.patch b/vim-bonobo-20030726.patch
deleted file mode 100644 (file)
index 4d2f8c5..0000000
+++ /dev/null
@@ -1,5214 +0,0 @@
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/Makefile vim/src/Makefile
---- vimcopy/src/Makefile       Mon Jun  2 09:32:18 2003
-+++ vim/src/Makefile   Sat Jul 26 13:16:46 2003
-@@ -1291,6 +1291,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 \
-@@ -1319,6 +1323,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) \
-@@ -1328,7 +1335,7 @@
-       $(OS_EXTRA_OBJ) \
-       $(WORKSHOP_OBJ) \
-       $(NETBEANS_OBJ) \
--      $(WSDEBUG_OBJ)
-+      $(WSDEBUG_OBJ)
- PRO_AUTO = \
-       buffer.pro \
-@@ -2132,6 +2139,18 @@
- objects/gui_photon.o: gui_photon.c
-       $(CCC) -o $@ gui_photon.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
-@@ -2251,6 +2270,15 @@
- 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/window.o: window.c
-       $(CCC) -o $@ window.c
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/Vim_Control.server vim/src/Vim_Control.server
---- vimcopy/src/Vim_Control.server     Wed Dec 31 18:00:00 1969
-+++ vim/src/Vim_Control.server Sat Jul 26 13:16:46 2003
-@@ -0,0 +1,34 @@
-+<oaf_info>
-+
-+<oaf_server iid="OAFIID:Vim_Control_Factory" type="exe" location="/home/jdhildeb/projects/gnome-vim/vim/src/vim">
-+  <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_Control_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       Mon May 26 23:04:33 2003
-+++ vim/src/buffer.c   Sat Jul 26 16:36:29 2003
-@@ -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
-       }
-     }
-@@ -4510,6 +4531,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/configure.in vim/src/configure.in
---- vimcopy/src/configure.in   Mon Jun  2 09:32:19 2003
-+++ vim/src/configure.in       Sat Jul 26 13:16:46 2003
-@@ -1131,9 +1131,9 @@
-     AC_MSG_CHECKING(for libgnomeui-2.0)
-     if $PKG_CONFIG --exists libgnomeui-2.0; then
-       AC_MSG_RESULT(yes)
--      GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
--      GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
--      GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
-+      GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0 libnautilus`
-+      GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0 libnautilus`
-+      GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0 libnautilus`
-       $1
-     else
-       AC_MSG_RESULT(not found)
-@@ -1301,6 +1301,20 @@
-         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) 
-+            else
-+              AC_MSG_RESULT(no (bonobo requires Gnome 2));
-+            fi
-+          fi
-       fi
-       }
-       fi
-Binary files vimcopy/src/container and vim/src/container differ
-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;
-+}
-Binary files vimcopy/src/container.o and vim/src/container.o differ
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/ex_cmds2.c vim/src/ex_cmds2.c
---- vimcopy/src/ex_cmds2.c     Wed Jul  9 09:23:22 2003
-+++ vim/src/ex_cmds2.c Sat Jul 26 13:16:47 2003
-@@ -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     Mon May 26 10:45:01 2003
-+++ vim/src/ex_docmd.c Sat Jul 26 13:16:47 2003
-@@ -5348,8 +5348,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
-@@ -5370,8 +5375,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? */
- }
- /*
-@@ -5391,6 +5400,10 @@
-       return;
-     }
- # endif
-+#ifdef FEAT_GUI_COMPONENT
-+    EMSG(_(e_compnoquit));
-+    return;
-+#endif
-     exiting = TRUE;
-     if (eap->forceit || !check_changed_any(FALSE))
-       getout(0);
-@@ -5585,8 +5598,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       Fri Jul 25 11:04:42 2003
-+++ vim/src/fileio.c   Sat Jul 26 13:16:47 2003
-@@ -45,6 +45,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
-@@ -200,6 +204,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
-  */
-@@ -219,6 +224,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;
-@@ -322,7 +332,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;
-@@ -381,7 +391,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 ... */
-@@ -423,7 +433,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.
-@@ -483,6 +493,11 @@
-       setmode(0, O_BINARY);
- #endif
-     }
-+#ifdef FEAT_GUI_COMPONENT
-+    else if (read_pstream)
-+    {
-+    }
-+#endif
-     else if (!read_buffer)
-     {
- #ifdef USE_MCH_ACCESS
-@@ -599,7 +614,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;
-     }
-@@ -624,7 +639,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 */
-       /*
-@@ -661,7 +676,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;
-@@ -701,7 +716,7 @@
-           }
- #endif
-       }
--      else if (!read_buffer)
-+      else if (!read_buffer && !read_pstream)
-           filemess(curbuf, sfname, (char_u *)"", 0);
-     }
-@@ -781,7 +796,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;
-@@ -920,7 +935,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
-@@ -969,7 +984,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
-@@ -1120,6 +1135,11 @@
-                       }
-                   }
-               }
-+#if defined(FEAT_GUI_COMPONENT) && defined(FEAT_GUI_GNOME) 
-+                else if( read_pstream ) {
-+                    size = vim_control_persist_stream_read(ptr, size);   
-+                }
-+#endif
-               else
-               {
-                   /*
-@@ -1713,7 +1733,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))
-                               {
-@@ -1802,7 +1822,7 @@
- # endif
- #endif
--    if (!read_buffer && !read_stdin)
-+    if (!read_buffer && !read_stdin && !read_pstream)
-       close(fd);                              /* errors are ignored */
-     vim_free(buffer);
-@@ -1991,7 +2011,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
-@@ -2057,7 +2077,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;
-@@ -2383,6 +2403,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
-@@ -2795,6 +2820,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
-@@ -3398,7 +3427,7 @@
-      * (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
-+    while (write_pstream && (fd = mch_open((char *)wfname, O_WRONLY | O_EXTRA | (append
-                       ? (forceit ? (O_APPEND | O_CREAT) : O_APPEND)
-                       : (O_CREAT | O_TRUNC))
-                       , 0666)) < 0)
-@@ -3670,7 +3699,7 @@
-       nchars += len;
-     }
--    if (close(fd) != 0)
-+    if (!write_pstream && close(fd) != 0)
-     {
-       errmsg = (char_u *)_("E512: Close failed");
-       end = 0;
-@@ -4088,6 +4117,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);
-@@ -4476,7 +4509,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;
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/globals.h vim/src/globals.h
---- vimcopy/src/globals.h      Mon Jun  2 09:32:19 2003
-+++ vim/src/globals.h  Sat Jul 26 13:16:47 2003
-@@ -802,6 +802,11 @@
- 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 */
-+#endif
-+
- EXTERN struct buffheader stuffbuff    /* stuff buffer */
- #ifdef DO_INIT
-                   = {{NULL, {NUL}}, NULL, 0, 0}
-@@ -1321,6 +1326,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 Jul 26 13:16:47 2003
-@@ -0,0 +1,189 @@
-+#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);
-+      return CORBA_TRUE;
-+}
-+
-+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;
-+}
-+
-+static void
-+impl_insert_html (PortableServer_Servant servant, const CORBA_char * html, CORBA_Environment * ev)
-+{
-+      printf ("impl_insert_html\n");
-+}
-+
-+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)
-+{
-+      return FALSE;
-+}
-+
-+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);
-+}
-+
-+static CORBA_boolean
-+impl_has_undo (PortableServer_Servant servant, CORBA_Environment * ev)
-+{
-+      EditorEngine *e = gtkhtml_editor_engine_from_servant (servant);
-+
-+      printf ("hasUndo\n");
-+      return CORBA_FALSE;
-+}
-+
-+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  Mon May 19 09:43:43 2003
-+++ vim/src/gui.c      Sat Jul 26 13:16:47 2003
-@@ -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. */
-@@ -4055,8 +4059,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
-     }
- }
-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      Sat Jul 26 13:16:47 2003
-@@ -35,6 +35,21 @@
- # 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
-+# 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 +407,11 @@
-     GtkWidget *toolbar;           /* toolbar */
- # endif
- # ifdef FEAT_GUI_GNOME
-+#  ifdef FEAT_GUI_COMPONENT
-+    GtkWidget     *vbox;
-+    BonoboPlug    *plug;
-+    BonoboControl *control;
-+#  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      Tue Jun  3 13:26:44 2003
-+++ vim/src/gui_gtk.c  Sat Jul 26 14:19:38 2003
-@@ -39,7 +39,7 @@
- #include "vim.h"
--#ifdef FEAT_GUI_GNOME
-+#if 0
- /* Gnome redefines _() and N_().  Grrr... */
- # ifdef _
- #  undef _
-@@ -545,9 +545,302 @@
- # 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();
-+}
-+
-+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);
-+    }
-+}
-+
-+static
-+char * menu_xml_path( vimmenu_T * menu, int only_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( only_parent ) {
-+        gchar * slash;
-+        slash = g_strrstr(retpath, "/");
-+        if( slash == retpath )
-+            slash[1] = '\0';
-+        else if( slash ) 
-+            *slash = '\0';
-+    }
-+    return( retpath );
-+}
-+
-+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 );
-+}
-+
-+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 = menu_xml_path(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 = menu_xml_path(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 );
-+}
-+
-+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 = menu_xml_path(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 = menu_xml_path(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 );
-+}
-+
-+static gboolean update_gui_idle_installed = FALSE;
-+
-+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 */
-+}
-+
-+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;
-+}
-+
-+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;
-@@ -593,6 +886,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*/
-@@ -609,8 +903,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)
-@@ -715,6 +1009,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;
-@@ -817,6 +1115,7 @@
-           gtk_signal_connect(GTK_OBJECT(menu->id), "activate",
-                              GTK_SIGNAL_FUNC(menu_item_activate), menu);
-     }
-+#endif
- }
- #endif /* FEAT_MENU */
-@@ -841,6 +1140,10 @@
-     guint     accel_key;
- # endif
-+#ifdef FEAT_GUI_COMPONENT
-+    return;
-+#endif
-+
-     for (menu = root_menu; menu != NULL; menu = menu->next)
-     {
-       if (menu->id == NULL)
-@@ -897,6 +1200,9 @@
-     void
- gui_mch_toggle_tearoffs(int enable)
- {
-+#ifdef FEAT_GUI_COMPONENT
-+    return;
-+#endif
-     recurse_tearoffs(root_menu, enable);
- }
- #endif /* FEAT_MENU */
-@@ -1001,6 +1307,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))
-     {
-@@ -1115,8 +1424,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 */
-@@ -1175,8 +1484,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*/
-@@ -1191,8 +1500,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*/
-@@ -1206,8 +1515,8 @@
-     }
-     gui.filedlg = NULL;
--    if (gtk_main_level() > 0)
--      gtk_main_quit();
-+    if (MAIN_LEVEL() > 0)
-+      MAIN_QUIT();
-     return FALSE;
- }
-@@ -1290,7 +1599,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;
-@@ -1510,8 +1819,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 */
-@@ -1811,7 +2120,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;
-@@ -2795,8 +3104,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  Tue Jun  3 13:19:03 2003
-+++ vim/src/gui_gtk_x11.c      Sat Jul 26 16:53:24 2003
-@@ -654,8 +654,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;
- }
-@@ -756,6 +756,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);
-@@ -767,6 +771,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();
-@@ -777,8 +786,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();
-@@ -793,6 +810,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)
-@@ -1134,8 +1154,8 @@
-     if (p_mh)
-       gui_mch_mousehide(TRUE);
--    if (gtk_main_level() > 0)
--      gtk_main_quit();
-+    if (MAIN_LEVEL() > 0)
-+        MAIN_QUIT();
-     return TRUE;
- }
-@@ -1170,8 +1190,8 @@
-     else
-       clip_lose_selection(&clip_star);
--    if (gtk_main_level() > 0)
--      gtk_main_quit();
-+    if (MAIN_LEVEL() > 0)
-+      MAIN_QUIT();
-     return TRUE;
- }
-@@ -1211,9 +1231,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;
-     }
-@@ -1294,8 +1313,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 */
- }
- /*
-@@ -1455,6 +1474,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))
-     {
-@@ -1462,10 +1490,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
-@@ -1526,8 +1573,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.
-@@ -1722,8 +1769,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;
- }
-@@ -1771,8 +1818,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;
- }
-@@ -1807,8 +1854,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;
- }
-@@ -2031,8 +2078,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 */
- }
- /*
-@@ -2498,6 +2545,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
-@@ -2581,6 +2629,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 */
-@@ -2599,7 +2648,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 */
-@@ -2647,7 +2696,7 @@
-     return cursor;
- }
--#ifdef HAVE_GTK_MULTIHEAD
-+#if defined(GTK2_MULTIHEAD) && !defined(FEAT_GUI_COMPONENT)
- /*ARGSUSED1*/
-     static void
- mainwin_screen_changed_cb(GtkWidget  *widget,
-@@ -2972,7 +3021,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();
-@@ -2983,14 +3036,27 @@
-           gui.mainwin = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-     }
-+#ifndef FEAT_GUI_COMPONENT
-     gtk_widget_set_name(gui.mainwin, "vim-main-window");
-+#endif
-+    vbox = gtk_vbox_new(FALSE, 0);
-+    gui.vbox = vbox;
- #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
-@@ -3013,8 +3079,6 @@
-     gui.accel_group = gtk_accel_group_get_default();
- #endif
--    vbox = gtk_vbox_new(FALSE, 0);
--
- #ifdef FEAT_GUI_GNOME
-     if (using_gnome)
-     {
-@@ -3030,6 +3094,9 @@
-       gtk_container_add(GTK_CONTAINER(gui.mainwin), vbox);
-       gtk_widget_show(vbox);
-     }
-+#endif
-+  
-+#ifndef FEAT_GUI_COMPONENT
- #ifdef FEAT_MENU
-     /*
-@@ -3135,6 +3202,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);
-@@ -3162,6 +3230,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)
-@@ -3176,6 +3249,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",
-@@ -3207,16 +3281,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);
-@@ -3224,10 +3309,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);
-@@ -3400,7 +3494,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
-@@ -3447,8 +3541,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;
-@@ -3580,8 +3684,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();
-@@ -3649,7 +3755,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)
-@@ -3679,8 +3787,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 */
- }
- /*
-@@ -3727,6 +3835,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))
-@@ -3775,7 +3884,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. */
-@@ -3866,6 +3975,7 @@
- {
-     GtkWidget *widget;
-+#ifndef FEAT_GUI_COMPONENT
- # ifdef FEAT_GUI_GNOME
-     if (using_gnome)
-       widget = gui.menubar_h;
-@@ -3882,6 +3992,7 @@
-       update_window_manager_hints();
-     }
-+#endif
- }
- #endif /* FEAT_MENU */
-@@ -3933,8 +4044,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*/
-@@ -3944,8 +4055,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*/
-@@ -3955,8 +4066,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 */
-@@ -4123,7 +4234,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)
-     {
-@@ -5637,7 +5748,7 @@
- gui_mch_update(void)
- {
-     while (gtk_events_pending() && !vim_is_input_buf_full())
--      gtk_main_iteration_do(FALSE);
-+      MAIN_ITERATION_DO(TRUE);
- }
-     static gint
-@@ -5648,8 +5759,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 */
- }
-@@ -5669,8 +5780,8 @@
-     add_to_input_buf(bytes, 3);
--    if (gtk_main_level() > 0)
--      gtk_main_quit();
-+    if (MAIN_LEVEL() > 0)
-+      MAIN_QUIT();
- }
- #endif
-@@ -5737,7 +5848,7 @@
-       /*
-        * Loop in GTK+ processing  until a timeout or input occurs.
-        */
--      gtk_main();
-+      MAIN();
-       /* Got char, return immediately */
-       if (input_available())
-@@ -5812,6 +5923,7 @@
-       gdk_window_clear(gui.drawarea->window);
- }
-+
- /*
-  * Redraw any text revealed by scrolling up/down.
-  */
-@@ -5926,7 +6038,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;
-@@ -5994,6 +6106,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;
-@@ -6129,6 +6248,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 Tue Jun  3 13:32:56 2003
-+++ vim/src/main.c     Sat Jul 26 13:16:48 2003
-@@ -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();
-@@ -1760,6 +1768,9 @@
- #ifdef FEAT_WINDOWS
-       curwin = firstwin;
-       curbuf = curwin->w_buffer;
-+#endif
-+#ifdef FEAT_GUI_COMPONENT
-+        set_curbuf_persistent();
- #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        Wed Jun  4 10:26:32 2003
-+++ vim/src/mbyte.c    Sat Jul 26 13:16:48 2003
-@@ -3120,8 +3120,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();
- }
- /*
-@@ -4125,7 +4125,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;
-@@ -4706,9 +4710,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;
-@@ -4720,8 +4730,8 @@
-           key_press_event_queue = NULL;
-       }
-     }
--    if (gtk_main_level() > 0)
--      gtk_main_quit();
-+    if (MAIN_LEVEL() > 0)
-+      MAIN_QUIT();
- }
- /*
-@@ -4856,7 +4866,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())
-@@ -4903,7 +4917,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;
-Binary files vimcopy/src/objects/buffer.o and vim/src/objects/buffer.o differ
-Binary files vimcopy/src/objects/charset.o and vim/src/objects/charset.o differ
-Binary files vimcopy/src/objects/diff.o and vim/src/objects/diff.o differ
-Binary files vimcopy/src/objects/digraph.o and vim/src/objects/digraph.o differ
-Binary files vimcopy/src/objects/edit.o and vim/src/objects/edit.o differ
-Binary files vimcopy/src/objects/eval.o and vim/src/objects/eval.o differ
-Binary files vimcopy/src/objects/ex_cmds.o and vim/src/objects/ex_cmds.o differ
-Binary files vimcopy/src/objects/ex_cmds2.o and vim/src/objects/ex_cmds2.o differ
-Binary files vimcopy/src/objects/ex_docmd.o and vim/src/objects/ex_docmd.o differ
-Binary files vimcopy/src/objects/ex_eval.o and vim/src/objects/ex_eval.o differ
-Binary files vimcopy/src/objects/ex_getln.o and vim/src/objects/ex_getln.o differ
-Binary files vimcopy/src/objects/fileio.o and vim/src/objects/fileio.o differ
-Binary files vimcopy/src/objects/fold.o and vim/src/objects/fold.o differ
-Binary files vimcopy/src/objects/getchar.o and vim/src/objects/getchar.o differ
-Binary files vimcopy/src/objects/gtkhtml_editor.o and vim/src/objects/gtkhtml_editor.o differ
-Binary files vimcopy/src/objects/gtkhtml_editor_common.o and vim/src/objects/gtkhtml_editor_common.o differ
-Binary files vimcopy/src/objects/gtkhtml_editor_skels.o and vim/src/objects/gtkhtml_editor_skels.o differ
-Binary files vimcopy/src/objects/gtkhtml_editor_stubs.o and vim/src/objects/gtkhtml_editor_stubs.o differ
-Binary files vimcopy/src/objects/gui.o and vim/src/objects/gui.o differ
-Binary files vimcopy/src/objects/gui_beval.o and vim/src/objects/gui_beval.o differ
-Binary files vimcopy/src/objects/gui_gtk.o and vim/src/objects/gui_gtk.o differ
-Binary files vimcopy/src/objects/gui_gtk_f.o and vim/src/objects/gui_gtk_f.o differ
-Binary files vimcopy/src/objects/gui_gtk_x11.o and vim/src/objects/gui_gtk_x11.o differ
-Binary files vimcopy/src/objects/if_cscope.o and vim/src/objects/if_cscope.o differ
-Binary files vimcopy/src/objects/if_xcmdsrv.o and vim/src/objects/if_xcmdsrv.o differ
-Binary files vimcopy/src/objects/main.o and vim/src/objects/main.o differ
-Binary files vimcopy/src/objects/mark.o and vim/src/objects/mark.o differ
-Binary files vimcopy/src/objects/mbyte.o and vim/src/objects/mbyte.o differ
-Binary files vimcopy/src/objects/memfile.o and vim/src/objects/memfile.o differ
-Binary files vimcopy/src/objects/memline.o and vim/src/objects/memline.o differ
-Binary files vimcopy/src/objects/menu.o and vim/src/objects/menu.o differ
-Binary files vimcopy/src/objects/message.o and vim/src/objects/message.o differ
-Binary files vimcopy/src/objects/misc1.o and vim/src/objects/misc1.o differ
-Binary files vimcopy/src/objects/misc2.o and vim/src/objects/misc2.o differ
-Binary files vimcopy/src/objects/move.o and vim/src/objects/move.o differ
-Binary files vimcopy/src/objects/netbeans.o and vim/src/objects/netbeans.o differ
-Binary files vimcopy/src/objects/normal.o and vim/src/objects/normal.o differ
-Binary files vimcopy/src/objects/ops.o and vim/src/objects/ops.o differ
-Binary files vimcopy/src/objects/option.o and vim/src/objects/option.o differ
-Binary files vimcopy/src/objects/os_unix.o and vim/src/objects/os_unix.o differ
-Binary files vimcopy/src/objects/pathdef.o and vim/src/objects/pathdef.o differ
-Binary files vimcopy/src/objects/pty.o and vim/src/objects/pty.o differ
-Binary files vimcopy/src/objects/quickfix.o and vim/src/objects/quickfix.o differ
-Binary files vimcopy/src/objects/regexp.o and vim/src/objects/regexp.o differ
-Binary files vimcopy/src/objects/screen.o and vim/src/objects/screen.o differ
-Binary files vimcopy/src/objects/search.o and vim/src/objects/search.o differ
-Binary files vimcopy/src/objects/syntax.o and vim/src/objects/syntax.o differ
-Binary files vimcopy/src/objects/tag.o and vim/src/objects/tag.o differ
-Binary files vimcopy/src/objects/term.o and vim/src/objects/term.o differ
-Binary files vimcopy/src/objects/ui.o and vim/src/objects/ui.o differ
-Binary files vimcopy/src/objects/undo.o and vim/src/objects/undo.o differ
-Binary files vimcopy/src/objects/version.o and vim/src/objects/version.o differ
-Binary files vimcopy/src/objects/vim_bonobo_control.o and vim/src/objects/vim_bonobo_control.o differ
-Binary files vimcopy/src/objects/vim_bonobo_factory.o and vim/src/objects/vim_bonobo_factory.o differ
-Binary files vimcopy/src/objects/vim_bonobo_main.o and vim/src/objects/vim_bonobo_main.o differ
-Binary files vimcopy/src/objects/window.o and vim/src/objects/window.o differ
-Binary files vimcopy/src/po/af.mo and vim/src/po/af.mo differ
-Binary files vimcopy/src/po/cs.cp1250.mo and vim/src/po/cs.cp1250.mo differ
-Binary files vimcopy/src/po/cs.mo and vim/src/po/cs.mo differ
-Binary files vimcopy/src/po/de.mo and vim/src/po/de.mo differ
-Binary files vimcopy/src/po/en_gb.mo and vim/src/po/en_gb.mo differ
-Binary files vimcopy/src/po/es.mo and vim/src/po/es.mo differ
-Binary files vimcopy/src/po/fr.mo and vim/src/po/fr.mo differ
-Binary files vimcopy/src/po/it.mo and vim/src/po/it.mo differ
-Binary files vimcopy/src/po/ja.mo and vim/src/po/ja.mo differ
-Binary files vimcopy/src/po/ja.sjis.mo and vim/src/po/ja.sjis.mo differ
-Binary files vimcopy/src/po/ko.mo and vim/src/po/ko.mo differ
-Binary files vimcopy/src/po/no.mo and vim/src/po/no.mo differ
-Binary files vimcopy/src/po/pl.cp1250.mo and vim/src/po/pl.cp1250.mo differ
-Binary files vimcopy/src/po/pl.mo and vim/src/po/pl.mo differ
-Binary files vimcopy/src/po/sk.cp1250.mo and vim/src/po/sk.cp1250.mo differ
-Binary files vimcopy/src/po/sk.mo and vim/src/po/sk.mo differ
-Binary files vimcopy/src/po/uk.mo and vim/src/po/uk.mo differ
-Binary files vimcopy/src/po/zh_CN.UTF-8.mo and vim/src/po/zh_CN.UTF-8.mo differ
-Binary files vimcopy/src/po/zh_CN.cp936.mo and vim/src/po/zh_CN.cp936.mo differ
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/po/zh_CN.cp936.po vim/src/po/zh_CN.cp936.po
---- vimcopy/src/po/zh_CN.cp936.po      Mon Jun  2 09:32:25 2003
-+++ vim/src/po/zh_CN.cp936.po  Sat Jul 26 15:06:40 2003
-@@ -3007,7 +3007,7 @@
- #: main.c:2315
- msgid "-foreground <color>\tUse <color> for normal text (also: -fg)"
--msgstr "-foreground <color>\tÉ趨 <color> ÎªÒ»°ãÎÄ×ÖÑÕÉ« (Ò²¿ÉÓà-fg)"
-+msgstr "-foreground <color>\tÉ趨 <color> ÎªÒ»°ãÎÄ×ÖÑÕÉ« (Ò²ÉÓà-fg)"
- #: main.c:2316 main.c:2336
- msgid "-font <font>\t\tUse <font> for normal text (also: -fn)"
-Binary files vimcopy/src/po/zh_CN.mo and vim/src/po/zh_CN.mo differ
-Binary files vimcopy/src/po/zh_TW.UTF-8.mo and vim/src/po/zh_TW.UTF-8.mo differ
-Binary files vimcopy/src/po/zh_TW.mo and vim/src/po/zh_TW.mo differ
-diff --new-file -u -r --exclude-from=excludelist vimcopy/src/structs.h vim/src/structs.h
---- vimcopy/src/structs.h      Tue May 27 11:22:01 2003
-+++ vim/src/structs.h  Sat Jul 26 13:16:48 2003
-@@ -1036,6 +1036,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' */
-@@ -1713,8 +1717,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 */
-Binary files vimcopy/src/vim and vim/src/vim differ
-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  Thu May 29 10:18:40 2003
-+++ vim/src/vim.h      Sat Jul 26 13:16:48 2003
-@@ -738,6 +738,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 */
-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 Jul 26 13:16:48 2003
-@@ -0,0 +1,411 @@
-+/**
-+ * 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>
-+
-+
-+struct _VimControlPrivate {
-+    BonoboUIComponent *component;
-+};
-+
-+static GObjectClass *vim_control_parent_class;
-+
-+static gboolean
-+quit_vim(gpointer data)
-+{
-+    MAIN_QUIT();
-+    exit(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. */ 
-+    /* BONOBO_FIXME: shut down vim cleanly! */
-+    g_timeout_add(100, &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);
-+
-+    /* update vim's UI now */
-+    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;
-+
-+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;
-+}
-+
-+
-+static void
-+set_frame_cb (BonoboControl *object, gpointer data)
-+{
-+    Bonobo_ControlFrame frame;
-+    BonoboPlug * plug;
-+      VimControl *control;
-+    GdkEventMask mask;
-+                                                                                
-+      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);
-+    }
-+
-+    /*plug = (BonoboPlug *)bonobo_control_get_plug(control);*/
-+    /*gdk_window_add_filter (NULL, filter_key_events, NULL);*/
-+}
-+
-+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 int persistent_buffer;
-+static char_u * stream_buffer = NULL;
-+static int stream_offset = 0;
-+static CORBA_long  stream_length = 0;
-+static Bonobo_Stream current_stream;
-+
-+void
-+set_curbuf_persistent(void)
-+{
-+      persistent_buffer = curbuf->b_fnum;
-+}
-+
-+/* It seems like it's 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 || stream_buffer == NULL) {
-+        g_warning("Error writing to stream");
-+              CORBA_exception_free (&ev);
-+        return 0;
-+      }
-+    CORBA_exception_free (&ev);
-+    return reqsize;
-+}
-+
-+static void load_buffer_from_stream(BonoboPersistStream         *ps,
-+                      const Bonobo_Stream         stream,
-+                      Bonobo_Persist_ContentType  type,
-+                      void                       *closure,
-+                      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 || stream_buffer == NULL) {
-+        g_warning("Error reading from stream");
-+        return;
-+      }
-+    stream_offset = 0;
-+
-+    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, 0);
-+    read_from_container = NORMAL_IO;
-+
-+    /* remember this buffer */
-+      persistent_buffer = curbuf->b_fnum;
-+    ga_clear(&error_ga);
-+    g_free(stream_buffer);
-+}
-+
-+
-+static void 
-+save_buffer_to_stream(BonoboPersistStream         *ps,
-+                      const Bonobo_Stream         stream,
-+                      Bonobo_Persist_ContentType  type,
-+                      void                       *closure,
-+                      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;
-+
-+    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 = buflist_findnr(persistent_buffer);
-+    if( buf ) {
-+        buf_write(buf, "dummy", "dummy", 1, buf->b_ml.ml_line_count, &ea, FALSE, FALSE,
-+                                      TRUE, TRUE);
-+    }
-+    write_to_container = NORMAL_IO;
-+    ga_clear(&error_ga);
-+}
-+
-+
-+Bonobo_Persist_ContentTypeList * 
-+persist_stream_types( BonoboPersistStream * ps, void * closure, CORBA_Environment *ev )
-+{
-+    g_warning ("persist_stream_types");
-+    return bonobo_persist_generate_content_types(1, "text/plain", "text/html");
-+}
-+
-+
-+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));
-+}
-+
-+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::PersistFile */
-+#if 0
-+      file = bonobo_persist_file_new (load_vim_from_file, 
-+                                          NULL, VIM_OAFIID, control);
-+      if (!file) {
-+              bonobo_object_unref (BONOBO_OBJECT (to_aggregate));
-+              return NULL;
-+      }
-+#endif
-+
-+    stream = bonobo_persist_stream_new (load_buffer_from_stream,
-+                                        save_buffer_to_stream, 
-+                                        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));
-+
-+    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;
-+      
-+      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);
-+
-+      /* 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;
-+      //}
-+    
-+      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       Sat Jul 26 13:42:10 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 (
-+        "OAFIID:Vim_Control_Factory", 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       Sat Jul 26 13:16:48 2003
-@@ -0,0 +1,15 @@
-+/*
-+ * vim_bonobo_factory.h
-+ *
-+ * Author:
-+ *   Jason Hildebrand (jason@peaceworks.ca)
-+ *
-+ */
-+
-+#if !defined( _VIM_BONOBO_FACTORY_H)
-+#define _VIM_BONOBO_FACTORY_H
-+
-+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  Sat Jul 26 13:16:48 2003
-@@ -0,0 +1,60 @@
-+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-+
-+#include <glib/gmain.h>
-+#include <glib-object.h>
-+
-+static guint              bonobo_main_loop_level = 0;
-+static GSList *           bonobo_main_loops = NULL;
-+
-+
-+/**
-+ * bonobo_main:
-+ * 
-+ * Activates the Bonobo POA Manager and enters the main event loop.
-+ */
-+void
-+vim_bonobo_main (void)
-+{
-+      GMainLoop *loop;
-+
-+      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;
-+}
-+
-+gboolean
-+vim_bonobo_main_iteration_do(may_block)
-+{
-+    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 Jul 26 13:16:48 2003
-@@ -0,0 +1,14 @@
-+/* -*- 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);
-+
-+#endif /* __VIM_BONOBO_MAIN_H__ */
-Binary files vimcopy/src/xxd/xxd and vim/src/xxd/xxd differ
-diff --new-file -u -r --exclude-from=excludelist vimcopy/vim/src/Make_container.mak vim/vim/src/Make_container.mak
---- vimcopy/vim/src/Make_container.mak Wed Dec 31 18:00:00 1969
-+++ vim/vim/src/Make_container.mak     Sat Jul 26 13:16:48 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 --git a/vim-docpath.patch b/vim-docpath.patch
deleted file mode 100644 (file)
index 9ecac89..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
---- vim-5.7/runtime/doc/vim.1.paths    Fri Aug  4 15:41:18 2000
-+++ vim-5.7/runtime/doc/vim.1  Fri Aug  4 15:49:02 2000
-@@ -350,42 +350,42 @@
- ":help syntax.txt".
- .SH FILES
- .TP 15
--/usr/local/lib/vim/doc/*.txt
-+/usr/share/vim/doc/*.txt
- The
- .B Vim
- documentation files.
- Use ":help doc-file-list" to get the complete list.
- .TP
--/usr/local/lib/vim/doc/tags
-+/usr/share/vim/doc/tags
- The tags file used for finding information in the documentation files.
- .TP
--/usr/local/lib/vim/syntax/syntax.vim
-+/usr/share/vim/syntax/syntax.vim
- System wide syntax initializations.
- .TP
--/usr/local/lib/vim/syntax/*.vim
-+/usr/share/vim/syntax/*.vim
- Syntax files for various languages.
- .TP
--/usr/local/lib/vim/vimrc
-+/etc/vim/vimrc
- System wide
- .B Vim
- initializations.
- .TP
--/usr/local/lib/vim/gvimrc
-+/etc/vim/gvimrc
- System wide gvim initializations.
- .TP
--/usr/local/lib/vim/optwin.vim
-+/usr/share/vim/optwin.vim
- Script used for the ":options" command, a nice way to view and set options.
- .TP
--/usr/local/lib/vim/menu.vim
-+/usr/share/vim/menu.vim
- System wide menu initializations for gvim.
- .TP
--/usr/local/lib/vim/bugreport.vim
-+/usr/share/vim/bugreport.vim
- Script to generate a bug report.  See ":help bugs".
- .TP
--/usr/local/lib/vim/filetype.vim
-+/usr/share/vim/filetype.vim
- Script to detect the type of a file by its name.  See ":help 'filetype'".
- .TP
--/usr/local/lib/vim/scripts.vim
-+/usr/share/vim/scripts.vim
- Script to detect the type of a file by its contents.  See ":help 'filetype'".
- .PP
- For recent info read the VIM home page:
diff --git a/vim-fhs.patch b/vim-fhs.patch
deleted file mode 100644 (file)
index d25b641..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-diff -Nur vim-5.4k/src/os_unix.h vim-5.4k.pld/src/os_unix.h
---- vim-5.4k/src/os_unix.h     Tue May 11 17:42:25 1999
-+++ vim-5.4k.pld/src/os_unix.h Sun Jun 13 17:55:19 1999
-@@ -243,7 +243,7 @@
- # ifdef OS2
- #  define DEF_BDIR    ".,c:/tmp,~/tmp,~/"
- # else
--#  define DEF_BDIR    ".,~/tmp,~/"    /* default for 'backupdir' */
-+#  define DEF_BDIR    ".,~/tmp,/var/lib/vim"  /* default for 'backupdir' */
- # endif
- #endif
-@@ -251,7 +251,7 @@
- # ifdef OS2
- #  define DEF_DIR     ".,~/tmp,c:/tmp,/tmp"
- # else
--#  define DEF_DIR     ".,~/tmp,/var/tmp,/tmp" /* default for 'directory' */
-+#  define DEF_DIR     ".,~/tmp,/var/lib/vim,/var/tmp,/tmp"    /* default for 'directory' */
- # endif
- #endif
-@@ -259,7 +259,7 @@
- #ifdef OS2
- # define MAKEEF               "vim##.err"
- #else
--# define MAKEEF               "/tmp/vim##.err"
-+# define MAKEEF               "~/tmp/vim##.err"
- #endif
- #ifdef OS2
diff --git a/vim-hold_gui_events.patch b/vim-hold_gui_events.patch
deleted file mode 100644 (file)
index 6d6f356..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
---- src/globals.h.old  Tue Jan  5 20:10:00 1999
-+++ src/globals.h      Wed Jan 13 13:54:46 1999
-@@ -215,7 +215,9 @@
- /* found "-rv" or "-reverse" in command line args */
- EXTERN int    found_reverse_arg INIT(= FALSE);
- EXTERN char * font_opt INIT(= NULL);
-+#endif
-+#if defined(USE_GUI) || defined(GPM_MOUSE)
- /*
-  * While executing external commands or in Ex mode, should not insert GUI
-  * events in the input buffer: Set hold_gui_events to non-zero.
diff --git a/vim-ispell-axp.patch b/vim-ispell-axp.patch
deleted file mode 100644 (file)
index 640c02b..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- vim60/src/spell/config.h.orig      Mon Feb 18 21:18:22 2002
-+++ vim60/src/spell/config.h   Mon Feb 18 21:19:42 2002
-@@ -496,7 +496,7 @@
- #define MASKTYPE      long
- #endif
- #ifndef MASKTYPE_WIDTH
--#define MASKTYPE_WIDTH        32
-+#define MASKTYPE_WIDTH        64
- #endif
- #if MASKBITS < MASKTYPE_WIDTH
- #undef MASKBITS
diff --git a/vim-ispell.patch b/vim-ispell.patch
deleted file mode 100644 (file)
index e534060..0000000
+++ /dev/null
@@ -1,7034 +0,0 @@
-diff -urBbN vim64.org/src/edit.c vim64/src/edit.c
---- vim64.org/src/edit.c       2005-04-08 11:16:31.000000000 +0200
-+++ vim64/src/edit.c   2005-10-17 12:49:17.442845032 +0200
-@@ -659,7 +659,11 @@
-       if ((c == Ctrl_V || c == Ctrl_Q) && ctrl_x_mode == CTRL_X_CMDLINE)
-           goto docomplete;
- #endif
--      if (c == Ctrl_V || c == Ctrl_Q)
-+      if (c == Ctrl_V
-+#ifndef FEAT_SPELL_HL    /* WM */
-+              || c == Ctrl_Q
-+#endif
-+                              )
-       {
-           ins_ctrl_v();
-           c = Ctrl_V; /* pretend CTRL-V is last typed character */
-@@ -1231,6 +1235,20 @@
-               continue_status = 0;
-           break;
- #endif /* FEAT_INS_EXPAND */
-+#ifdef FEAT_SPELL_HL      /* WM */
-+      case Ctrl_Q:
-+          if(set_to_private_dict(
-+              ml_get_buf(curbuf, curwin->w_cursor.lnum, FALSE),
-+                                      curwin->w_cursor.col, FALSE))
-+              vim_beep();
-+          break;
-+      case Ctrl_S:
-+          if(set_to_private_dict(
-+              ml_get_buf(curbuf, curwin->w_cursor.lnum, FALSE),
-+                                      curwin->w_cursor.col, TRUE))
-+              vim_beep();
-+          break;
-+#endif
-       case Ctrl_Y:            /* copy from previous line or scroll down */
-       case Ctrl_E:            /* copy from next line     or scroll up */
-diff -urBbN vim64.org/src/eval.c vim64/src/eval.c
---- vim64.org/src/eval.c       2004-07-28 11:53:18.000000000 +0200
-+++ vim64/src/eval.c   2005-10-17 12:49:17.448844120 +0200
-@@ -4995,6 +4995,9 @@
- #ifdef FEAT_SNIFF
-       "sniff",
- #endif
-+#ifdef FEAT_SPELL_HL
-+      "spell",
-+#endif
- #ifdef FEAT_STL_OPT
-       "statusline",
- #endif
-diff -urBbN vim64.org/src/ex_cmds.h vim64/src/ex_cmds.h
---- vim64.org/src/ex_cmds.h    2004-08-30 14:58:51.000000000 +0200
-+++ vim64/src/ex_cmds.h        2005-10-17 12:49:17.449843968 +0200
-@@ -726,6 +726,8 @@
-                       BANG|FILE1|TRLBAR|SBOXOK|CMDWIN),
- EX(CMD_split,         "split",        ex_splitview,
-                       BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR),
-+EX(CMD_spell,         "spell",        ex_spell,
-+                      EXTRA|NOTRLCOM|CMDWIN),
- EX(CMD_sprevious,     "sprevious",    ex_previous,
-                       EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR),
- EX(CMD_srewind,               "srewind",      ex_rewind,
-diff -urBbN vim64.org/src/ex_docmd.c vim64/src/ex_docmd.c
---- vim64.org/src/ex_docmd.c   2005-10-08 16:24:04.000000000 +0200
-+++ vim64/src/ex_docmd.c       2005-10-17 12:49:17.455843056 +0200
-@@ -220,6 +220,9 @@
- #ifndef FEAT_SYN_HL
- # define ex_syntax            ex_ni
- #endif
-+#ifndef FEAT_SPELL_HL
-+# define ex_spell             ex_ni
-+#endif
- #ifndef FEAT_PERL
- # define ex_perl              ex_script_ni
- # define ex_perldo            ex_ni
-@@ -3413,6 +3416,12 @@
-           set_context_in_syntax_cmd(xp, arg);
-           break;
- #endif
-+#ifdef FEAT_SPELL_HL
-+      case CMD_spell:
-+          return arg;
-+          break;
-+#endif
-+
- #ifdef FEAT_EVAL
-       case CMD_let:
-       case CMD_if:
-diff -urBbN vim64.org/src/feature.h vim64/src/feature.h
---- vim64.org/src/feature.h    2005-01-13 19:22:50.000000000 +0100
-+++ vim64/src/feature.h        2005-10-17 12:49:17.457842752 +0200
-@@ -314,6 +314,11 @@
- #   define FEAT_RIGHTLEFT
- # endif
- #endif
-+#ifdef FEAT_BIG
-+#undef FEAT_RIGHTLEFT
-+#undef FEAT_FKMAP
-+#endif
-+/* # define FEAT_PRINTER */
- /*
-  * +arabic            Arabic keymap and shaping support.
-diff -urBbN vim64.org/src/globals.h vim64/src/globals.h
---- vim64.org/src/globals.h    2004-06-27 15:44:13.000000000 +0200
-+++ vim64/src/globals.h        2005-10-17 12:49:17.458842600 +0200
-@@ -877,6 +877,9 @@
- #ifdef USE_TERM_CONSOLE
- EXTERN int    term_console INIT(= FALSE); /* set to TRUE when console used */
- #endif
-+#ifdef FEAT_SPELL_HL
-+EXTERN char_u hashname[MAXPATHL];         /* name of the dictionary */
-+#endif
- EXTERN int    termcap_active INIT(= FALSE);   /* set by starttermcap() */
- EXTERN int    cur_tmode INIT(= TMODE_COOK);   /* input terminal mode */
- EXTERN int    bangredo INIT(= FALSE);     /* set to TRUE whith ! command */
-diff -urBbN vim64.org/src/main.c vim64/src/main.c
---- vim64.org/src/main.c       2005-02-15 14:09:15.000000000 +0100
-+++ vim64/src/main.c   2005-10-17 12:49:17.461842144 +0200
-@@ -2263,6 +2263,10 @@
-       write_viminfo(NULL, FALSE);
- #endif
-+#ifdef FEAT_SPELL_HL
-+    spell_save_private_dict();
-+#endif
-+
- #ifdef FEAT_AUTOCMD
-     apply_autocmds(EVENT_VIMLEAVE, NULL, NULL, FALSE, curbuf);
- #endif
-diff -urBbN vim64.org/src/Makefile vim64/src/Makefile
---- vim64.org/src/Makefile     2005-10-15 13:52:15.000000000 +0200
-+++ vim64/src/Makefile 2005-10-17 12:51:51.656401008 +0200
-@@ -1211,6 +1211,22 @@
- # Use this for cproto 3 patchlevel 7 or above (use "cproto -V" to check):
- PROTO_FLAGS = -m -M__ARGS -d -E"$(CPP)" $(NO_ATTR)
-+SPELL_SRC = spell.c \
-+      spell/good.c \
-+      spell/lookup.c \
-+      spell/hash.c \
-+      spell/makedent.c \
-+      spell/tree.c \
-+      spell/tgood.c \
-+      spell/util.c 
-+SPELL_OBJ = objects/spell.o \
-+      objects/good.o \
-+      objects/lookup.o \
-+      objects/hash.o \
-+      objects/makedent.o \
-+      objects/tree.o \
-+      objects/tgood.o \
-+      objects/util.o 
- ################################################
- ##   no changes required below this line      ##
-@@ -1221,7 +1237,7 @@
- .SUFFIXES:
- .SUFFIXES: .cc .c .o .pro
--PRE_DEFS = -Iproto $(DEFS) $(GUI_DEFS) $(GUI_IPATH) $(CPPFLAGS) $(EXTRA_IPATHS)
-+PRE_DEFS = -Iproto -Ispell $(DEFS) $(GUI_DEFS) $(GUI_IPATH) $(CPPFLAGS) $(EXTRA_IPATHS)
- POST_DEFS = $(X_CFLAGS) $(PERL_CFLAGS) $(PYTHON_CFLAGS) $(TCL_CFLAGS) $(RUBY_CFLAGS) $(EXTRA_DEFS)
- ALL_CFLAGS = $(PRE_DEFS) $(CFLAGS) $(PROFILE_CFLAGS) $(POST_DEFS)
-@@ -1305,6 +1321,7 @@
-       screen.c \
-       search.c \
-       syntax.c \
-+      $(SPELL_SRC) \
-       tag.c \
-       term.c \
-       ui.c \
-@@ -1371,6 +1388,7 @@
-       objects/screen.o \
-       objects/search.o \
-       objects/syntax.o \
-+      $(SPELL_OBJ) \
-       $(SNIFF_OBJ) \
-       objects/tag.o \
-       objects/term.o \
-@@ -2327,6 +2345,9 @@
- objects/undo.o: undo.c
-       $(CCC) -o $@ undo.c
-+objects/spell.o: spell.c spell/local.h
-+      $(CCC) -o $@ spell.c
-+
- objects/window.o: window.c
-       $(CCC) -o $@ window.c
-@@ -2561,6 +2582,9 @@
-   ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-   proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-   arabic.h
-+objects/spell.o: spell.c vim.h spell/config.h feature.h os_unix.h auto/osdef.h \
-+  ascii.h keymap.h term.h macros.h regexp.h structs.h gui.h globals.h farsi.h \
-+  option.h ex_cmds.h proto.h spell/local.h spell/wm.h spell/ispell.h
- objects/syntax.o: syntax.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
-   ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h gui_beval.h \
-   proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
-@@ -2691,3 +2715,27 @@
-   auto/osdef.h ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h \
-   gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h globals.h \
-   farsi.h arabic.h version.h
-+
-+SPELL_CFLAGS=$(CFLAGS) -pedantic -DUSG=1
-+
-+objects/good.o: spell/good.c spell/config.h spell/ispell.h spell/i_proto.h spell/msgs.h spell/local.h
-+      $(CC) -c $(SPELL_CFLAGS) spell/good.c -o objects/good.o
-+
-+objects/lookup.o: spell/lookup.c spell/config.h spell/ispell.h spell/i_proto.h spell/msgs.h spell/local.h
-+      $(CC) -c $(SPELL_CFLAGS) spell/lookup.c -o objects/lookup.o
-+
-+objects/hash.o: spell/hash.c spell/config.h spell/ispell.h spell/i_proto.h spell/local.h
-+      $(CC) -c $(SPELL_CFLAGS) spell/hash.c -o objects/hash.o
-+
-+objects/makedent.o: spell/makedent.c spell/config.h spell/ispell.h spell/i_proto.h spell/msgs.h spell/local.h
-+      $(CC) -c $(SPELL_CFLAGS) spell/makedent.c -o objects/makedent.o
-+
-+objects/tree.o: spell/tree.c spell/config.h spell/ispell.h spell/i_proto.h spell/msgs.h spell/local.h
-+      $(CC) -c $(SPELL_CFLAGS) spell/tree.c -o objects/tree.o
-+
-+objects/tgood.o: spell/tgood.c spell/config.h spell/ispell.h spell/i_proto.h spell/local.h
-+      $(CC) -c $(SPELL_CFLAGS) spell/tgood.c -o objects/tgood.o
-+
-+objects/util.o: spell/util.c spell/config.h spell/ispell.h spell/i_proto.h spell/local.h
-+      $(CC) -c $(SPELL_CFLAGS) spell/util.c -o objects/util.o
-+
-diff -urBbN vim64.org/src/normal.c vim64/src/normal.c
---- vim64.org/src/normal.c     2005-10-06 20:42:06.000000000 +0200
-+++ vim64/src/normal.c 2005-10-17 12:49:17.471840624 +0200
-@@ -84,6 +84,10 @@
- #ifdef FEAT_VISUAL
- static int    get_visual_text __ARGS((cmdarg_T *cap, char_u **pp, int *lenp));
- #endif
-+#ifdef FEAT_SPELL_HL
-+static void   nv_settodict_q __ARGS((cmdarg_T *cap));
-+static void   nv_settodict_s __ARGS((cmdarg_T *cap));
-+#endif
- static void   nv_tagpop __ARGS((cmdarg_T *cap));
- static void   nv_scroll __ARGS((cmdarg_T *cap));
- static void   nv_right __ARGS((cmdarg_T *cap));
-@@ -232,9 +236,17 @@
-     {Ctrl_N,  nv_down,        NV_STS,                 FALSE},
-     {Ctrl_O,  nv_ctrlo,       0,                      0},
-     {Ctrl_P,  nv_up,          NV_STS,                 FALSE},
-+#ifdef FEAT_SPELL_HL
-+    {Ctrl_Q,  nv_settodict_q, 0,                      0},
-+#else
-     {Ctrl_Q,  nv_ignore,      0,                      0},
-+#endif
-     {Ctrl_R,  nv_redo,        0,                      0},
-+#ifdef FEAT_SPELL_HL
-+    {Ctrl_S,  nv_settodict_s, 0,                      0},
-+#else
-     {Ctrl_S,  nv_ignore,      0,                      0},
-+#endif
-     {Ctrl_T,  nv_tagpop,      NV_NCW,                 0},
-     {Ctrl_U,  nv_halfpage,    0,                      0},
- #ifdef FEAT_VISUAL
-@@ -7845,6 +7857,28 @@
- #endif
- }
-+#ifdef FEAT_SPELL_HL
-+static void
-+nv_settodict_q(cap)
-+    cmdarg_T  *cap;
-+{    
-+    if(set_to_private_dict(
-+              ml_get_buf(curbuf, curwin->w_cursor.lnum, FALSE),
-+                                      curwin->w_cursor.col, FALSE))
-+      clearopbeep(cap->oap);
-+}
-+
-+static void
-+nv_settodict_s(cap)
-+    cmdarg_T  *cap;
-+{    
-+    if(set_to_private_dict(
-+              ml_get_buf(curbuf, curwin->w_cursor.lnum, FALSE),
-+                                      curwin->w_cursor.col, TRUE))
-+      clearopbeep(cap->oap);
-+}         
-+#endif
-+ 
- #ifdef FEAT_VISUAL
- /*
-  * In exclusive Visual mode, may include the last character.
-diff -urBbN vim64.org/src/option.c vim64/src/option.c
---- vim64.org/src/option.c     2005-10-08 16:27:46.000000000 +0200
-+++ vim64/src/option.c 2005-10-17 12:49:17.478839560 +0200
-@@ -121,6 +121,8 @@
-     , PV_SW
-     , PV_SWF
-     , PV_SYN
-+    , PV_SPELL_DIR
-+    , PV_SPELL_LANG
-     , PV_TAGS
-     , PV_TS
-     , PV_TSR
-@@ -221,6 +223,10 @@
- #ifdef FEAT_SYN_HL
- static char_u *p_syn;
- #endif
-+#ifdef FEAT_SPELL_HL
-+static char_u *p_spelldirectory;
-+static char_u *p_language;
-+#endif
- static long   p_ts;
- static long   p_tw;
- static int    p_tx;
-@@ -1073,7 +1079,7 @@
-                           {(char_u *)FALSE, (char_u *)0L}},
-     {"highlight",   "hl",   P_STRING|P_VI_DEF|P_RCLR|P_COMMA|P_NODUP,
-                           (char_u *)&p_hl, PV_NONE,
--                          {(char_u *)"8:SpecialKey,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,r:Question,s:StatusLine,S:StatusLineNC,c:VertSplit,t:Title,v:Visual,V:VisualNOS,w:WarningMsg,W:WildMenu,f:Folded,F:FoldColumn,A:DiffAdd,C:DiffChange,D:DiffDelete,T:DiffText,>:SignColumn",
-+                          {(char_u *)"8:SpecialKey,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,r:Question,s:StatusLine,S:StatusLineNC,c:VertSplit,t:Title,v:Visual,V:VisualNOS,w:WarningMsg,W:WildMenu,f:Folded,F:FoldColumn,A:DiffAdd,C:DiffChange,D:DiffDelete,T:DiffText,>:SignColumn,Z:Spell",
-                               (char_u *)0L}},
-     {"history",           "hi",   P_NUM|P_VIM,
-                           (char_u *)&p_hi, PV_NONE,
-@@ -1338,6 +1344,13 @@
-                           (char_u *)NULL, PV_NONE,
- #endif
-                           {(char_u *)"", (char_u *)0L}},
-+    {"language",  "lang", P_STRING|P_ALLOCED|P_VI_DEF,
-+#ifdef FEAT_SPELL_HL
-+                          (char_u *)&p_language, PV_SPELL_LANG,
-+#else
-+                          (char_u *)NULL, PV_NONE,
-+#endif
-+                          {(char_u *)"", (char_u *)0L}},
-     {"laststatus",  "ls",   P_NUM|P_VI_DEF|P_RALL,
- #ifdef FEAT_WINDOWS
-                           (char_u *)&p_ls, PV_NONE,
-@@ -1936,6 +1949,14 @@
-     {"sourceany",   NULL,   P_BOOL|P_VI_DEF,
-                           (char_u *)NULL, PV_NONE,
-                           {(char_u *)FALSE, (char_u *)0L}},
-+    {"spelldirectory",  "spelldir", P_STRING|P_ALLOCED|P_VI_DEF|P_EXPAND,
-+#ifdef FEAT_SPELL_HL
-+                          (char_u *)&p_spelldirectory, PV_SPELL_DIR,
-+                          {(char_u *)"/usr/lib/ispell", (char_u *)0L}},
-+#else
-+                          (char_u *)NULL, PV_NONE,
-+                          {(char_u *)"", (char_u *)0L}},
-+#endif
-     {"splitbelow",  "sb",   P_BOOL|P_VI_DEF,
- #ifdef FEAT_WINDOWS
-                           (char_u *)&p_sb, PV_NONE,
-@@ -4835,6 +4856,26 @@
-           errmsg = e_invarg;
-     }
- #endif
-+#ifdef FEAT_SPELL_HL
-+    else if (varp == &p_spell_dir)
-+    {
-+      STRCPY(hashname, p_spell_dir);
-+      STRCAT(hashname, "/");
-+      STRCAT(hashname, p_spell_lang);
-+      STRCAT(hashname, ".hash");
-+      reload_dict();
-+      redraw_all_later(NOT_VALID);
-+    }
-+    else if (varp == &p_spell_lang)
-+    {
-+      STRCPY(hashname, p_spell_dir);
-+      STRCAT(hashname, "/");
-+      STRCAT(hashname, p_spell_lang);
-+      STRCAT(hashname, ".hash");
-+      reload_dict();
-+      redraw_all_later(NOT_VALID);
-+    }
-+#endif
- #ifdef FEAT_MBYTE
-     /* 'encoding' and 'fileencoding' */
-@@ -7951,6 +7992,10 @@
- #ifdef FEAT_SYN_HL
-       case PV_SYN:    return (char_u *)&(curbuf->b_p_syn);
- #endif
-+#ifdef FEAT_SPELL_HL
-+      case PV_SPELL_DIR:      return (char_u *)&(p_spell_dir);
-+      case PV_SPELL_LANG:     return (char_u *)&(p_spell_lang);
-+#endif
-       case PV_SW:     return (char_u *)&(curbuf->b_p_sw);
-       case PV_TS:     return (char_u *)&(curbuf->b_p_ts);
-       case PV_TW:     return (char_u *)&(curbuf->b_p_tw);
-diff -urBbN vim64.org/src/option.h vim64/src/option.h
---- vim64.org/src/option.h     2004-05-05 11:43:49.000000000 +0200
-+++ vim64/src/option.h 2005-10-17 12:49:17.494837128 +0200
-@@ -385,6 +385,8 @@
- EXTERN char_u *p_dex;         /* 'diffexpr' */
- # endif
- #endif
-+EXTERN char_u  *p_spell_dir;  /* directory with spell hash*/
-+EXTERN char_u  *p_spell_lang; /* name of language (spell hash file)*/
- #ifdef FEAT_INS_EXPAND
- EXTERN char_u *p_dict;        /* 'dictionary' */
- #endif
-diff -urBbN vim64.org/src/proto/spell.pro vim64/src/proto/spell.pro
---- vim64.org/src/proto/spell.pro      1970-01-01 01:00:00.000000000 +0100
-+++ vim64/src/proto/spell.pro  2005-10-17 12:49:17.495836976 +0200
-@@ -0,0 +1,5 @@
-+int  reload_dict(void);\r
-+void ex_spell(exarg_T *eap);\r
-+int  get_spell_attr(colnr_T spell_col, colnr_T col, char_u    *line);\r
-+int  set_to_private_dict(char *line, int cursor_col, int convert_to_lower);\r
-+void spell_save_private_dict(void);\r
-diff -urBbN vim64.org/src/proto.h vim64/src/proto.h
---- vim64.org/src/proto.h      2005-10-08 16:22:32.000000000 +0200
-+++ vim64/src/proto.h  2005-10-17 12:49:17.496836824 +0200
-@@ -72,6 +72,9 @@
- #  include "os_qnx.pro"
- # endif
-+#ifdef FEAT_SPELL_HL
-+# include "spell.pro"
-+#endif
- # include "buffer.pro"
- # include "charset.pro"
- # ifdef FEAT_CSCOPE
-diff -urBbN vim64.org/src/screen.c vim64/src/screen.c
---- vim64.org/src/screen.c     2005-01-19 11:03:00.000000000 +0100
-+++ vim64/src/screen.c 2005-10-17 12:49:17.501836064 +0200
-@@ -118,6 +118,9 @@
- static match_T match_hl;      /* used for ":match" highlight matching */
- #endif
-+#ifdef FEAT_SPELL_HL
-+extern     int                    spell_flag;
-+#endif
- #ifdef FEAT_FOLDING
- static foldinfo_T win_foldinfo;       /* info for 'foldcolumn' */
- #endif
-@@ -2536,6 +2539,9 @@
-     int               has_syntax = FALSE;     /* this buffer has syntax highl. */
-     int               save_did_emsg;
- #endif
-+#ifdef FEAT_SPELL_HL
-+     int        spell_attr = 0;
-+#endif
-     int               extra_check;            /* has syntax or linebreak */
- #ifdef FEAT_MBYTE
-     int               multi_attr = 0;         /* attributes desired by multibyte */
-@@ -2614,8 +2620,18 @@
- #else
-     extra_check = 0;
- #endif
-+#if defined(FEAT_SYN_HL) || defined(FEAT_SPELL_HL)
-+    if (
- #ifdef FEAT_SYN_HL
--    if (syntax_present(wp->w_buffer))
-+       syntax_present(wp->w_buffer)
-+#else
-+      0
-+#endif
-+#ifdef FEAT_SPELL_HL
-+          ||
-+          spell_flag
-+#endif
-+                     )
-     {
-       /* Prepare for syntax highlighting in this line.  When there is an
-        * error, stop syntax highlighting. */
-@@ -3262,6 +3278,10 @@
-           else if (search_attr == 0 && has_syntax)
-               char_attr = syntax_attr;
- #endif
-+#ifdef FEAT_SPELL_HL
-+          else if (spell_flag)
-+              char_attr = spell_attr;
-+#endif
-           else
-               char_attr = search_attr;
-@@ -3576,6 +3596,17 @@
-                       char_attr = syntax_attr;
-               }
- #endif
-+#ifdef FEAT_SPELL_HL
-+              if (spell_flag)
-+              {
-+                  v = ptr - line;
-+                  spell_attr = get_spell_attr((colnr_T)v - 1, col, 
-+                                              ml_get_buf(wp->w_buffer, 
-+                                                         lnum, FALSE));
-+                  if (area_attr == 0 && search_attr == 0 && spell_attr)
-+                      char_attr = spell_attr;
-+              }
-+#endif
- #ifdef FEAT_LINEBREAK
-               /*
-                * Found last space before word: check for line break
-diff -urBbN vim64.org/src/spell/config.h vim64/src/spell/config.h
---- vim64.org/src/spell/config.h       1970-01-01 01:00:00.000000000 +0100
-+++ vim64/src/spell/config.h   2005-10-17 12:49:17.504835608 +0200
-@@ -0,0 +1,846 @@
-+#include "local.h"    /* local definitions for options */
-+
-+/*
-+** Major-differences selection.  The default system is BSD;  for USG
-+** or non-UNIX systems you should add the appropriate #define to local.h.
-+*/
-+#ifndef USG
-+#undef USG            /* Define this in local.h for System V machines */
-+#endif /* USG */
-+
-+#ifndef WIN32
-+#include <sys/param.h>
-+#include <sys/types.h>
-+#endif
-+#ifndef USG
-+# ifndef FEAT_SPELL_HL
-+#  if HAVE_DIRENT_H
-+#   include <dirent.h>
-+#   ifndef NAMLEN
-+#    define NAMLEN(dirent) strlen((dirent)->d_name)
-+#   endif
-+#  else
-+#   define dirent direct
-+#   define NAMLEN(dirent) (dirent)->d_namlen
-+#   if HAVE_SYS_NDIR_H
-+#    include <sys/ndir.h>
-+#   endif
-+#   if HAVE_SYS_DIR_H
-+#    include <sys/dir.h>
-+#   endif
-+#   if HAVE_NDIR_H
-+#    include <ndir.h>
-+#   endif
-+#  endif
-+# endif
-+#endif /* USG */
-+
-+/*
-+** Things that normally go in a Makefile.  Define these just like you
-+** might in the Makefile, except you should use #define instead of
-+** make's assignment syntax.  Everything must be double-quoted, and
-+** (unlike make) you can't use any sort of $-syntax to pick up the
-+** values of other definitions.
-+*/
-+#ifndef CC
-+#define CC    "cc"
-+#endif /* CC */
-+#ifndef EMACS
-+#define EMACS "emacs"
-+#endif /* EMACS */
-+#ifndef LINT
-+#define LINT  "lint"
-+#endif /* LINT */
-+#ifndef CFLAGS
-+#define CFLAGS        "-O"
-+#endif /* CFLAGS */
-+#ifndef LINTFLAGS
-+#define LINTFLAGS ""
-+#endif /* LINTFLAGS */
-+#ifndef YACC
-+#define YACC  "yacc"
-+#endif /* YACC */
-+
-+/*
-+** Libraries that may need to be added to the cc line to get ispell to
-+** link.  Normally, this should be null.
-+*/
-+#ifndef LIBES
-+#define LIBES ""
-+#endif
-+
-+/*
-+** TERMLIB - where to get the termcap library.  Should be -ltermcap or
-+** -lcurses on most systems.
-+*/
-+#ifndef TERMLIB
-+#define TERMLIB       "-lncurses"
-+#endif
-+
-+/*
-+** REGLIB - where to get the regular-expression routines, if
-+** REGEX_LOOKUP is defined.  Should be -lPW on USG systems, null on
-+** BSD systems.
-+*/
-+#ifndef REGLIB
-+#define REGLIB        ""
-+#endif
-+
-+/*
-+** Where to install various components of ispell.  BINDIR contains
-+** binaries.  LIBDIR contains hash tables and affix files.  ELISPDIR
-+** contains emacs lisp files (if any) and TEXINFODIR contains emacs
-+** TeXinfo files.  MAN1DIR and MAN4DIR will hold the chapter-1 and
-+** chapter-4 manual pages, respectively.
-+**
-+** If you intend to use multiple dictionary files, I would suggest
-+** LIBDIR be a directory which will contain nothing else, so sensible
-+** names can be constructed for the -d option without conflict.
-+*/
-+#ifndef BINDIR
-+#define BINDIR        "/usr/bin"
-+#endif
-+#ifndef LIBDIR
-+#define LIBDIR        "/usr/lib/ispell"
-+#endif
-+#ifndef ELISPDIR
-+#define ELISPDIR "/usr/lib/emacs/site-lisp"
-+#endif
-+#ifndef TEXINFODIR
-+#define TEXINFODIR "/usr/share/info"
-+#endif
-+#ifndef MAN1DIR
-+#define MAN1DIR       "/usr/share/man/man1"
-+#endif
-+#ifndef MAN4DIR
-+#define MAN4DIR       "/usr/share/man/man4"
-+#endif
-+
-+/*
-+** Extensions to put on manual pages.  Usually these are ".1" or ".1l".
-+*/
-+#ifndef MAN1EXT
-+#define MAN1EXT       ".1"
-+#endif
-+#ifndef MAN4EXT
-+#define MAN4EXT       ".4"
-+#endif
-+
-+/*
-+** List of all hash files (languages) which will be supported by ispell.
-+**
-+** This variable has a complex format so that many options can be
-+** specified.  The format is as follows:
-+**
-+**    <language>[,<make-options>...] [<language> [,<make-options> ...] ...]
-+**
-+** where
-+**
-+**    language        is the name of a subdirectory of the
-+**                    "languages" directory
-+**    make-options    are options that are to be passed to "make" in
-+**                    the specified directory.  The make-options
-+**                    should not, in general, specify a target, as
-+**                    this will be provided by the make process.
-+**
-+** For example, if LANGUAGES is:
-+**
-+**    "{american,MASTERDICTS=american.med+,HASHFILES=americanmed+.hash,EXTRADICT=/usr/dict/words /usr/dict/web2} {deutsch,DICTALWAYS=deutsch.sml,DICTOPTIONS=}"
-+**
-+** then the American-English and Deutsch (German) languages will be supported,
-+** and the following variable settings will be passed to the two Makefiles:
-+**
-+**    American:
-+**
-+**        MASTERDICTS='american.med+'
-+**        HASHFILES='americanmed+.hash'
-+**        EXTRADICT='/usr/dict/words /usr/dict/web2'
-+**
-+**    Deutsch:
-+**
-+**        DICTALWAYS='deutsch.sml'
-+**        DICTOPTIONS=''
-+**
-+** Notes on the syntax: The makefile is not very robust.  If you have
-+** make problems, or if make seems to fail in the language-subdirs
-+** dependency, check your syntax.  The makefile adds single quotes to
-+** the individual variables in the LANGUAGES specification, so don't
-+** use quotes of any kind.
-+**
-+** In the future, the first language listed in this variable will
-+** become the default, and the DEFHASH, DEFLANG, and DEFPAFF,
-+** variables will all become obsolete.  So be sure to put your default
-+** language first, to make later conversion easier!
-+**
-+** Notes on options for the various languages will be found in the
-+** Makefiles for those languages.  Some of those languages may require
-+** you to also change various limits limits like MASKBITS or the
-+** length parameters.
-+**
-+** A special note on the English language: because the British and
-+** American dialects use different spelling, you should usually select
-+** one or the other of these.  If you select both, the setting of
-+** MASTERHASH will determine which becomes the language linked to
-+** DEFHASH (which will usually be named english.hash).
-+**
-+** On MSDOS systems you must use names which are consistent with the
-+** 8+3 filename restrictions, or you will risk filename collision.  See
-+** the file pc/local.djgpp for details.
-+*/
-+#ifndef LANGUAGES
-+#define LANGUAGES "{american,MASTERDICTS=american.med+,HASHFILES=americanmed+.hash,EXTRADICT=/usr/dict/words}"
-+#endif /* LANGUAGES */
-+
-+/*
-+** Master hash file for DEFHASH.  This is the name of a hash file
-+** built by a language Makefile.  It should be the most-popular hash
-+** file on your system, because it is the one that will be used by
-+** default.  It must be listed in LANGUAGES, above.
-+*/
-+#ifndef MASTERHASH
-+#define MASTERHASH    "polish+.hash"
-+#endif
-+
-+/*
-+** Default native-language hash file.  This is the name given to the
-+** hash table that will be used if no language is specified to
-+** ispell.  It is a link to MASTERHASH, above.
-+*/
-+#ifndef DEFHASH
-+#define DEFHASH "polish.hash"
-+#endif
-+
-+/*
-+** Language tables for the default language.  This must be the name of
-+** the affix file that was used to generate the MASTERHASH/DEFHASH,
-+** above.
-+*/
-+#ifndef DEFLANG
-+#define DEFLANG       "polish.aff"
-+#endif
-+
-+/*
-+** Language to use for error messages.  If there are no messages in this
-+** language, English will be used instead.
-+*/
-+#ifndef MSGLANG
-+#define MSGLANG       "polish"
-+#endif /* MSGLANG */
-+
-+/*
-+** If your sort command accepts the -T switch to set temp file
-+** locations (try it out; it exists but is undocumented on some
-+** systems), make the following variable the null string.  Otherwise
-+** leave it as the sed script.
-+*/
-+#ifndef SORTTMP
-+#define SORTTMP       "-e '/!!SORTTMP!!/s/=.*$/=/'"
-+#endif
-+
-+/*
-+** If your sort command accepts the -T switch (see above), make the
-+** following variable refer to a temporary directory with lots of
-+** space.  Otherwise make it the null string.
-+*/
-+#ifndef MAKE_SORTTMP
-+#define MAKE_SORTTMP "-T ${TMPDIR-/usr/tmp}"
-+#endif
-+
-+/*
-+** If your shell needs ": Use /bin/sh" at the first line of a shell
-+** script, make the following variable the null string.  Otherwise
-+** leave it as this sed script which will put a "#!/bin/sh" there.
-+*/
-+#ifndef MAKE_POUND_BANG
-+#define MAKE_POUND_BANG "-e 1s,^:.*Use.*/bin/sh,#!/bin/sh,"
-+#endif
-+
-+
-+/*
-+** INSTALL program. Could be a copy program like cp or something fancier
-+** like /usr/ucb/install -c
-+*/
-+#ifndef INSTALL
-+#define INSTALL               "cp"
-+#endif
-+
-+/*
-+** If your system has the rename(2) system call, define HAS_RENAME and
-+** ispell will use that call to rename backup files.  Otherwise, it
-+** will use link/unlink.  There is no harm in this except on MS-DOS,
-+** which doesn't support link/unlink.
-+*/
-+#ifndef HAS_RENAME
-+#undef HAS_RENAME
-+#endif /* HAS_RENAME */
-+
-+/* type given to signal() by signal.h */
-+#ifndef SIGNAL_TYPE
-+#define SIGNAL_TYPE void
-+#endif
-+
-+/* environment variable for user's word list */
-+#ifndef PDICTVAR
-+#define PDICTVAR "WORDLIST"
-+#endif
-+
-+/* prefix part of default word list */
-+#ifndef DEFPDICT
-+#define DEFPDICT ".ispell_"
-+#endif
-+
-+/*
-+** suffix part of default word list
-+*/
-+#ifndef DEFPAFF
-+#define DEFPAFF "words"
-+#endif
-+
-+/* old place to look for default word list */
-+#ifndef OLDPDICT
-+#define OLDPDICT ".ispell_"
-+#endif /* OLDPDICT */
-+#ifndef OLDPAFF
-+#define OLDPAFF "words"
-+#endif /* OLDPAFF */
-+
-+/* environment variable for include file string */
-+#ifndef INCSTRVAR
-+#define INCSTRVAR "INCLUDE_STRING"
-+#endif
-+
-+/* default include string */
-+#ifndef DEFINCSTR
-+#define DEFINCSTR "&Include_File&"
-+#endif
-+
-+/* mktemp template for temporary file - MUST contain 6 consecutive X's */
-+#ifndef TEMPNAME
-+#define TEMPNAME "/tmp/ispellXXXXXX"
-+#endif
-+
-+/*
-+** If REGEX_LOOKUP is undefined, the lookup command (L) will use the look(1)
-+** command (if available) or the egrep command.  If REGEX_LOOKUP is defined,
-+** the lookup command will use the internal dictionary and the
-+** regular-expression library (which you must supply separately.  There is
-+** a public-domain library available;  libraries are also distributed with
-+** both BSD and System V.
-+**
-+** The advantage of no REGEX_LOOKUP is that it is often much faster, especially
-+** if the look(1) command is available, that the words found are presented
-+** in alphabetical order, and that the list of words searched is larger.
-+** The advantage of REGEX_LOOKUP is that ispell doesn't need to spawn another
-+** program, and the list of words searched is exactly the list of (root) words
-+** that ispell will accept.  (However, note that words formed with affixes will
-+** not be found;  this can produce some artifacts.  For example, since
-+** "brother" can be formed as "broth+er", a lookup command might fail to
-+** find "brother.")
-+*/
-+#ifndef REGEX_LOOKUP
-+#undef REGEX_LOOKUP
-+#endif /* REGEX_LOOKUP */
-+
-+/*
-+** Choose the proper type of regular-expression routines here.  BSD
-+** and public-domain systems have routines called re_comp and re_exec;
-+** System V uses regcmp and regex.
-+**
-+** REGCTYPE             is the type of a variable to hold the compiled regexp
-+** REGCMP(re,str)     is the function which compiles a regexp in `str' into
-+**                    a compiled regexp `re' declared as REGCTYPE and
-+**                    returns `re'.
-+** REGEX(re,str,dummy)  is a function which matches `str' against a compiled
-+**                    regexp in `re' and returns a non-NULL pointer if it
-+**                    matches, NULL otherwise.
-+** REGFREE(re)                is anything that should be done when the compiled
-+**                    regexp `re' is no longer needed.  It can be also used
-+**                    to allocate any structures required to compile a
-+**                    regexp, since it is called *before* compiling a new
-+**                    regexp (that's where we know that the old one will no
-+**                    longer be used).
-+**
-+** Here is one way of defining these if you have POSIX regexp functions:
-+**
-+**  #include <sys/types.h>
-+**  #include <regex.h>
-+**  #define REGCTYPE          regex_t *
-+**  #define REGCMP(re,str)    (regcomp (re, str, 0), re)
-+**  #define REGEX(re, str, dummy) \
-+**    (re != 0 && regexec (re, str, 0, 0, 0) == 0 ? (char *)1 : NULL)
-+**  #define REGFREE(re) \
-+**    do {                                                    \
-+**        if (re == 0)                                                \
-+**          re = (regex_t *)calloc (1, sizeof (regex_t));     \
-+**        else                                                        \
-+**          regfree(re);                                      \
-+**    } while (0)
-+**
-+*/
-+#ifdef REGEX_LOOKUP
-+#ifndef REGCMP
-+#ifdef USG
-+#define REGCTYPE              char *
-+#define REGCMP(re,str)                regcmp (str, (char *) 0)
-+#define REGEX(re, str, dummy) regex (re, str, dummy, dummy, dummy, dummy, \
-+                                  dummy, dummy, dummy, dummy, dummy, dummy)
-+#define REGFREE(re)           do {if (re != NULL) free (re); re = NULL;} \
-+                                  while (0)
-+#else /* USG */
-+#define REGCTYPE              char *
-+#define REGFREE(re)           (void)0
-+#define REGCMP(re,str)                re_comp (str)
-+#define REGEX(re, str, dummy) re_exec (str)
-+#endif /* USG */
-+#endif /* REGCMP */
-+#endif /* REGEX_LOOKUP */
-+
-+/* look command (if look(1) MAY BE available - ignored if not) */
-+#ifndef REGEX_LOOKUP
-+#ifndef LOOK
-+#define       LOOK    "look -df"
-+#endif
-+#endif /* REGEX_LOOKUP */
-+
-+/* path to egrep (use speeded up version if available) */
-+#ifndef EGREPCMD
-+#ifdef        USG
-+#define EGREPCMD "/bin/egrep"
-+#else
-+#define EGREPCMD "/usr/bin/egrep -i"
-+#endif
-+#endif
-+
-+/* path to wordlist for Lookup command (typically /usr/dict/{words|web2}) */
-+/* note that /usr/dict/web2 is usually a bad idea due to obscure words */
-+#ifndef WORDS
-+#define WORDS "/usr/dict/words"
-+#endif
-+
-+/* buffer size to use for file names if not in sys/param.h */
-+#ifndef MAXPATHLEN
-+#define MAXPATHLEN 240
-+#endif
-+
-+/* max file name length (will truncate to fit BAKEXT) if not in sys/param.h */
-+#ifndef MAXNAMLEN
-+#define MAXNAMLEN 14
-+#endif
-+
-+/* define if you want .bak file names truncated to MAXNAMLEN characters */
-+#ifndef TRUNCATEBAK
-+#undef TRUNCATEBAK
-+#endif /* TRUNCATEBAK */
-+
-+/* largest word accepted from a file by any input routine, plus one */
-+#ifndef       INPUTWORDLEN
-+#define INPUTWORDLEN 100
-+#endif
-+
-+/* largest amount that a word might be extended by adding affixes */
-+#ifndef MAXAFFIXLEN
-+#define MAXAFFIXLEN 20
-+#endif
-+
-+/*
-+** Define the following to suppress the 8-bit character feature.
-+** Unfortunately, this doesn't work as well as it might, because ispell
-+** only strips the 8th bit in some places.  For example, it calls strcmp()
-+** quite often without first stripping parity.  However, I really wonder
-+** about the utility of this option, so I haven't bothered to fix it.  If
-+** you think the stripping feature of NO8BIT is useful, you might let me
-+** (Geoff Kuenning) know.
-+**
-+** Nevertheless, NO8BIT is a useful option for other reasons.  If NO8BIT
-+** is defined, ispell will probably use 8-bit characters internally;
-+** this improves time efficiency and saves a small amount of space
-+** in the hash file.  Thus, I recommend you specify NO8BIT unless you
-+** actually expect to be spelling files which use a 256-character set.
-+*/ 
-+#ifndef NO8BIT
-+#undef NO8BIT
-+#endif /* NO8BIT */
-+
-+/*
-+** Number of mask bits (affix flags) supported.  Must be 32, 64, 128, or
-+** 256.  If MASKBITS is 32 or 64, there are really only 26 or 58 flags
-+** available, respectively.  If it is 32, the flags are named with the
-+** 26 English uppercase letters;  lowercase will be converted to uppercase.
-+** If MASKBITS is 64, the 58 flags are named 'A' through 'z' in ASCII
-+** order, including the 6 special characters from 'Z' to 'a': "[\]^_`".
-+** If MASKBITS is 128 or 256, all the 7-bit or 8-bit characters,
-+** respectively, are theoretically available, though a few (newline, slash,
-+** null byte) are pretty hard to actually use successfully.
-+**
-+** Note that a number of non-English affix files depend on having a
-+** larger value for MASKBITS.  See the affix files for more
-+** information.
-+*/
-+#ifndef MASKBITS
-+#define MASKBITS      64
-+#endif
-+
-+/*
-+** C type to use for masks.  This should be a type that the processor
-+** accesses efficiently.
-+**
-+** MASKTYPE_WIDTH must correctly reflect the number of bits in a
-+** MASKTYPE.  Unfortunately, it is also required to be a constant at
-+** preprocessor time, which means you can't use the sizeof operator to
-+** define it.
-+**
-+** Note that MASKTYPE *must* match MASKTYPE_WIDTH or you may get
-+** division-by-zero errors! 
-+*/
-+#ifndef MASKTYPE
-+#define MASKTYPE      long
-+#endif
-+#ifndef MASKTYPE_WIDTH
-+#define MASKTYPE_WIDTH        32
-+#endif
-+#if MASKBITS < MASKTYPE_WIDTH
-+#undef MASKBITS
-+#define MASKBITS      MASKTYPE_WIDTH
-+#endif /* MASKBITS < MASKTYPE_WIDTH */
-+
-+
-+/* maximum number of include files supported by xgets;  set to 0 to disable */
-+#ifndef MAXINCLUDEFILES
-+#define MAXINCLUDEFILES       5
-+#endif
-+
-+/*
-+** Maximum hash table fullness percentage.  Larger numbers trade space
-+** for time.
-+**/
-+#ifndef MAXPCT
-+#define MAXPCT        70              /* Expand table when 70% full */
-+#endif
-+
-+/*
-+** Maximum number of "string" characters that can be defined in a
-+** language (affix) file.  Don't forget that an upper/lower string
-+** character counts as two!
-+*/
-+#ifndef MAXSTRINGCHARS
-+#define MAXSTRINGCHARS 512
-+#endif /* MAXSTRINGCHARS */
-+
-+/*
-+** Maximum length of a "string" character.  The default is appropriate for
-+** nroff-style characters starting with a backslash.
-+*/
-+#ifndef MAXSTRINGCHARLEN
-+#define MAXSTRINGCHARLEN 10
-+#endif /* MAXSTRINGCHARLEN */
-+
-+/*
-+** the S_NOPARITY mask is applied to user input characters from the terminal
-+** in order to mask out the parity bit.
-+*/
-+#ifdef NO8BIT
-+#define S_NOPARITY 0x7f
-+#else
-+#define S_NOPARITY 0xff
-+#endif
-+
-+
-+/*
-+** the terminal mode for ispell, set to CBREAK or RAW
-+**
-+*/
-+#ifndef TERM_MODE
-+#define TERM_MODE     CBREAK
-+#endif
-+
-+/*
-+** Define this if you want your columns of words to be of equal length.
-+** This will spread short word lists across the screen instead of down it.
-+*/
-+#ifndef EQUAL_COLUMNS
-+#undef EQUAL_COLUMNS
-+#endif /* EQUAL_COLUMNS */
-+
-+/*
-+** This is the extension that will be added to backup files
-+*/
-+#ifndef       BAKEXT
-+#define       BAKEXT  ".bak"
-+#endif
-+
-+/*
-+** Define this if you want to suppress the capitalization-checking
-+** feature.  This will reduce the size of the hashed dictionary on
-+** most 16-bit and some 32-bit machines.  This option is not
-+** recommended.
-+*/
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+#undef NO_CAPITALIZATION_SUPPORT
-+#endif /* NO_CAPITALIZATION_SUPPORT */
-+
-+/*
-+** Define this if you want your personal dictionary sorted.  This may take
-+** a long time for very large dictionaries.  Dictionaries larger than
-+** SORTPERSONAL words will not be sorted.  Define SORTPERSONAL as zero
-+** to disable this feature.
-+*/
-+#ifndef SORTPERSONAL
-+#define SORTPERSONAL  1000
-+#endif
-+
-+/*
-+** Define this if you want to use the shell for interpretation of commands
-+** issued via the "L" command, "^Z" under System V, and "!".  If this is
-+** not defined then a direct fork()/exec() will be used in place of the
-+** normal system().  This may speed up these operations greately on some
-+** systems.
-+*/
-+#ifndef USESH
-+#undef USESH
-+#endif /* USESH */
-+
-+/*
-+** Maximum language-table search size.  Smaller numbers make ispell
-+** run faster, at the expense of more memory (the lowest reasonable value
-+** is 2).  If a given character appears in a significant position in
-+** more than MAXSEARCH suffixes, it will be given its own index table.
-+** If you change this, define INDEXDUMP in lookup.c to be sure your
-+** index table looks reasonable.
-+*/
-+#ifndef MAXSEARCH
-+#define MAXSEARCH 4
-+#endif
-+
-+/*
-+** Define this if you want to be able to type any command at a "type space
-+** to continue" prompt.
-+*/
-+#ifndef COMMANDFORSPACE
-+#undef COMMANDFORSPACE
-+#endif /* COMMANDFORSPACE */
-+
-+/*
-+** Memory-allocation increment.  Buildhash allocates memory in chunks
-+** of this size, and then subdivides it to get its storage.  This saves
-+** much malloc execution time.  A good number for this is the system
-+** page size less the malloc storage overhead.
-+**
-+** Define this to zero to revert to using malloc/realloc.  This is normally
-+** useful only on systems with limited memory.
-+*/
-+#ifndef MALLOC_INCREMENT
-+#define MALLOC_INCREMENT      0       
-+#endif
-+
-+/*
-+** Maximum number of "hits" expected on a word.  This is basically the
-+** number of different ways different affixes can produce the same word.
-+** For example, with "english.aff", "brothers" can be produced 3 ways:
-+** "brothers," "brother+s", or "broth+ers".  If this is too low, no major
-+** harm will be done, but ispell may occasionally forget a capitalization.
-+*/
-+#ifndef MAX_HITS
-+#define MAX_HITS      10
-+#endif
-+
-+/*
-+** Maximum number of capitalization variations expected in any word.
-+** Besides the obvious all-lower, all-upper, and capitalized versions,
-+** this includes followcase variants.  If this is too low, no real
-+** harm will be done, but ispell may occasionally fail to suggest a
-+** correct capitalization.
-+*/
-+#ifndef MAX_CAPS
-+#define MAX_CAPS      10
-+#endif /* MAX_CAPS */
-+
-+/* Define this to ignore spelling check of entire LaTeX bibliography listings */
-+#ifndef IGNOREBIB
-+#undef IGNOREBIB
-+#endif
-+
-+/*
-+** Default nroff and TeX special characters.  Normally, you won't want to
-+** change this;  instead you would override it in the language-definition
-+** file.
-+*/
-+#ifndef TEXSPECIAL
-+#define TEXSPECIAL    "{}$*.%#&?,;:!@~-"
-+#endif
-+
-+#ifndef NRSPECIAL
-+#define NRSPECIAL     "().\\*"
-+#endif
-+
-+/*
-+** Defaults for certain command-line flags.
-+*/
-+#ifndef DEFNOBACKUPFLAG
-+#define DEFNOBACKUPFLAG       0                   /* Don't suppress backup file */
-+#endif
-+#ifndef DEFTEXFLAG
-+#define DEFTEXFLAG    0                   /* Default to nroff mode */
-+#endif
-+
-+/*
-+** Define this if you want ispell to place a limitation on the maximum
-+** size of the screen.  On windowed workstations with very large windows,
-+** the size of the window can be too much of a good thing, forcing the
-+** user to look back and forth between the bottom and top of the screen.
-+** If MAX_SCREEN_SIZE is nonzero, screens larger than this will be treated
-+** as if they have only MAX_SCREEN_SIZE lines.  A good value for this
-+** variable is 24 or 30.  Define it as zero to suppress the feature.
-+*/
-+#ifndef MAX_SCREEN_SIZE
-+#define MAX_SCREEN_SIZE 0
-+#endif
-+
-+/*
-+** The next three variables are used to provide a variable-size context
-+** display at the bottom of the screen.  Normally, the user will see
-+** a number of lines equal to CONTEXTPCT of his screen, rounded down
-+** (thus, with CONTEXTPCT == 10, a 24-line screen will produce two lines
-+** of context).  The context will never be greater than MAXCONTEXT or
-+** less than MINCONTEXT.  To disable this feature entirely, set MAXCONTEXT
-+** and MINCONTEXT to the same value.  To round context percentages up,
-+** define CONTEXTROUNDUP.
-+**
-+** Warning: don't set MAXCONTEXT ridiculously large.  There is a
-+** static buffer of size MAXCONTEXT*BUFSIZ; since BUFSIZ is frequently
-+** 1K or larger, this can create a remarkably large executable.
-+*/
-+#ifndef CONTEXTPCT
-+#define CONTEXTPCT    10      /* Use 10% of the screen for context */
-+#endif
-+#ifndef MINCONTEXT
-+#define MINCONTEXT    2       /* Always show at least 2 lines of context */
-+#endif
-+#ifndef MAXCONTEXT
-+#define MAXCONTEXT    10      /* Never show more than 10 lines of context */
-+#endif
-+#ifndef CONTEXTROUNDUP
-+#undef CONTEXTROUNDUP         /* Don't round context up */
-+#endif
-+
-+/*
-+** Define this if you want the context lines to be displayed at the
-+** bottom of the screen, the way they used to be, rather than at the top.
-+*/
-+#ifndef BOTTOMCONTEXT
-+#undef BOTTOMCONTEXT
-+#endif /* BOTTOMCONTEXT */
-+
-+/*
-+** Define this if you want the "mini-menu," which gives the most important
-+** options at the bottom of the screen, to be the default (in any case, it
-+** can be controlled with the "-M" switch).
-+*/
-+#ifndef MINIMENU
-+#undef MINIMENU
-+#endif
-+
-+/*
-+** You might want to change this to zero if your users want to check
-+** single-letter words against the dictionary.  However, you should try
-+** some sample runs using the -W switch before you try it out;  you'd
-+** be surprised how many single letters appear in documents.  If you increase
-+** MINWORD beyond 1, don't say I didn't warn you that it was a bad idea.
-+*/
-+#ifndef MINWORD
-+#define MINWORD               1       /* Words this short and shorter are always ok */
-+#endif
-+
-+/*
-+** ANSI C compilers are supposed to provide an include file,
-+** "stdlib.h", which gives function prototypes for all library
-+** routines.  Define NO_STDLIB_H if you have a compiler that claims to
-+** be ANSI, but doesn't provide this include file.
-+*/
-+#ifndef NO_STDLIB_H
-+#ifndef __STDC__
-+#define NO_STDLIB_H
-+#endif /* __STDC__ */
-+#endif /* NO_STDLIB_H */
-+
-+/*
-+** The following define is used by the ispell developer to help
-+** double-check the software.  Leave it undefined on other systems
-+** unless you are especially fond of warning messages, or are pursuing
-+** an inexplicable bug that might be related to a type mismatch.
-+*/
-+#ifndef GENERATE_LIBARARY_PROTOS
-+#undef GENERATE_LIBARARY_PROTOS
-+#endif /* GENERATE_LIBARARY_PROTOS */
-+
-+/*
-+** Symbols below this point are generally intended to cater to
-+** idiosyncracies of specific machines and operating systems.
-+**
-+** MS-DOS users should also define HAS_RENAME, above, if appropriate.
-+**
-+** Define PIECEMEAL_HASH_WRITES if your system can't handle huge write
-+** operations.  This is known to be a problem on MS-DOS systems when
-+** a 16-bit compiler is used to compile Ispell.
-+*/
-+#ifndef PIECEMEAL_HASH_WRITES
-+#undef PIECEMEAL_HASH_WRITES
-+#endif /* PIECEMEAL_HASH_WRITES */
-+
-+/*
-+** Redefine GETKEYSTROKE() to getkey() on some MS-DOS systems where
-+** getchar() doesn't operate properly in raw mode.
-+*/
-+#ifndef GETKEYSTROKE
-+#define GETKEYSTROKE()        getchar ()
-+#endif /* GETKEYSTROKE */
-+
-+/*
-+** Define MSDOS_BINARY_OPEN to 0x8000 on MS-DOS systems.  This can be
-+** done by adding "#include fcntl.h" to your local.h file.
-+*/
-+#ifndef MSDOS_BINARY_OPEN
-+#ifdef O_BINARY
-+#define MSDOS_BINARY_OPEN   O_BINARY
-+#else /* O_BINARY */
-+#define MSDOS_BINARY_OPEN   0
-+#endif /* O_BINARY */
-+#endif /* MSDOS_BINARY_OPEN */
-+
-+/*
-+** Environment variable to use to locate the home directory.  On DOS
-+** systems you might want to set this to ISPELL_HOME to avoid
-+** conflicts with other programs that look for a HOME environment
-+** variable; on all other systems it should be just HOME.
-+*/
-+#ifndef HOME
-+#define HOME  "HOME"
-+#endif /* HOME */
-+
-+/*
-+** On MS-DOS systems, define PDICTHOME to be the name of a directory
-+** to be used to contain the personal dictionary (.ispell_english,
-+** etc.).  On other systems, you can leave it undefined.
-+*/
-+#ifndef PDICTHOME
-+#undef PDICTHOME
-+#endif /* PDICTHOME */
-+
-+/*
-+** On MS-DOS systems, you can rename the following variables so that
-+** ispell's files have 3-character suffixes.  Note that, if you do
-+** this, you will have to redefine any variable above that incorporates
-+** one of the suffixes.  (Most MS-DOS environments will silently truncate
-+** excess characters beyond the 8+3 limit, so you usually don't need to
-+** change the suffixes just because they are longer than 3 characters.)
-+*/
-+#ifndef HASHSUFFIX
-+#define HASHSUFFIX    ".hash"
-+#endif /* HASHSUFFIX */
-+#ifndef STATSUFFIX
-+#define STATSUFFIX    ".sta"
-+#endif /* STATSUFFIX */
-+#ifndef COUNTSUFFIX
-+#define COUNTSUFFIX   ".cnt"
-+#endif /* COUNTSUFFIX */
-+#define SIGNAL_TYPE_STRING "void"
-+#define MASKTYPE_STRING "long"
-diff -urBbN vim64.org/src/spell/good.c vim64/src/spell/good.c
---- vim64.org/src/spell/good.c 1970-01-01 01:00:00.000000000 +0100
-+++ vim64/src/spell/good.c     2005-10-17 12:49:17.505835456 +0200
-@@ -0,0 +1,400 @@
-+#ifndef lint
-+static char Rcs_Id[] =
-+    "$Id$";
-+#endif
-+
-+/*
-+ * good.c - see if a word or its root word
-+ * is in the dictionary.
-+ *
-+ * Pace Willisson, 1983
-+ *
-+ * Copyright 1992, 1993, Geoff Kuenning, Granada Hills, CA
-+ * All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ *
-+ * 1. Redistributions of source code must retain the above copyright
-+ *    notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ *    notice, this list of conditions and the following disclaimer in the
-+ *    documentation and/or other materials provided with the distribution.
-+ * 3. All modifications to the source code must be clearly marked as
-+ *    such.  Binary redistributions based on modified source code
-+ *    must be clearly marked as modified versions in the documentation
-+ *    and/or other materials provided with the distribution.
-+ * 4. All advertising materials mentioning features or use of this software
-+ *    must display the following acknowledgment:
-+ *      This product includes software developed by Geoff Kuenning and
-+ *      other unpaid contributors.
-+ * 5. The name of Geoff Kuenning may not be used to endorse or promote
-+ *    products derived from this software without specific prior
-+ *    written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY GEOFF KUENNING AND CONTRIBUTORS ``AS IS'' AND
-+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED.  IN NO EVENT SHALL GEOFF KUENNING OR CONTRIBUTORS BE LIABLE
-+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+ * SUCH DAMAGE.
-+ */
-+
-+/*
-+ * $Log$
-+ * Revision 1.43  1994/11/02  06:56:05  geoff
-+ * Remove the anyword feature, which I've decided is a bad idea.
-+ *
-+ * Revision 1.42  1994/10/25  05:45:59  geoff
-+ * Add support for an affix that will work with any word, even if there's
-+ * no explicit flag.
-+ *
-+ * Revision 1.41  1994/05/24  06:23:06  geoff
-+ * Let tgood decide capitalization questions, rather than doing it ourselves.
-+ *
-+ * Revision 1.40  1994/05/17  06:44:10  geoff
-+ * Add support for controlled compound formation and the COMPOUNDONLY
-+ * option to affix flags.
-+ *
-+ * Revision 1.39  1994/01/25  07:11:31  geoff
-+ * Get rid of all old RCS log lines in preparation for the 3.1 release.
-+ *
-+ */
-+
-+#include <ctype.h>
-+#include "ispell.h"
-+
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+Public Logical        cap_ok (ichar_t * word, struct success * hit, int len);
-+Local  Logical        entryhasaffixes (struct dent * dent, struct success * hit);
-+#endif /* NO_CAPITALIZATION_SUPPORT */
-+Public void   flagpr (ichar_t * word, int preflag, int prestrip,
-+                                    int preadd, int sufflag, int sufadd);
-+Local ichar_t *       orig_word;
-+
-+Public int 
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+good (ichar_t *w, int ignoreflagbits, int allhits, int pfxopts, int sfxopts)
-+#else
-+/* ARGSUSED */
-+good (ichar_t *w, int ignoreflagbits, int dummy, int pfxopts, int sfxopts)
-+#define allhits       0       /* Never actually need more than one hit */
-+#endif
-+
-+{
-+    ichar_t            nword[INPUTWORDLEN + MAXAFFIXLEN];
-+    register ichar_t     *p;
-+    register ichar_t     *q;
-+    register           n;
-+    register struct dent *dp;
-+
-+                      /*
-+                      ** Make an uppercase copy of the word we are checking.
-+                      */
-+    for (p = w, q = nword; *p; )
-+      *q++ = mytoupper (*p++);
-+    *q = 0;
-+    n = q - nword;
-+
-+    numhits = 0;
-+
-+    if (cflag)
-+       {
-+      (void) printf ("%s", ichartosstr (w, 0));
-+      orig_word = w;
-+       }
-+    else if ((dp = lookup (nword, 1)) != NULL)
-+       {
-+      hits[0].dictent = dp;
-+      hits[0].prefix = NULL;
-+      hits[0].suffix = NULL;
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+      if (allhits  ||  cap_ok (w, &hits[0], n))
-+          numhits = 1;
-+#else
-+      numhits = 1;
-+#endif
-+      /*
-+       * If we're looking for compounds, and this root doesn't
-+       * participate in compound formation, undo the hit.
-+       */
-+      if (compoundflag == COMPOUND_CONTROLLED
-+            &&  ((pfxopts | sfxopts) & FF_COMPOUNDONLY) != 0
-+                &&  hashheader.compoundbit >= 0
-+                    &&  TSTMASKBIT (dp->mask, hashheader.compoundbit) == 0)
-+          numhits = 0;
-+       }
-+    if (numhits  &&  !allhits)
-+      return 1;
-+
-+    /* try stripping off affixes */
-+
-+#if 0
-+    numchars = icharlen (nword);
-+    if (numchars < 4)
-+      {
-+      if (cflag)
-+          (void) putchar ('\n');
-+      return numhits  ||  (numchars == 1);
-+      }
-+#endif
-+
-+    chk_aff (w, nword, n, ignoreflagbits, allhits, pfxopts, sfxopts);
-+
-+    if (cflag)
-+      (void) putchar ('\n');
-+
-+    return numhits;
-+}
-+
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+Public Logical
-+cap_ok (register ichar_t *word, register struct success *hit, int len)
-+{
-+    register ichar_t *                dword;
-+    register ichar_t *                w;
-+    register struct dent *    dent;
-+    ichar_t                   dentword[INPUTWORDLEN + MAXAFFIXLEN];
-+    int                               preadd;
-+    int                               prestrip;
-+    int                               sufadd;
-+    ichar_t *                 limit;
-+    long                      thiscap;
-+    long                      dentcap;
-+
-+    thiscap = whatcap (word);
-+    /*
-+    ** All caps is always legal, regardless of affixes.
-+    */
-+    preadd = prestrip = sufadd = 0;
-+    if (thiscap == ALLCAPS)
-+      return 1;
-+    else if (thiscap == FOLLOWCASE)
-+      {
-+      /* Set up some constants for the while(1) loop below */
-+      if (hit->prefix)
-+          {
-+          preadd = hit->prefix->affl;
-+          prestrip = hit->prefix->stripl;
-+          }
-+      else
-+          preadd = prestrip = 0;
-+      sufadd = hit->suffix ? hit->suffix->affl : 0;
-+      }
-+    /*
-+    ** Search the variants for one that matches what we have.  Note
-+    ** that thiscap can't be ALLCAPS, since we already returned
-+    ** for that case.
-+    */
-+    dent = hit->dictent;
-+    while(True)
-+      {
-+      dentcap = captype (dent->flagfield);
-+      if (dentcap != thiscap)
-+          {
-+          if (dentcap == ANYCASE  &&  thiscap == CAPITALIZED
-+                                   &&  entryhasaffixes (dent, hit))
-+              return True;
-+          }
-+      else                            /* captypes match */
-+          {
-+          if (thiscap != FOLLOWCASE)
-+              {
-+              if (entryhasaffixes (dent, hit))
-+                  return True;
-+              }
-+          else
-+              {
-+              /*
-+              ** Make sure followcase matches exactly.
-+              ** Life is made more difficult by the
-+              ** possibility of affixes.  Start with
-+              ** the prefix.
-+              */
-+              (void) strtoichar (dentword, dent->word, INPUTWORDLEN, 1);
-+              dword = dentword;
-+              limit = word + preadd;
-+              if (myupper (dword[prestrip]))
-+                  {
-+                  for (w = word;  w < limit;  w++)
-+                      {
-+                      if (mylower (*w))
-+                          goto doublecontinue;
-+                      }
-+                  }
-+              else
-+                  {
-+                  for (w = word;  w < limit;  w++)
-+                      {
-+                      if (myupper (*w))
-+                          goto doublecontinue;
-+                      }
-+                  }
-+              dword += prestrip;
-+              /* Do root part of word */
-+              limit = dword + len - preadd - sufadd;
-+              while (dword < limit)
-+                  {
-+                  if (*dword++ != *w++)
-+                    goto doublecontinue;
-+                  }
-+              /* Do suffix */
-+              dword = limit - 1;
-+              if (myupper (*dword))
-+                  {
-+                  for (  ;  *w;  w++)
-+                      {
-+                      if (mylower (*w))
-+                          goto doublecontinue;
-+                      }
-+                  }
-+              else
-+                  {
-+                  for (  ;  *w;  w++)
-+                      {
-+                      if (myupper (*w))
-+                          goto doublecontinue;
-+                      }
-+                  }
-+              /*
-+              ** All failure paths go to "doublecontinue,"
-+              ** so if we get here it must match.
-+              */
-+              if (entryhasaffixes (dent, hit))
-+                  return True;
-+doublecontinue:       ;
-+              }
-+          }
-+      if ((dent->flagfield & MOREVARIANTS) == 0)
-+          break;
-+      dent = dent->next;
-+      }
-+
-+    /* No matches found */
-+    return False;
-+}
-+
-+/*
-+** See if this particular capitalization (dent) is legal with these
-+** particular affixes.
-+*/
-+Local Logical
-+entryhasaffixes (register struct dent *dent, register struct success *hit)
-+{
-+
-+    if (hit->prefix  &&  !TSTMASKBIT (dent->mask, hit->prefix->flagbit))
-+      return False;
-+    if (hit->suffix  &&  !TSTMASKBIT (dent->mask, hit->suffix->flagbit))
-+      return False;
-+    return True;                      /* Yes, these affixes are legal */
-+}
-+#endif
-+
-+/*
-+ * Print a word and its flag, making sure the case of the output matches
-+ * the case of the original found in "orig_word".
-+ */
-+Public void 
-+flagpr (register ichar_t *word,       /* (Modified) word to print */
-+               int     preflag,       /* Prefix flag (if any) */
-+               int     prestrip,      /* Lth of pfx stripped off orig_word */
-+               int     preadd,        /* Length of prefix added to w */
-+               int     sufflag,       /* Suffix flag (if any) */
-+               int     sufadd)        /* Length of suffix added to w */
-+{
-+    register ichar_t *        origp;          /* Pointer into orig_word */
-+    int                       orig_len;       /* Length of orig_word */
-+
-+    orig_len = icharlen (orig_word);
-+    /*
-+     * We refuse to print if the cases outside the modification
-+     * points don't match those just inside.  This prevents things
-+     * like "OEM's" from being turned into "OEM/S" which expands
-+     * only to "OEM'S".
-+     */
-+    if (preflag > 0)
-+      {
-+      origp = orig_word + preadd;
-+      if (myupper (*origp))
-+          {
-+          for (origp = orig_word;  origp < orig_word + preadd;  origp++)
-+              {
-+              if (mylower (*origp))
-+                  return;
-+              }
-+          }
-+      else
-+          {
-+          for (origp = orig_word;  origp < orig_word + preadd;  origp++)
-+              {
-+              if (myupper (*origp))
-+                  return;
-+              }
-+          }
-+      }
-+    if (sufflag > 0)
-+      {
-+      origp = orig_word + orig_len - sufadd;
-+      if (myupper (origp[-1]))
-+          {
-+          for (  ;  *origp != 0;  origp++)
-+              {
-+              if (mylower (*origp))
-+                  return;
-+              }
-+          }
-+      else
-+          {
-+          origp = orig_word + orig_len - sufadd;
-+          for (  ;  *origp != 0;  origp++)
-+              {
-+              if (myupper (*origp))
-+                  return;
-+              }
-+          }
-+      }
-+    /*
-+     * The cases are ok.  Put out the word, being careful that the
-+     * prefix/suffix cases match those in the original, and that the
-+     * unchanged characters from the original actually match it.
-+     */
-+    (void) putchar (' ');
-+    origp = orig_word + preadd;
-+    if (myupper (*origp))
-+      {
-+      while (--prestrip >= 0)
-+          (void) fputs (printichar ((int) *word++), stdout);
-+      }
-+    else
-+      {
-+      while (--prestrip >= 0)
-+          (void) fputs (printichar ((int) mytolower (*word++)), stdout);
-+      }
-+    for (prestrip = orig_len - preadd - sufadd;  --prestrip >= 0;  word++)
-+      (void) fputs (printichar ((int) *origp++), stdout);
-+    if (origp > orig_word)
-+      origp--;
-+    if (myupper (*origp))
-+      (void) fputs (ichartosstr (word, 0), stdout);
-+    else
-+      {
-+      while (*word)
-+          {
-+          (void) fputs (printichar ((int) mytolower (*word++)), stdout);
-+          }
-+      }
-+    /*
-+     * Now put out the flags
-+     */
-+    (void) putchar (hashheader.flagmarker);
-+    if (preflag > 0)
-+      (void) putchar (preflag);
-+    if (sufflag > 0)
-+      (void) putchar (sufflag);
-+}
-diff -urBbN vim64.org/src/spell/hash.c vim64/src/spell/hash.c
---- vim64.org/src/spell/hash.c 1970-01-01 01:00:00.000000000 +0100
-+++ vim64/src/spell/hash.c     2005-10-17 12:49:17.506835304 +0200
-@@ -0,0 +1,91 @@
-+/*
-+ * hash.c - a simple hash function for ispell
-+ *
-+ * Pace Willisson, 1983
-+ *
-+ * Copyright 1992, 1993, Geoff Kuenning, Granada Hills, CA
-+ * All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ *
-+ * 1. Redistributions of source code must retain the above copyright
-+ *    notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ *    notice, this list of conditions and the following disclaimer in the
-+ *    documentation and/or other materials provided with the distribution.
-+ * 3. All modifications to the source code must be clearly marked as
-+ *    such.  Binary redistributions based on modified source code
-+ *    must be clearly marked as modified versions in the documentation
-+ *    and/or other materials provided with the distribution.
-+ * 4. All advertising materials mentioning features or use of this software
-+ *    must display the following acknowledgment:
-+ *      This product includes software developed by Geoff Kuenning and
-+ *      other unpaid contributors.
-+ * 5. The name of Geoff Kuenning may not be used to endorse or promote
-+ *    products derived from this software without specific prior
-+ *    written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY GEOFF KUENNING AND CONTRIBUTORS ``AS IS'' AND
-+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED.  IN NO EVENT SHALL GEOFF KUENNING OR CONTRIBUTORS BE LIABLE
-+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+ * SUCH DAMAGE.
-+ */
-+
-+/*
-+ * $Log$
-+ * Revision 1.20  1994/01/25  07:11:34  geoff
-+ * Get rid of all old RCS log lines in preparation for the 3.1 release.
-+ *
-+ */
-+
-+#include "ispell.h"
-+
-+/*
-+ * The following hash algorithm is due to Ian Dall, with slight modifications
-+ * by Geoff Kuenning to reflect the results of testing with the English
-+ * dictionaries actually distributed with ispell.
-+ */
-+#define HASHSHIFT   5
-+
-+#ifdef NO_CAPITALIZATION_SUPPORT
-+#define HASHUPPER(c)  c
-+#else /* NO_CAPITALIZATION_SUPPORT */
-+#define HASHUPPER(c)  mytoupper(c)
-+#endif /* NO_CAPITALIZATION_SUPPORT */
-+
-+Public int 
-+hash (
-+    register ichar_t *        s,
-+    register int      hashtblsize)
-+{
-+    register long     h = 0;
-+    register int      i;
-+
-+#ifdef ICHAR_IS_CHAR
-+    for (i = 4;  i--  &&  *s != 0;  )
-+      h = (h << 8) | HASHUPPER (*s++);
-+#else /* ICHAR_IS_CHAR */
-+    for (i = 2;  i--  &&  *s != 0;  )
-+      h = (h << 16) | HASHUPPER (*s++);
-+#endif /* ICHAR_IS_CHAR */
-+    while (*s != 0)
-+      {
-+              /*
-+               * We have to do circular shifts the hard way, since C doesn't
-+               * have them even though the hardware probably does.  Oh, well.
-+               */
-+      h = (h << HASHSHIFT) |
-+                         ((h >> (32 - HASHSHIFT)) & ((1 << HASHSHIFT) - 1));
-+      h ^= HASHUPPER (*s++);
-+      }
-+    return (unsigned long) h % hashtblsize;
-+}
-diff -urBbN vim64.org/src/spell/i_proto.h vim64/src/spell/i_proto.h
---- vim64.org/src/spell/i_proto.h      1970-01-01 01:00:00.000000000 +0100
-+++ vim64/src/spell/i_proto.h  2005-10-17 12:49:17.507835152 +0200
-@@ -0,0 +1,112 @@
-+Global int    addvheader (struct dent * ent);
-+Global void   askmode (void);
-+Global void   backup (void);
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+Global Logical        cap_ok (ichar_t * word, struct success * hit, int len);
-+#endif /* NO_CAPITALIZATION_SUPPORT */
-+Global void   chupcase (char * s);
-+Global void   checkfile (void);
-+Global void   checkline (FILE * ofile);
-+Global void   chk_aff (ichar_t * word, ichar_t * ucword, int len,
-+                int ignoreflagbits, int allhits, int pfxopts, int sfxopts);
-+Global int    combinecaps (struct dent * hdr, struct dent * newent);
-+Global int    compoundgood (ichar_t * word, int pfxopts);
-+Global void   copyout (char ** cc, int cnt);
-+Global void   correct (char * ctok, int ctokl, ichar_t * itok, int itokl,
-+                                                            char ** curchar);
-+Global char * do_regex_lookup (char * expr, int whence);
-+Global SIGNAL_TYPE done (int);
-+Global void   dumpmode (void);
-+Global void   erase (void);
-+Global int    expand_pre (char * croot, ichar_t * rootword,
-+                                    MASKTYPE mask[], int option, char *extra);
-+Global int    expand_suf (char * croot, ichar_t * rootword,
-+                    MASKTYPE mask[], int crossonly, int option, char * extra);
-+Global int    findfiletype (char * name, int searchnames,
-+                                                int * deformatter);
-+Global void   flagpr (ichar_t * word, int preflag, int prestrip,
-+                                    int preadd, int sufflag, int sufadd);
-+Global void   givehelp (int interactive);
-+Global int    good (ichar_t * word, int ignoreflagbits, int allhits,
-+                                            int pfxopts, int sfxopts);
-+Global int    hash (ichar_t * word, int hashtablesize);
-+#ifndef ICHAR_IS_CHAR
-+Global int    icharcmp (ichar_t * s1, ichar_t * s2);
-+Global ichar_t * icharcpy (ichar_t * out, ichar_t * in);
-+Global int    icharlen (ichar_t * str);
-+Global int    icharncmp (ichar_t * s1, ichar_t * s2, int n);
-+#endif /* ICHAR_IS_CHAR */
-+Global int    ichartostr (char * out, ichar_t * in, int outlen,
-+                int canonical);
-+Global char * ichartosstr (ichar_t * in, int canonical);
-+Global void   inverse (void);
-+Global struct dent * lookup (ichar_t * word, int dotree);
-+Global void   lowcase (ichar_t * string);
-+Global int    makedent (char * lbuf, int lbuflen, struct dent * d);
-+Global void   makepossibilities (ichar_t * word);
-+Global void   move (int row, int col);
-+Global void   normal (void);
-+Global char * printichar (int in);
-+#ifdef USESH
-+Global int    shellescape (char * buf);
-+Global void   shescape (char * buf);
-+#else /* USESH */
-+#ifndef REGEX_LOOKUP
-+Global int    shellescape (char * buf);
-+#endif /* REGEX_LOOKUP */
-+#endif /* USESH */
-+Global char * skipoverword (char * bufp);
-+Global void   stop (void);
-+Global int    stringcharlen (char * bufp, int canonical);
-+Global int    strtoichar (ichar_t * out, char * in, int outlen,
-+                                                        int canonical);
-+Global ichar_t * strtosichar (char * in, int canonical);
-+Global void   terminit (void);
-+Global void   toutent (FILE * outfile, struct dent * hent, int onlykeep);
-+Global void   treeinit (char * persdict, char * LibDict);
-+Global void   treeinsert (char * word, int wordlen, int keep);
-+Global struct dent * treelookup (ichar_t * word);
-+Global void   treeoutput (void);
-+Global void   upcase (ichar_t * string);
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+Global long   whatcap (ichar_t * word);
-+#endif
-+Global char * xgets (char * string, int size, FILE * stream);
-+Global void   yyinit (void);
-+Global Logical        yyopen (char * file);
-+Global int    yyparse (void);
-+
-+#include <string.h>
-+
-+#ifdef REGEX_LOOKUP
-+#     ifdef USG
-+Global char * regcmp (const char * expr, const char * terminator, ...);
-+Global char * regex (const char * pat, const char * subject, ...);
-+#     else
-+Global char * re_comp (const char * expr);
-+Global int *  re_exec (const char * pat);
-+#     endif
-+#endif
-+/* WM
-+Global int    tgetent (char * buf, const char * termname);
-+Global int    tgetnum (const char * id);
-+Global char * tgetstr (const char * id, char ** area);
-+Global char * tgoto (const char * cm, int col, int row);
-+Global char * tputs (const char * str, int pad, int (*func) (int ch);
-+*/
-+
-+Global char * mypath_rindex(char const *str, char c);
-+Global void   save_root_cap (ichar_t * word, ichar_t * pattern,
-+                        int prestrip, int preadd, int sufstrip, int sufadd,
-+                            struct dent * firstdent, struct flagent * pfxent,
-+                                    struct flagent * sufent,
-+                    ichar_t savearea[MAX_CAPS][INPUTWORDLEN + MAXAFFIXLEN],
-+                                                                int * nsaved);
-+Global int    casecmp (char * a, char * b, int canonical);
-+Global int    ins_root_cap (ichar_t * word, ichar_t * pattern,
-+                    int prestrip, int preadd, int sufstrip, int sufadd,
-+                            struct dent * firstdent, struct flagent * pfxent,
-+                                                    struct flagent * sufent);
-+Global int insert(register ichar_t *  word);
-+Global char * linit (char *);
-+Global char * last_slash (char *file);
-diff -urBbN vim64.org/src/spell/ispell.h vim64/src/spell/ispell.h
---- vim64.org/src/spell/ispell.h       1970-01-01 01:00:00.000000000 +0100
-+++ vim64/src/spell/ispell.h   2005-10-17 12:49:17.509834848 +0200
-@@ -0,0 +1,611 @@
-+/*
-+ * $Id$
-+ */
-+
-+/*
-+ * Copyright 1992, 1993, Geoff Kuenning, Granada Hills, CA
-+ * All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ *
-+ * 1. Redistributions of source code must retain the above copyright
-+ *    notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ *    notice, this list of conditions and the following disclaimer in the
-+ *    documentation and/or other materials provided with the distribution.
-+ * 3. All modifications to the source code must be clearly marked as
-+ *    such.  Binary redistributions based on modified source code
-+ *    must be clearly marked as modified versions in the documentation
-+ *    and/or other materials provided with the distribution.
-+ * 4. All advertising materials mentioning features or use of this software
-+ *    must display the following acknowledgment:
-+ *      This product includes software developed by Geoff Kuenning and
-+ *      other unpaid contributors.
-+ * 5. The name of Geoff Kuenning may not be used to endorse or promote
-+ *    products derived from this software without specific prior
-+ *    written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY GEOFF KUENNING AND CONTRIBUTORS ``AS IS'' AND
-+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED.  IN NO EVENT SHALL GEOFF KUENNING OR CONTRIBUTORS BE LIABLE
-+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+ * SUCH DAMAGE.
-+ */
-+
-+/*
-+ * $Log$
-+ * Revision 1.68  1995/03/06  02:42:41  geoff
-+ * Be vastly more paranoid about parenthesizing macro arguments.  This
-+ * fixes a bug in defmt.c where a complex argument was passed to
-+ * isstringch.
-+ *
-+ * Revision 1.67  1995/01/03  19:24:12  geoff
-+ * Get rid of a non-global declaration.
-+ *
-+ * Revision 1.66  1994/12/27  23:08:49  geoff
-+ * Fix a lot of subtly bad assumptions about the widths of ints and longs
-+ * which only show up on 64-bit machines like the Cray and the DEC Alpha.
-+ *
-+ * Revision 1.65  1994/11/02  06:56:10  geoff
-+ * Remove the anyword feature, which I've decided is a bad idea.
-+ *
-+ * Revision 1.64  1994/10/25  05:46:18  geoff
-+ * Add the FF_ANYWORD flag for defining an affix that will apply to any
-+ * word, even if not explicitly specified.  (Good for French.)
-+ *
-+ * Revision 1.63  1994/09/16  04:48:28  geoff
-+ * Make stringdups and laststringch unsigned ints, and dupnos a plain
-+ * int, so that we can handle more than 128 stringchars and stringchar
-+ * types.
-+ *
-+ * Revision 1.62  1994/09/01  06:06:39  geoff
-+ * Change erasechar/killchar to uerasechar/ukillchar to avoid
-+ * shared-library problems on HP systems.
-+ *
-+ * Revision 1.61  1994/08/31  05:58:35  geoff
-+ * Add contextoffset, used in -a mode to handle extremely long lines.
-+ *
-+ * Revision 1.60  1994/05/17  06:44:15  geoff
-+ * Add support for controlled compound formation and the COMPOUNDONLY
-+ * option to affix flags.
-+ *
-+ * Revision 1.59  1994/03/15  06:25:16  geoff
-+ * Change deftflag's initialization so we can tell if -t/-n appeared.
-+ *
-+ * Revision 1.58  1994/02/07  05:53:28  geoff
-+ * Add typecasts to the the 7-bit versions of ichar* routines
-+ *
-+ * Revision 1.57  1994/01/25  07:11:48  geoff
-+ * Get rid of all old RCS log lines in preparation for the 3.1 release.
-+ *
-+ */
-+
-+#include <stdio.h>
-+#include "config.h"
-+
-+#ifdef NO8BIT
-+#define SET_SIZE      128
-+#else
-+#define SET_SIZE      256
-+#endif
-+
-+#define MASKSIZE      (MASKBITS / MASKTYPE_WIDTH)
-+
-+/* The following is really testing for MASKSIZE <= 1, but cpp can't do that */
-+#if MASKBITS <= MASKTYPE_WIDTH
-+#define SETMASKBIT(mask, bit) ((mask)[0] |= (MASKTYPE) 1 << (bit))
-+#define CLRMASKBIT(mask, bit) ((mask)[0] &= (MASKTYPE) ~(1 << (bit)))
-+#define TSTMASKBIT(mask, bit) ((mask)[0] & ((MASKTYPE) 1 << (bit)))
-+#else
-+#define SETMASKBIT(mask, bit) \
-+                  ((mask)[(bit) / MASKTYPE_WIDTH] |= \
-+                    (MASKTYPE) 1 << ((bit) & (MASKTYPE_WIDTH - 1)))
-+#define CLRMASKBIT(mask, bit) \
-+                  ((mask)[(bit) / MASKTYPE_WIDTH] &= \
-+                    ~((MASKTYPE) 1 << ((bit) & (MASKTYPE_WIDTH - 1))))
-+#define TSTMASKBIT(mask, bit) \
-+                  ((mask)[(bit) / MASKTYPE_WIDTH] & \
-+                    ((MASKTYPE) 1 << ((bit) & (MASKTYPE_WIDTH - 1))))
-+#endif
-+
-+#if MASKBITS > 64
-+#define FULLMASKSET
-+#endif
-+
-+#if MASKBITS <= 32
-+# ifndef lint
-+#define BITTOCHAR(bit)        ((bit) + 'A')
-+#define CHARTOBIT(ch) ((ch) - 'A')
-+# endif /* lint */
-+#define LARGESTFLAG   26      /* 5 are needed for flagfield below */
-+#define FLAGBASE      ((MASKTYPE_WIDTH) - 6)
-+#else
-+# if MASKBITS <= 64
-+#  ifndef lint
-+#define BITTOCHAR(bit)        ((bit) + 'A')
-+#define CHARTOBIT(ch) ((ch) - 'A')
-+#  endif /* lint */
-+#define LARGESTFLAG   (64 - 6) /* 5 are needed for flagfield below */
-+#define FLAGBASE      ((MASKTYPE_WIDTH) - 6)
-+# else
-+#  ifndef lint
-+#define BITTOCHAR(bit)        (bit)
-+#define CHARTOBIT(ch) (ch)
-+#  endif /* lint */
-+#define LARGESTFLAG   MASKBITS /* flagfield is a separate field */
-+#define FLAGBASE      0
-+# endif
-+#endif
-+
-+/*
-+** Data type for internal word storage.  If necessary, we use shorts rather
-+** than chars so that string characters can be encoded as a single unit.
-+*/
-+#if (SET_SIZE + MAXSTRINGCHARS) <= 256
-+#ifndef lint
-+#define ICHAR_IS_CHAR
-+#endif /* lint */
-+#endif
-+
-+#ifdef ICHAR_IS_CHAR
-+typedef unsigned char ichar_t;        /* Internal character */
-+#define icharlen(s)   strlen ((char *) (s))
-+#define icharcpy(a, b)        strcpy ((char *) (a), (char *) (b))
-+#define icharcmp(a, b)        strcmp ((char *) (a), (char *) (b))
-+#define icharncmp(a, b, n) strncmp ((char *) (a), (char *) (b), (n))
-+#define chartoichar(x)        ((ichar_t) (x))
-+#else
-+typedef unsigned short        ichar_t;        /* Internal character */
-+#define chartoichar(x)        ((ichar_t) (unsigned char) (x))
-+#endif
-+
-+struct dent
-+    {
-+    struct dent *     next;
-+    char *            word;
-+    MASKTYPE          mask[MASKSIZE];
-+#ifdef FULLMASKSET
-+    char              flags;
-+#endif
-+    };
-+
-+/*
-+** Flags in the directory entry.  If FULLMASKSET is undefined, these are
-+** stored in the highest bits of the last longword of the mask field.  If
-+** FULLMASKSET is defined, they are stored in the extra "flags" field.
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+**
-+** If a word has only one capitalization form, and that form is not
-+** FOLLOWCASE, it will have exactly one entry in the dictionary.  The
-+** legal capitalizations will be indicated by the 2-bit capitalization
-+** field, as follows:
-+**
-+**    ALLCAPS         The word must appear in all capitals.
-+**    CAPITALIZED     The word must be capitalized (e.g., London).
-+**                    It will also be accepted in all capitals.
-+**    ANYCASE         The word may appear in lowercase, capitalized,
-+**                    or all-capitals.
-+**
-+** Regardless of the capitalization flags, the "word" field of the entry
-+** will point to an all-uppercase copy of the word.  This is to simplify
-+** the large portion of the code that doesn't care about capitalization.
-+** Ispell will generate the correct version when needed.
-+**
-+** If a word has more than one capitalization, there will be multiple
-+** entries for it, linked together by the "next" field.  The initial
-+** entry for such words will be a dummy entry, primarily for use by code
-+** that ignores capitalization.  The "word" field of this entry will
-+** again point to an all-uppercase copy of the word.  The "mask" field
-+** will contain the logical OR of the mask fields of all variants.
-+** A header entry is indicated by a capitalization type of ALLCAPS,
-+** with the MOREVARIANTS bit set.
-+**
-+** The following entries will define the individual variants.  Each
-+** entry except the last has the MOREVARIANTS flag set, and each
-+** contains one of the following capitalization options:
-+**
-+**    ALLCAPS         The word must appear in all capitals.
-+**    CAPITALIZED     The word must be capitalized (e.g., London).
-+**                    It will also be accepted in all capitals.
-+**    FOLLOWCASE      The word must be capitalized exactly like the
-+**                    sample in the entry.  Prefix (suffix) characters
-+**                    must be rendered in the case of the first (last)
-+**                    "alphabetic" character.  It will also be accepted
-+**                    in all capitals.  ("Alphabetic" means "mentioned
-+**                    in a 'casechars' statement".)
-+**    ANYCASE         The word may appear in lowercase, capitalized,
-+**                    or all-capitals.
-+**
-+** The "mask" field for the entry contains only the affix flag bits that
-+** are legal for that capitalization.  The "word" field will be null
-+** except for FOLLOWCASE entries, where it will point to the
-+** correctly-capitalized spelling of the root word.
-+**
-+** It is worth discussing why the ALLCAPS option is used in
-+** the header entry.  The header entry accepts an all-capitals
-+** version of the root plus every affix (this is always legal, since
-+** words get capitalized in headers and so forth).  Further, all of
-+** the following variant entries will reject any all-capitals form
-+** that is illegal due to an affix.
-+**
-+** Finally, note that variations in the KEEP flag can cause a multiple-variant
-+** entry as well.  For example, if the personal dictionary contains "ALPHA",
-+** (KEEP flag set) and the user adds "alpha" with the KEEP flag clear, a
-+** multiple-variant entry will be created so that "alpha" will be accepted
-+** but only "ALPHA" will actually be kept.
-+#endif
-+*/
-+#ifdef FULLMASKSET
-+#define flagfield     flags
-+#else
-+#define flagfield     mask[MASKSIZE - 1]
-+#endif
-+#define USED          ((MASKTYPE) 1 << (FLAGBASE + 0))
-+#define KEEP          ((MASKTYPE) 1 << (FLAGBASE + 1))
-+#ifdef NO_CAPITALIZATION_SUPPORT
-+#define ALLFLAGS      (USED | KEEP)
-+#else /* NO_CAPITALIZATION_SUPPORT */
-+#define ANYCASE               ((MASKTYPE) 0 << (FLAGBASE + 2))
-+#define ALLCAPS               ((MASKTYPE) 1 << (FLAGBASE + 2))
-+#define CAPITALIZED   ((MASKTYPE) 2 << (FLAGBASE + 2))
-+#define FOLLOWCASE    ((MASKTYPE) 3 << (FLAGBASE + 2))
-+#define CAPTYPEMASK   ((MASKTYPE) 3 << (FLAGBASE + 2))
-+#define MOREVARIANTS  ((MASKTYPE) 1 << (FLAGBASE + 4))
-+#define ALLFLAGS      (USED | KEEP | CAPTYPEMASK | MOREVARIANTS)
-+#define captype(x)    ((x) & CAPTYPEMASK)
-+#endif /* NO_CAPITALIZATION_SUPPORT */
-+
-+/*
-+ * Language tables used to encode prefix and suffix information.
-+ */
-+struct flagent
-+    {
-+    ichar_t *         strip;                  /* String to strip off */
-+    ichar_t *         affix;                  /* Affix to append */
-+    short             flagbit;                /* Flag bit this ent matches */
-+    short             stripl;                 /* Length of strip */
-+    short             affl;                   /* Length of affix */
-+    short             numconds;               /* Number of char conditions */
-+    short             flagflags;              /* Modifiers on this flag */
-+    char              conds[SET_SIZE + MAXSTRINGCHARS]; /* Adj. char conds */
-+    };
-+
-+/*
-+ * Bits in flagflags
-+ */
-+#define FF_CROSSPRODUCT       (1 << 0)                /* Affix does cross-products */
-+#define FF_COMPOUNDONLY       (1 << 1)                /* Afx works in compounds */
-+
-+union ptr_union                                       /* Aid for building flg ptrs */
-+    {
-+    struct flagptr *  fp;                     /* Pointer to more indexing */
-+    struct flagent *  ent;                    /* First of a list of ents */
-+    };
-+
-+struct flagptr
-+    {
-+    union ptr_union   pu;                     /* Ent list or more indexes */
-+    int                       numents;                /* If zero, pu.fp is valid */
-+    };
-+
-+/*
-+ * Description of a single string character type.
-+ */
-+struct strchartype
-+    {
-+    char *            name;                   /* Name of the type */
-+    char *            deformatter;            /* Deformatter to use */
-+    char *            suffixes;               /* File suffixes, null seps */
-+    };
-+
-+/*
-+ * Header placed at the beginning of the hash file.
-+ */
-+struct hashheader
-+    {
-+    unsigned short magic;                     /* Magic number for ID */
-+    unsigned short compileoptions;            /* How we were compiled */
-+    short maxstringchars;                     /* Max # strchrs we support */
-+    short maxstringcharlen;                   /* Max strchr len supported */
-+    short compoundmin;                                /* Min lth of compound parts */
-+    short compoundbit;                                /* Flag 4 compounding roots */
-+    unsigned int stringsize;                  /* Size of string table */
-+    int lstringsize;                          /* Size of lang. str tbl */
-+    unsigned int tblsize;                     /* No. entries in hash tbl */
-+    int stblsize;                             /* No. entries in sfx tbl */
-+    int ptblsize;                             /* No. entries in pfx tbl */
-+    int sortval;                              /* Largest sort ID assigned */
-+    int nstrchars;                            /* No. strchars defined */
-+    int nstrchartype;                         /* No. strchar types */
-+    int strtypestart;                         /* Start of strtype table */
-+    char nrchars[5];                          /* Nroff special characters */
-+    char texchars[13];                                /* TeX special characters */
-+#define TeXleftparen   texchars[0]
-+#define TeXrightparen  texchars[1]
-+#define TeXleftsquare  texchars[2]
-+#define TeXrightsquare texchars[3]
-+#define TeXleftcurly   texchars[4]
-+#define TeXrightcurly  texchars[5]
-+#define TeXlefttangle  texchars[6]
-+#define TeXrighttangle texchars[7]
-+#define TeXbackslash   texchars[8]
-+#define TeXdollar      texchars[9]
-+#define TeXstar        texchars[10]
-+#define TeXdot         texchars[11]
-+#define TeXpercent     texchars[12]
-+    char compoundflag;                                /* Compund-word handling */
-+    char defhardflag;                         /* Default tryveryhard flag */
-+    char flagmarker;                          /* "Start-of-flags" char */
-+    unsigned short sortorder[SET_SIZE + MAXSTRINGCHARS]; /* Sort ordering */
-+    ichar_t lowerconv[SET_SIZE + MAXSTRINGCHARS]; /* Lower-conversion table */
-+    ichar_t upperconv[SET_SIZE + MAXSTRINGCHARS]; /* Upper-conversion table */
-+    char wordchars[SET_SIZE + MAXSTRINGCHARS]; /* NZ for chars found in wrds */
-+    char upperchars[SET_SIZE + MAXSTRINGCHARS]; /* NZ for uppercase chars */
-+    char lowerchars[SET_SIZE + MAXSTRINGCHARS]; /* NZ for lowercase chars */
-+    char boundarychars[SET_SIZE + MAXSTRINGCHARS]; /* NZ for boundary chars */
-+    char stringstarts[SET_SIZE];              /* NZ if char can start str */
-+    char stringchars[MAXSTRINGCHARS][MAXSTRINGCHARLEN + 1]; /* String chars */
-+    unsigned int stringdups[MAXSTRINGCHARS];  /* No. of "base" char */
-+    int dupnos[MAXSTRINGCHARS];                       /* Dup char ID # */
-+    unsigned short magic2;                    /* Second magic for dbl chk */
-+    };
-+
-+/* hash table magic number */
-+#define SPELL_MAGIC                   0x9602
-+
-+/* compile options, put in the hash header for consistency checking */
-+# define MAGICNOTUSED1                0x01
-+# define MAGICNOTUSED2                0x02
-+#if MASKBITS <= 32
-+# define MAGICMASKSET         0x00
-+#else
-+# if MASKBITS <= 64
-+#  define MAGICMASKSET                0x04
-+# else
-+#  if MASKBITS <= 128
-+#   define MAGICMASKSET               0x08
-+#  else
-+#   define MAGICMASKSET               0x0C
-+#  endif
-+# endif
-+#endif
-+
-+#define COMPILEOPTIONS        (MAGICNOTUSED1 | MAGICNOTUSED2 | MAGICMASKSET)
-+
-+/*
-+ * Structure used to record data about successful lookups; these values
-+ * are used in the ins_root_cap routine to produce correct capitalizations.
-+ */
-+struct success
-+    {
-+    struct dent *     dictent;        /* Header of dict entry chain for wd */
-+    struct flagent *  prefix;         /* Prefix flag used, or NULL */
-+    struct flagent *  suffix;         /* Suffix flag used, or NULL */
-+    };
-+
-+/*
-+** Offsets into the nroff special-character array
-+*/
-+#define NRLEFTPAREN   hashheader.nrchars[0]
-+#define NRRIGHTPAREN  hashheader.nrchars[1]
-+#define NRDOT         hashheader.nrchars[2]
-+#define NRBACKSLASH   hashheader.nrchars[3]
-+#define NRSTAR                hashheader.nrchars[4]
-+
-+/*
-+** Values for compoundflag
-+*/
-+#define COMPOUND_NEVER                0       /* Compound words are never good */
-+#define COMPOUND_ANYTIME      1       /* Accept run-together words */
-+#define COMPOUND_CONTROLLED   2       /* Compounds controlled by afx flags */
-+
-+/*
-+** The isXXXX macros normally only check ASCII range, and don't support
-+** the character sets of other languages.  These private versions handle
-+** whatever character sets have been defined in the affix files.
-+*/
-+#define myupper(X)    (hashheader.upperchars[(X)])
-+#define mylower(X)    (hashheader.lowerchars[(X)])
-+#define myspace(X)    (((X) > 0)  &&  ((X) < 0x80) \
-+                        &&  isspace((unsigned char) (X)))
-+#define iswordch(X)   (hashheader.wordchars[(X)])
-+#define isboundarych(X) (hashheader.boundarychars[(X)])
-+#define isstringstart(X) (hashheader.stringstarts[(unsigned char) (X)])
-+#define mytolower(X)  (hashheader.lowerconv[(X)])
-+#define mytoupper(X)  (hashheader.upperconv[(X)])
-+
-+/*
-+** These macros are similar to the ones above, but they take into account
-+** the possibility of string characters.  Note well that they take a POINTER,
-+** not a character.
-+**
-+** The "l_" versions set "len" to the length of the string character as a
-+** handy side effect.  (Note that the global "laststringch" is also set,
-+** and sometimes used, by these macros.)
-+**
-+** The "l1_" versions go one step further and guarantee that the "len"
-+** field is valid for *all* characters, being set to 1 even if the macro
-+** returns false.  This macro is a great example of how NOT to write
-+** readable C.
-+*/
-+#define isstringch(ptr, canon)        (isstringstart (*(ptr)) \
-+                                &&  stringcharlen ((ptr), (canon)) > 0)
-+#define l_isstringch(ptr, len, canon) \
-+                              (isstringstart (*(ptr)) \
-+                                &&  (len = stringcharlen ((ptr), (canon))) \
-+                                  > 0)
-+#define l1_isstringch(ptr, len, canon)        \
-+                              (len = 1, \
-+                                isstringstart (*(ptr)) \
-+                                  &&  ((len = \
-+                                        stringcharlen ((ptr), (canon))) \
-+                                      > 0 \
-+                                    ? 1 : (len = 1, 0)))
-+
-+/*
-+ * Sizes of buffers returned by ichartosstr/strtosichar.
-+ */
-+#define ICHARTOSSTR_SIZE (INPUTWORDLEN + 4 * MAXAFFIXLEN + 4)
-+#define STRTOSICHAR_SIZE ((INPUTWORDLEN + 4 * MAXAFFIXLEN + 4) \
-+                        * sizeof (ichar_t))
-+
-+/*
-+ * termcap variables
-+ */
-+#ifdef MAIN
-+# define S_EXTERN /* nothing */
-+#define Global
-+#else
-+#define Global extern
-+# define S_EXTERN extern
-+#endif
-+
-+#include "wm.h"
-+
-+
-+S_EXTERN char *       BC;     /* backspace if not ^H */
-+S_EXTERN char *       cd;     /* clear to end of display */
-+S_EXTERN char *       cl;     /* clear display */
-+S_EXTERN char *       cm;     /* cursor movement */
-+S_EXTERN char *       ho;     /* home */
-+S_EXTERN char *       nd;     /* non-destructive space */
-+S_EXTERN char *       so;     /* standout */
-+S_EXTERN char *       se;     /* standout end */
-+S_EXTERN int  sg;     /* space taken by so/se */
-+S_EXTERN char *       ti;     /* terminal initialization sequence */
-+S_EXTERN char *       te;     /* terminal termination sequence */
-+S_EXTERN int  li;     /* lines */
-+S_EXTERN int  co;     /* columns */
-+
-+S_EXTERN int  contextsize;    /* number of lines of context to show */
-+S_EXTERN char contextbufs[MAXCONTEXT][BUFSIZ]; /* Context of current line */
-+S_EXTERN int  contextoffset;  /* Offset of line start in contextbufs[0] */
-+S_EXTERN char *       currentchar;    /* Location in contextbufs */
-+S_EXTERN char ctoken[INPUTWORDLEN + MAXAFFIXLEN]; /* Current token as char */
-+S_EXTERN ichar_t      itoken[INPUTWORDLEN + MAXAFFIXLEN]; /* Ctoken as ichar_t str */
-+
-+S_EXTERN char termcap[2048];  /* termcap entry */
-+S_EXTERN char termstr[2048];  /* for string values */
-+S_EXTERN char *       termptr;        /* pointer into termcap, used by tgetstr */
-+
-+S_EXTERN int  numhits;        /* number of hits in dictionary lookups */
-+S_EXTERN struct success
-+              hits[MAX_HITS]; /* table of hits gotten in lookup */
-+
-+S_EXTERN char *       hashstrings;    /* Strings in hash table */
-+S_EXTERN struct hashheader
-+              hashheader;     /* Header of hash table */
-+S_EXTERN struct dent *
-+              hashtbl;        /* Main hash table, for dictionary */
-+S_EXTERN int  hashsize;       /* Size of main hash table */
-+
-+
-+S_EXTERN int  aflag;          /* NZ if -a or -A option specified */
-+S_EXTERN int  cflag;          /* NZ if -c (crunch) option */
-+S_EXTERN int  lflag;          /* NZ if -l (list) option */
-+S_EXTERN int  incfileflag;    /* whether xgets() acts exactly like gets() */
-+Global Logical        nodictflag;     /* NZ if dictionary not needed */
-+
-+S_EXTERN int  uerasechar;     /* User's erase character, from stty */
-+S_EXTERN int  ukillchar;      /* User's kill character */
-+
-+S_EXTERN unsigned int laststringch; /* Number of last string character */
-+S_EXTERN int  defdupchar;     /* Default duplicate string type */
-+
-+S_EXTERN unsigned int numpflags;      /* Number of prefix flags in table */
-+S_EXTERN unsigned int numsflags;      /* Number of suffix flags in table */
-+S_EXTERN struct flagptr *pflagindex;
-+                                      /* Fast index to pflaglist */
-+S_EXTERN struct flagent *pflaglist;   /* Prefix flag control list */
-+S_EXTERN struct flagptr *sflagindex;
-+                                      /* Fast index to sflaglist */
-+S_EXTERN struct flagent *sflaglist;   /* Suffix flag control list */
-+
-+S_EXTERN struct strchartype *         /* String character type collection */
-+              chartypes;
-+
-+S_EXTERN FILE *       infile;                 /* File being corrected */
-+S_EXTERN FILE *       outfile;                /* Corrected copy of infile */
-+
-+S_EXTERN char *       askfilename;            /* File specified in -f option */
-+
-+S_EXTERN int  changes;                /* NZ if changes made to cur. file */
-+S_EXTERN int  readonly;               /* NZ if current file is readonly */
-+S_EXTERN int  quit;                   /* NZ if we're done with this file */
-+
-+#define MAXPOSSIBLE   100     /* Max no. of possibilities to generate */
-+
-+S_EXTERN char possibilities[MAXPOSSIBLE][INPUTWORDLEN + MAXAFFIXLEN];
-+                              /* Table of possible corrections */
-+S_EXTERN int  pcount;         /* Count of possibilities generated */
-+S_EXTERN int  maxposslen;     /* Length of longest possibility */
-+S_EXTERN int  easypossibilities; /* Number of "easy" corrections found */
-+                              /* ..(defined as those using legal affixes) */
-+
-+Global                Logical inited;
-+/*
-+ * The following array contains a list of characters that should be tried
-+ * in "missingletter."  Note that lowercase characters are omitted.
-+ */
-+S_EXTERN int  Trynum;         /* Size of "Try" array */
-+S_EXTERN ichar_t      Try[SET_SIZE + MAXSTRINGCHARS];
-+
-+/*
-+ * Initialized variables.  These are generated using macros so that they
-+ * may be consistently declared in all programs.  Numerous examples of
-+ * usage are given below.
-+ */
-+#ifdef MAIN
-+#define S_INIT(decl, init)    decl = init
-+#else
-+#define S_INIT(decl, init)    extern decl
-+#endif
-+
-+#ifdef MINIMENU
-+S_INIT (int minimenusize, 2);         /* MUST be either 2 or zero */
-+#else /* MINIMENU */
-+S_INIT (int minimenusize, 0);         /* MUST be either 2 or zero */
-+#endif /* MINIMENU */
-+
-+S_INIT (int eflag, 0);                        /* NZ for expand mode */
-+S_INIT (int dumpflag, 0);                     /* NZ to do dump mode */
-+S_INIT (int fflag, 0);                        /* NZ if -f specified */
-+#ifndef USG
-+S_INIT (int sflag, 0);                        /* NZ to stop self after EOF */
-+#endif
-+S_INIT (int vflag, 0);                        /* NZ to display characters as M-xxx */
-+S_INIT (int xflag, DEFNOBACKUPFLAG);  /* NZ to suppress backups */
-+S_INIT (int deftflag, -1);            /* NZ for TeX mode by default */
-+S_INIT (int tflag, DEFTEXFLAG);               /* NZ for TeX mode in current file */
-+S_INIT (int prefstringchar, -1);              /* Preferred string character type */
-+
-+S_INIT (int terse, 0);                        /* NZ for "terse" mode */
-+
-+S_INIT (char tempfile[MAXPATHLEN], "");       /* Name of file we're spelling into */
-+
-+S_INIT (int minword, MINWORD);                /* Longest always-legal word */
-+S_INIT (int sortit, 1);                       /* Sort suggestions alphabetically */
-+S_INIT (int compoundflag, -1);                /* How to treat compounds: see above */
-+S_INIT (int tryhardflag, -1);         /* Always call tryveryhard */
-+
-+S_INIT (char * currentfile, NULL);    /* Name of current input file */
-+
-+/* Odd numbers for math mode in LaTeX; even for LR or paragraph mode */
-+S_INIT (int math_mode, 0);
-+/* P -- paragraph or LR mode
-+ * b -- parsing a \begin statement
-+ * e -- parsing an \end statement
-+ * r -- parsing a \ref type of argument.
-+ * m -- looking for a \begin{minipage} argument.
-+ */
-+S_INIT (char LaTeX_Mode, 'P');
-+
-+#include "i_proto.h"
-diff -urBbN vim64.org/src/spell/local.h vim64/src/spell/local.h
---- vim64.org/src/spell/local.h        1970-01-01 01:00:00.000000000 +0100
-+++ vim64/src/spell/local.h    2005-10-17 12:49:17.510834696 +0200
-@@ -0,0 +1,338 @@
-+/*
-+ * Written by Eli Zaretskii <eliz@is.elta.co.il>
-+ *
-+ * This is local.h file suitable for compiling Ispell on MS-DOS systems
-+ * with version 2.x of DJGPP port of GNU C/C++ compiler.
-+ *
-+ * $Id$
-+ *
-+ * $Log$
-+ */
-+
-+/*
-+ * WARNING WARNING WARNING
-+ *
-+ * This file is *NOT* a normal C header file!  Although it uses C
-+ * syntax and is included in C programs, it is also processed by shell
-+ * scripts that are very stupid about format.
-+ *
-+ * Do not try to use #if constructs to configure this file for more
-+ * than one configuration.  Do not place whitespace after the "#" in
-+ * "#define".  Do not attempt to disable lines by commenting them out.
-+ * Do not use backslashes to reduce the length of long lines.
-+ * None of these things will work the way you expect them to.
-+ *
-+ * WARNING WARNING WARNING
-+ */
-+
-+/*
-+** Things that normally go in a Makefile.  Define these just like you
-+** might in the Makefile, except you should use #define instead of
-+** make's assignment syntax.  Everything must be double-quoted, and
-+** (unlike make) you can't use any sort of $-syntax to pick up the
-+** values of other definitions.
-+*/
-+
-+#define CC      "gcc"
-+#define CFLAGS  "-O2 -g"
-+#define YACC    "bison -y"
-+
-+/*
-+** TERMLIB - DJGPP doesn't have one, it uses direct screen writes.
-+*/
-+#define TERMLIB ""
-+
-+/*
-+** Where to install various components of ispell.  BINDIR contains
-+** binaries.  LIBDIR contains hash tables and affix files.  ELISPDIR
-+** contains emacs lisp files (if any) and TEXINFODIR contains emacs
-+** TeXinfo files.  MAN1DIR and MAN1EXT will hold the chapter-1 and
-+** chapter-4 manual pages, respectively.
-+**
-+** If you intend to use multiple dictionary files, I would suggest
-+** LIBDIR be a directory which will contain nothing else, so sensible
-+** names can be constructed for the -d option without conflict.
-+*/
-+#define BINDIR      "/usr/bin"
-+#define LIBDIR      "/usr/lib/ispell"
-+#define ELISPDIR    "/usr/lib/emacs/site-lisp"
-+#define TEXINFODIR  "/usr/share/info"
-+#define MAN1DIR     "/usr/share/man/man1"
-+#define MAN4DIR     "/usr/share/man/man4"
-+
-+/*
-+** List of all hash files (languages) which will be supported by ispell.
-+**
-+** This variable has a complex format so that many options can be
-+** specified.  The format is as follows:
-+**
-+**    <language>[,<make-options>...] [<language> [,<make-options> ...] ...]
-+**
-+** where
-+**
-+**    language        is the name of a subdirectory of the
-+**                    "languages" directory
-+**    make-options    are options that are to be passed to "make" in
-+**                    the specified directory.  The make-options
-+**                    should not, in general, specify a target, as
-+**                    this will be provided by the make process.
-+**
-+** For example, if LANGUAGES is:
-+**
-+**    "{american,EXTRADICT=/usr/dict/words /usr/dict/web2} {deutsch}",
-+**
-+** then the American-English and Deutsch (German) languages will be supported,
-+** and when the English dictionary is built, the variable
-+** 'EXTRADICT=/usr/dict/words /usr/dict/web2' will be passed to the makefile.
-+**
-+** Notes on the syntax: The makefile is not very robust.  If you have
-+** make problems, or if make seems to in the language-subdirs
-+** dependency, check your syntax.  The makefile adds single quotes to
-+** the individual variables in the LANGUAGES specification, so don't
-+** use quotes of any kind.
-+**
-+** In the future, the first language listed in this variable will
-+** become the default, and the DEFHASH, DEFLANG, and DEFPAFF,
-+** variables will all become obsolete.  So be sure to put your default
-+** language first, to make later conversion easier!
-+**
-+** Notes on options for the various languages will be found in the
-+** Makefiles for those languages.  Some of those languages may require
-+** you to also change various limits limits like MASKBITS or the
-+** length parameters.
-+**
-+** A special note on the English language: because the British and
-+** American dialects use different spelling, you should usually select
-+** one or the other of these.  If you select both, the setting of
-+** MASTERHASH will determine which becomes the language linked to
-+** DEFHASH (which will usually be named english.hash).
-+**
-+** !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-+** !!! Note the pathname for the `words' file: it might be different !!!
-+** !!! If you don't have this file, make EXTRADICT empty             !!!
-+** !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-+*/
-+#define LANGUAGES "{american,MASTERDICTS=americax.med,HASHFILES=amermedx.hash,EXTRADICT=/usr/lib/ispell/words}"
-+
-+/*
-+** Master hash file for DEFHASH.  This is the name of a hash file
-+** built by a language Makefile.  It should be the most-popular hash
-+** file on your system, because it is the one that will be used by
-+** default.  It must be listed in LANGUAGES, above.
-+*/
-+#define MASTERHASH    "polish.hash"
-+
-+/*
-+** Default native-language hash file.  This is the name given to the
-+** hash table that will be used if no language is specified to
-+** ispell.  It is a link to MASTERHASH, above.
-+*/
-+#define DEFHASH "polish.hash"
-+
-+/*
-+** If your sort command accepts the -T switch to set temp file
-+** locations (try it out; on some systems it exists but is
-+** undocumented), make the following variable the null string.
-+** Otherwise leave it as the sed script.
-+**
-+** With DJGPP, you will probably use GNU Sort which accepts -T, so:
-+*/
-+#define SORTTMP ""
-+
-+/*
-+** If your system has the rename(2) system call, define HAS_RENAME and
-+** ispell will use that call to rename backup files.  Otherwise, it
-+** will use link/unlink.  There is no harm in this except on MS-DOS,
-+** which might not support link/unlink (DJGPP does, but also has rename).
-+*/
-+#define HAS_RENAME 1
-+
-+/* environment variable for user's word list */
-+#ifndef PDICTVAR
-+#define PDICTVAR "WORDLIST"
-+#endif
-+
-+/*
-+** Prefix part of default private dictionary.  Under MS-DOS 8.3
-+** filename limitation, we are in trouble...
-+*/
-+#define DEFPDICT ".ispell_"
-+
-+/* old place to look for default word list */
-+#define OLDPDICT   ".isp."
-+
-+/*
-+** mktemp template for temporary file - MUST contain 6 consecutive X's.
-+** On MSDOS the directory part of TEMPNAME is only used if neither $TMP
-+** nor $TEMP nor $TMPDIR (in that order) are defined.  If any of these
-+** variables is defined, the filename part of TEMPNAME is appended to
-+** their value.
-+*/
-+#define TEMPNAME "/tmp/isXXXXXX"
-+
-+/*
-+** If REGEX_LOOKUP is NOT defined, the lookup command (L) will use the look(1)
-+** command (if available) or the egrep command.  If REGEX_LOOKUP is defined,
-+** the lookup command will use the internal dictionary and the
-+** regular-expression library (which you must supply separately.
-+** DJGPP v2 has POSIX regexp functions.
-+*/
-+#ifndef FEAT_SPELL_HL
-+#define REGEX_LOOKUP    1
-+#endif
-+
-+/*
-+** Choose the proper type of regular-expression routines here.  BSD
-+** and public-domain systems have routines called re_comp and re_exec;
-+** System V uses regcmp and regex.
-+*/
-+#include <sys/types.h>
-+#include <regex.h>
-+#define REGCTYPE              regex_t *
-+#define REGCMP(re,str)                (regcomp (re, str, 0), re)
-+#define REGEX(re, str, dummy) \
-+  (re != 0 && regexec (re, str, 0, 0, 0) == 0 ? (char *)1 : NULL)
-+#define REGFREE(re) \
-+  do {                                                        \
-+      if (re == 0)                                    \
-+        re = (regex_t *)calloc (1, sizeof (regex_t)); \
-+      else                                            \
-+      regfree(re);                                    \
-+  } while (0)
-+
-+/*
-+**
-+** The 2 following definitions are only meaningfull if you don't use
-+** any regex library.
-+*/
-+/* path to egrep (use speeded up version if available);
-+   defined without explicit path, since there are no
-+   standard places for programs on MS-DOS.  */
-+#define  EGREPCMD "egrep -i"
-+
-+/* path to wordlist for Lookup command (typically /usr/dict/{words|web2}) */
-+/* note that /usr/dict/web2 is usually a bad idea due to obscure words */
-+#undef WORDS
-+
-+/*
-+** FIXME: The filename truncation below is not flexible enough for DJGPP
-+**      which can support long filenames on some platforms, since we
-+**      will only know if the support is available at runtime.
-+*/
-+
-+/* max file name length (will truncate to fit BAKEXT) if not in sys/param.h */
-+#ifdef NAME_MAX
-+#define MAXNAMLEN NAME_MAX
-+#else
-+#define MAXNAMLEN 12
-+#endif
-+
-+#define MAXEXTLEN        4    /* max. extension length including '.'   */
-+#define MAXBASENAMELEN   8    /* max. base filename length without ext */
-+
-+/* define if you want .bak file names truncated to MAXNAMLEN characters */
-+/* On MS-DOS, we really have no choice... */
-+#define TRUNCATEBAK 1
-+
-+/*
-+** This is the extension that will be added to backup files.
-+** On MS-DOS, it makes sense to use the shortest possible extension.
-+*/
-+#define       BAKEXT  "~"
-+
-+/*
-+** Define the following to suppress the 8-bit character feature.
-+** FIXME: does this defeat support of foreign languages?
-+*/ 
-+/*#define NO8BIT  1 */
-+#ifdef NO8BIT
-+#undef NO8BIT
-+#endif
-+
-+/*
-+** Define this if you want to use the shell for interpretation of commands
-+** issued via the "L" command, "^Z" under System V, and "!".  If this is
-+** not defined then a direct spawnvp() will be used in place of the
-+** normal system().  This may speed up these operations if the SHELL
-+** environment variable points to a Unix-like shell (such as `sh' or `bash').
-+**
-+** However, if you undefine USESH, commands which use pipes, redirection
-+** and shell wildcards won't work, and you will need support for the SIGTSTP
-+** signal, for the above commands to work at all.
-+*/
-+
-+#define USESH 1
-+
-+/*
-+** Define this if you want to be able to type any command at a "type space
-+** to continue" prompt.
-+*/
-+#define COMMANDFORSPACE 1
-+
-+/*
-+** The next three variables are used to provide a variable-size context
-+** display at the bottom of the screen.  Normally, the user will see
-+** a number of lines equal to CONTEXTPCT of his screen, rounded down
-+** (thus, with CONTEXTPCT == 10, a 24-line screen will produce two lines
-+** of context).  The context will never be greater than MAXCONTEXT or
-+** less than MINCONTEXT.  To disable this feature entirely, set MAXCONTEXT
-+** and MINCONTEXT to the same value.  To round context percentages up,
-+** define CONTEXTROUNDUP.
-+**
-+** Warning: don't set MAXCONTEXT ridiculously large.  There is a
-+** static buffer of size MAXCONTEXT*BUFSIZ; since BUFSIZ is frequently
-+** 1K or larger, this can create a remarkably large executable.
-+*/
-+#define CONTEXTPCT    20      /* Use 20% of the screen for context */
-+#define MINCONTEXT    2       /* Always show at least 2 lines of context */
-+#define MAXCONTEXT    10      /* Never show more than 10 lines of context */
-+#define CONTEXTROUNDUP        1       /* Round context up */
-+
-+/*
-+** Define this if you want the "mini-menu," which gives the most important
-+** options at the bottom of the screen, to be the default (in any case, it
-+** can be controlled with the "-M" switch).
-+*/
-+#define MINIMENU
-+
-+/*
-+** Redefine GETKEYSTROKE() to whatever appropriate on some MS-DOS systems
-+** where getchar() doesn't operate properly in raw mode.
-+*/
-+#ifdef __DJGPP__
-+#include <pc.h>
-+#include <keys.h>
-+#define GETKEYSTROKE()        getxkey()
-+#else
-+#define GETKEYSTROKE()        getchar()
-+#endif
-+
-+/*
-+** We include <fcntl.h> to have the definition of O_BINARY.  The
-+** configuration script will notice this and define MSDOS_BINARY_OPEN.
-+*/
-+#include <fcntl.h>
-+
-+/*
-+** Environment variable to use to locate the home directory.  On DOS
-+** systems we set this to ISPELL_HOME to avoid conflicts with
-+** other programs that look for a HOME environment variable. We're not on DOS.
-+*/
-+#define HOME              "HOME"
-+#define PDICTHOME         "."
-+#define OPTIONVAR         "ISPELL_OPTIONS"
-+#define LIBRARYVAR        "ISPELL_DICTDIR"
-+
-+/*
-+** On MS-DOS systems, we define the following variables so that
-+** ispell's files have legal suffixes.  Note that these suffixes
-+** must agree with the way you've defined dictionary files which
-+** incorporate these suffixes.
-+**
-+** Actually, it is not recommended at all to change the suffixes,
-+** since they are hardwired in the Makefile's under languages/
-+** subdirectory, and MS-DOS will silently truncate excess letters anyway.
-+*/
-+#define HASHSUFFIX    ".hash"
-+#define STATSUFFIX    ".sta"
-+#define COUNTSUFFIX   ".cnt"
-diff -urBbN vim64.org/src/spell/lookup.c vim64/src/spell/lookup.c
---- vim64.org/src/spell/lookup.c       1970-01-01 01:00:00.000000000 +0100
-+++ vim64/src/spell/lookup.c   2005-10-17 12:49:17.511834544 +0200
-@@ -0,0 +1,534 @@
-+#ifndef lint
-+static char Rcs_Id[] =
-+    "$Id$";
-+#endif
-+
-+/*
-+ * lookup.c - see if a word appears in the dictionary
-+ *
-+ * Pace Willisson, 1983
-+ *
-+ * Copyright 1987, 1988, 1989, 1992, 1993, Geoff Kuenning, Granada Hills, CA
-+ * All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ *
-+ * 1. Redistributions of source code must retain the above copyright
-+ *    notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ *    notice, this list of conditions and the following disclaimer in the
-+ *    documentation and/or other materials provided with the distribution.
-+ * 3. All modifications to the source code must be clearly marked as
-+ *    such.  Binary redistributions based on modified source code
-+ *    must be clearly marked as modified versions in the documentation
-+ *    and/or other materials provided with the distribution.
-+ * 4. All advertising materials mentioning features or use of this software
-+ *    must display the following acknowledgment:
-+ *      This product includes software developed by Geoff Kuenning and
-+ *      other unpaid contributors.
-+ * 5. The name of Geoff Kuenning may not be used to endorse or promote
-+ *    products derived from this software without specific prior
-+ *    written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY GEOFF KUENNING AND CONTRIBUTORS ``AS IS'' AND
-+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED.  IN NO EVENT SHALL GEOFF KUENNING OR CONTRIBUTORS BE LIABLE
-+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+ * SUCH DAMAGE.
-+ */
-+
-+/*
-+ * $Log$
-+ * Revision 1.42  1995/01/08  23:23:42  geoff
-+ * Support MSDOS_BINARY_OPEN when opening the hash file to read it in.
-+ *
-+ * Revision 1.41  1994/01/25  07:11:51  geoff
-+ * Get rid of all old RCS log lines in preparation for the 3.1 release.
-+ *
-+ */
-+
-+#include "ispell.h"
-+#include "msgs.h"
-+#include <stdlib.h>
-+#include <fcntl.h>
-+#ifdef WIN32
-+#include <io.h>
-+#endif
-+
-+#ifdef INDEXDUMP
-+Local void    dumpindex (struct flagptr * indexp, int depth);
-+#endif /* INDEXDUMP */
-+
-+Public                Logical inited = False;
-+
-+char err_buf[256];
-+
-+Public char * 
-+linit (char * hashname)
-+{
-+    int                       hashfd;
-+    register int      i;
-+    register struct dent * dp;
-+    struct flagent *  entry;
-+    struct flagptr *  ind;
-+    int                       nextchar;
-+    int                       viazero;
-+    register ichar_t *        cp;
-+
-+    if (inited)
-+      return(NULL);
-+
-+    if(hashtbl != NULL)
-+      free(hashtbl);
-+    numpflags = 0;
-+    numsflags = 0;
-+    if(pflagindex != NULL)
-+      free(pflagindex);
-+    pflagindex = NULL;
-+    if(sflagindex != NULL)
-+      free(sflagindex);
-+    sflagindex = NULL;
-+    if((pflagindex = (struct flagptr *)calloc(SET_SIZE + MAXSTRINGCHARS, 
-+                                          sizeof(struct flagptr))) == NULL)
-+       {
-+      (void) sprintf(err_buf, LOOKUP_C_NO_HASH_SPACE);
-+      return(err_buf);
-+       }
-+    if((sflagindex = (struct flagptr *)calloc(SET_SIZE + MAXSTRINGCHARS, 
-+                                          sizeof(struct flagptr))) == NULL)
-+       {
-+      (void) sprintf(err_buf, LOOKUP_C_NO_HASH_SPACE);
-+      return(err_buf);
-+       }
-+    hashtbl = NULL;
-+    if ((hashfd = open (hashname, 0 | MSDOS_BINARY_OPEN)) < 0)
-+      {
-+      (void) sprintf(err_buf, CANT_OPEN, hashname);
-+      return(err_buf);
-+      }
-+
-+    hashsize = read (hashfd, (char *) &hashheader, sizeof hashheader);
-+    if (hashsize < sizeof hashheader)
-+      {
-+      if (hashsize < 0)
-+          (void) sprintf(err_buf, LOOKUP_C_CANT_READ, hashname);
-+      else if (hashsize == 0)
-+          (void) sprintf(err_buf, LOOKUP_C_NULL_HASH, hashname);
-+      else
-+          (void) sprintf(err_buf, LOOKUP_C_SHORT_HASH (hashname, hashsize,
-+                                                  (int) sizeof hashheader));
-+      (void) close (hashfd);
-+      return(err_buf);
-+      }
-+    else if (hashheader.magic != SPELL_MAGIC)
-+      {
-+      (void) sprintf(err_buf, 
-+                  LOOKUP_C_BAD_MAGIC (hashname, (unsigned int) SPELL_MAGIC,
-+                                          (unsigned int) hashheader.magic));
-+      (void) close (hashfd);
-+      return(err_buf);
-+      }
-+    else if (hashheader.magic2 != SPELL_MAGIC)
-+      {
-+      (void) sprintf(err_buf,
-+                    LOOKUP_C_BAD_MAGIC2 (hashname, (unsigned int) SPELL_MAGIC,
-+                                          (unsigned int) hashheader.magic2));
-+      (void) close (hashfd);
-+      return(err_buf);
-+      }
-+    else if (hashheader.compileoptions != COMPILEOPTIONS
-+                        ||  hashheader.maxstringchars != MAXSTRINGCHARS
-+                        ||  hashheader.maxstringcharlen != MAXSTRINGCHARLEN)
-+      {
-+      (void) sprintf(err_buf,
-+        LOOKUP_C_BAD_OPTIONS ((unsigned int) hashheader.compileoptions,
-+          hashheader.maxstringchars, hashheader.maxstringcharlen,
-+          (unsigned int) COMPILEOPTIONS, MAXSTRINGCHARS, MAXSTRINGCHARLEN));
-+      (void) close (hashfd);
-+      return(err_buf);
-+      }
-+    if (nodictflag)
-+      {
-+      /*
-+       * Dictionary is not needed - create an empty dummy table.  We
-+       * actually have to have one entry since the hash
-+       * algorithm involves a divide by the table size
-+       * (actually modulo, but zero is still unacceptable).
-+       * So we create an empty entry.
-+       */
-+      hashsize = 1;           /* This prevents divides by zero */
-+      hashtbl = (struct dent *) calloc (1, sizeof (struct dent));
-+      if (hashtbl == NULL)
-+          {
-+          (void) sprintf(err_buf, LOOKUP_C_NO_HASH_SPACE);
-+          (void) close (hashfd);
-+          return(err_buf);
-+          }
-+      hashtbl[0].word = NULL;
-+      hashtbl[0].next = NULL;
-+      hashtbl[0].flagfield &= ~(USED | KEEP);
-+      /* The flag bits don't matter, but calloc cleared them. */
-+      if(hashstrings != NULL)
-+          free(hashstrings);
-+      if((hashstrings = (char *) calloc (1, (unsigned) hashheader.lstringsize))
-+                                                                      == NULL)
-+         {
-+          (void) sprintf(err_buf, LOOKUP_C_NO_HASH_SPACE);
-+          (void) close (hashfd);
-+          return(err_buf);
-+         }
-+      }
-+    else
-+      {
-+      if(hashtbl != NULL)
-+          free(hashtbl);
-+      if((hashtbl = (struct dent *)
-+          malloc ((unsigned) hashheader.tblsize * sizeof (struct dent))) == NULL)
-+         {
-+          (void) sprintf(err_buf, LOOKUP_C_NO_HASH_SPACE);
-+          (void) close (hashfd);
-+          return(err_buf);
-+         }
-+      hashsize = hashheader.tblsize;
-+      if(hashstrings != NULL)
-+          free(hashstrings);
-+      if((hashstrings = (char *) malloc ((unsigned) hashheader.stringsize)) == NULL)
-+         {
-+          (void) sprintf(err_buf, LOOKUP_C_NO_HASH_SPACE);
-+          (void) close (hashfd);
-+          return(err_buf);
-+         }
-+      }
-+    numsflags = hashheader.stblsize;
-+    numpflags = hashheader.ptblsize;
-+    if(sflaglist != NULL)
-+      free(sflaglist);
-+    if((sflaglist = (struct flagent *)
-+                malloc ((numsflags + numpflags) * sizeof (struct flagent))) == NULL)
-+      {
-+      (void) sprintf(err_buf, LOOKUP_C_NO_HASH_SPACE);
-+      (void) close (hashfd);
-+      return(err_buf);
-+      }
-+    pflaglist = sflaglist + numsflags;
-+
-+    if (nodictflag)
-+      {
-+      /*
-+       * Read just the strings for the language table, and
-+       * skip over the rest of the strings and all of the
-+       * hash table.
-+       */
-+      if (read (hashfd, hashstrings, (unsigned) hashheader.lstringsize)
-+                                                != hashheader.lstringsize)
-+          {
-+          (void) sprintf(err_buf, LOOKUP_C_BAD_FORMAT);
-+          (void) close (hashfd);
-+          return(err_buf);
-+          }
-+      (void) lseek (hashfd,
-+            (long) hashheader.stringsize - (long) hashheader.lstringsize
-+              + (long) hashheader.tblsize * (long) sizeof (struct dent), 1);
-+      }
-+    else
-+      {
-+      if ((unsigned int)read (hashfd, hashstrings, 
-+              (unsigned int) hashheader.stringsize) != hashheader.stringsize
-+                ||  (unsigned int)read (hashfd, (char *) hashtbl, (unsigned)
-+                               hashheader.tblsize * sizeof (struct dent))
-+                  != (unsigned int) hashheader.tblsize * sizeof (struct dent))
-+          {
-+          (void) sprintf(err_buf, LOOKUP_C_BAD_FORMAT);
-+          (void) close (hashfd);
-+          return(err_buf);
-+          }
-+      }
-+    if ((unsigned int)read (hashfd, (char *) sflaglist,
-+           (unsigned int)  (numsflags + numpflags) * sizeof (struct flagent))
-+                    != (unsigned int)(numsflags + numpflags) * sizeof (struct flagent))
-+      {
-+      (void) sprintf(err_buf, LOOKUP_C_BAD_FORMAT);
-+      (void) close (hashfd);
-+      return(err_buf);
-+      }
-+    (void) close (hashfd);
-+
-+    if (!nodictflag)
-+      {
-+      for (i = hashsize, dp = hashtbl;  --i >= 0;  dp++)
-+          {
-+          if (dp->word == (char *) -1)
-+              dp->word = NULL;
-+          else
-+              dp->word = &hashstrings [ (int)(dp->word) ];
-+          if (dp->next == (struct dent *) -1)
-+              dp->next = NULL;
-+          else
-+              dp->next = &hashtbl [ (int)(dp->next) ];
-+          }
-+      }
-+
-+    for (i = numsflags + numpflags, entry = sflaglist; --i >= 0; entry++)
-+      {
-+      if (entry->stripl)
-+          entry->strip = (ichar_t *) &hashstrings[(int) entry->strip];
-+      else
-+          entry->strip = NULL;
-+      if (entry->affl)
-+          entry->affix = (ichar_t *) &hashstrings[(int) entry->affix];
-+      else
-+          entry->affix = NULL;
-+      }
-+    /*
-+    ** Warning - 'entry' and 'i' are reset in the body of the loop
-+    ** below.  Don't try to optimize it by (e.g.) moving the decrement
-+    ** of i into the loop condition.
-+    */
-+    for (i = numsflags, entry = sflaglist;  i > 0;  i--, entry++)
-+      {
-+      if (entry->affl == 0)
-+          {
-+          cp = NULL;
-+          ind = &sflagindex[0];
-+          viazero = 1;
-+          }
-+      else
-+          {
-+          cp = entry->affix + entry->affl - 1;
-+          ind = &sflagindex[*cp];
-+          viazero = 0;
-+          while (ind->numents == 0  &&  ind->pu.fp != NULL)
-+              {
-+              if (cp == entry->affix)
-+                  {
-+                  ind = &ind->pu.fp[0];
-+                  viazero = 1;
-+                  }
-+              else
-+                  {
-+                  ind = &ind->pu.fp[*--cp];
-+                  viazero = 0;
-+                  }
-+              }
-+          }
-+      if (ind->numents == 0)
-+          ind->pu.ent = entry;
-+      ind->numents++;
-+      /*
-+      ** If this index entry has more than MAXSEARCH flags in
-+      ** it, we will split it into subentries to reduce the
-+      ** searching.  However, the split doesn't make sense in
-+      ** two cases:  (a) if we are already at the end of the
-+      ** current affix, or (b) if all the entries in the list
-+      ** have identical affixes.  Since the list is sorted, (b)
-+      ** is true if the first and last affixes in the list
-+      ** are identical.
-+      */
-+      if (!viazero  &&  ind->numents >= MAXSEARCH &&
-+                              icharcmp (entry->affix, ind->pu.ent->affix) != 0)
-+          {
-+          /* Sneaky trick:  back up and reprocess */
-+          entry = ind->pu.ent - 1; /* -1 is for entry++ in loop */
-+          i = numsflags - (entry - sflaglist);
-+          if((ind->pu.fp = (struct flagptr *)
-+                  calloc ((unsigned) (SET_SIZE + hashheader.nstrchars),
-+                                                sizeof (struct flagptr))) == NULL)
-+              {
-+              (void) sprintf(err_buf, LOOKUP_C_NO_LANG_SPACE);
-+              return(err_buf);
-+              }
-+          ind->numents = 0;
-+          }
-+      }
-+    /*
-+    ** Warning - 'entry' and 'i' are reset in the body of the loop
-+    ** below.  Don't try to optimize it by (e.g.) moving the decrement
-+    ** of i into the loop condition.
-+    */
-+    for (i = numpflags, entry = pflaglist;  i > 0;  i--, entry++)
-+      {
-+      if (entry->affl == 0)
-+          {
-+          cp = NULL;
-+          ind = &pflagindex[0];
-+          viazero = 1;
-+          }
-+      else
-+          {
-+          cp = entry->affix;
-+          ind = &pflagindex[*cp++];
-+          viazero = 0;
-+          while (ind->numents == 0  &&  ind->pu.fp != NULL)
-+              {
-+              if (*cp == 0)
-+                  {
-+                  ind = &ind->pu.fp[0];
-+                  viazero = 1;
-+                  }
-+              else
-+                  {
-+                  ind = &ind->pu.fp[*cp++];
-+                  viazero = 0;
-+                  }
-+              }
-+          }
-+      if (ind->numents == 0)
-+          ind->pu.ent = entry;
-+      ind->numents++;
-+      /*
-+      ** If this index entry has more than MAXSEARCH flags in
-+      ** it, we will split it into subentries to reduce the
-+      ** searching.  However, the split doesn't make sense in
-+      ** two cases:  (a) if we are already at the end of the
-+      ** current affix, or (b) if all the entries in the list
-+      ** have identical affixes.  Since the list is sorted, (b)
-+      ** is true if the first and last affixes in the list
-+      ** are identical.
-+      */
-+      if (!viazero  &&  ind->numents >= MAXSEARCH
-+                    &&  icharcmp (entry->affix, ind->pu.ent->affix) != 0)
-+          {
-+          /* Sneaky trick:  back up and reprocess */
-+          entry = ind->pu.ent - 1; /* -1 is for entry++ in loop */
-+          i = numpflags - (entry - pflaglist);
-+          ind->pu.fp =
-+                (struct flagptr *) calloc (SET_SIZE + hashheader.nstrchars,
-+                                                  sizeof (struct flagptr));
-+          if (ind->pu.fp == NULL)
-+              {
-+              (void) sprintf(err_buf, LOOKUP_C_NO_LANG_SPACE);
-+              return(err_buf);
-+              }
-+          ind->numents = 0;
-+          }
-+      }
-+#ifdef INDEXDUMP
-+    (void) sprintf(err_buf, "Prefix index table:");
-+    dumpindex (pflagindex, 0);
-+    (void) sprintf(err_buf, "Suffix index table:");
-+    dumpindex (sflagindex, 0);
-+#endif
-+    if (hashheader.nstrchartype == 0)
-+      chartypes = NULL;
-+    else
-+      {
-+      chartypes = (struct strchartype *)
-+            calloc (1, hashheader.nstrchartype * sizeof (struct strchartype));
-+      if (chartypes == NULL)
-+          {
-+          (void) sprintf(err_buf, LOOKUP_C_NO_LANG_SPACE);
-+          return(err_buf);
-+          }
-+      for (i = 0, nextchar = hashheader.strtypestart;
-+                                            i < hashheader.nstrchartype; i++)
-+          {
-+          chartypes[i].name = &hashstrings[nextchar];
-+          nextchar += strlen (chartypes[i].name) + 1;
-+          chartypes[i].deformatter = &hashstrings[nextchar];
-+          nextchar += strlen (chartypes[i].deformatter) + 1;
-+          chartypes[i].suffixes = &hashstrings[nextchar];
-+          while (hashstrings[nextchar] != '\0')
-+              nextchar += strlen (&hashstrings[nextchar]) + 1;
-+          nextchar++;
-+          }
-+      }
-+    inited = True;
-+    return (NULL);
-+}
-+
-+#ifdef INDEXDUMP
-+Local void 
-+dumpindex (
-+    register struct flagptr * indexp,
-+    register int              depth)
-+{
-+    register int              i;
-+    int                               j;
-+    int                               k;
-+    char                      stripbuf[INPUTWORDLEN + 4 * MAXAFFIXLEN + 4];
-+
-+    for (i = 0;  i < SET_SIZE + hashheader.nstrchars;  i++, indexp++)
-+      {
-+      if (indexp->numents == 0  &&  indexp->pu.fp != NULL)
-+          {
-+          for (j = depth;  --j >= 0;  )
-+              (void) putc (' ', stderr);
-+          if (i >= ' '  &&  i <= '~')
-+              (void) putc (i, stderr);
-+          else
-+              (void) fprintf (stderr, "0x%x", i);
-+          (void) putc ('\n', stderr);
-+          dumpindex (indexp->pu.fp, depth + 1);
-+          }
-+      else if (indexp->numents)
-+          {
-+          for (j = depth;  --j >= 0;  )
-+              (void) putc (' ', stderr);
-+          if (i >= ' '  &&  i <= '~')
-+              (void) putc (i, stderr);
-+          else
-+              (void) fprintf (stderr, "0x%x", i);
-+          (void) fprintf (stderr, " -> %d entries\n", indexp->numents);
-+          for (k = 0;  k < indexp->numents;  k++)
-+              {
-+              for (j = depth;  --j >= 0;  )
-+                  (void) putc (' ', stderr);
-+              if (indexp->pu.ent[k].stripl)
-+                  {
-+                  (void) ichartostr (stripbuf, indexp->pu.ent[k].strip,
-+                    sizeof stripbuf, 1);
-+                  (void) fprintf (stderr, "     entry %d (-%s,%s)\n",
-+                    &indexp->pu.ent[k] - sflaglist,
-+                    stripbuf,
-+                    indexp->pu.ent[k].affl
-+                      ? ichartosstr (indexp->pu.ent[k].affix, 1) : "-");
-+                  }
-+              else
-+                  (void) fprintf (stderr, "     entry %d (%s)\n",
-+                    &indexp->pu.ent[k] - sflaglist,
-+                    ichartosstr (indexp->pu.ent[k].affix, 1));
-+              }
-+          }
-+      }
-+}
-+#endif
-+
-+/* n is length of s */
-+Public struct dent * 
-+lookup (register ichar_t *s, int dotree)
-+
-+{
-+    register struct dent *    dp;
-+    register char *           s1;
-+    char                      schar[INPUTWORDLEN + MAXAFFIXLEN];
-+
-+    dp = &hashtbl[hash (s, hashsize)];
-+    if (ichartostr (schar, s, sizeof schar, 1))
-+      (void) fprintf (stderr, WORD_TOO_LONG (schar));
-+    for (  ;  dp != NULL;  dp = dp->next)
-+      {
-+      /* quick strcmp, but only for equality */
-+      s1 = dp->word;
-+      if (s1  &&  s1[0] == schar[0]  &&  strcmp (s1 + 1, schar + 1) == 0)
-+          return dp;
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+      while (dp->flagfield & MOREVARIANTS)    /* Skip variations */
-+          dp = dp->next;
-+#endif
-+      }
-+    if (dotree)
-+      {
-+      dp = treelookup (s);
-+      return dp;
-+      }
-+    else
-+      return NULL;
-+}
-diff -urBbN vim64.org/src/spell/makedent.c vim64/src/spell/makedent.c
---- vim64.org/src/spell/makedent.c     1970-01-01 01:00:00.000000000 +0100
-+++ vim64/src/spell/makedent.c 2005-10-17 12:49:17.514834088 +0200
-@@ -0,0 +1,1107 @@
-+/*
-+ * Copyright 1988, 1989, 1992, 1993, Geoff Kuenning, Granada Hills, CA
-+ * All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ *
-+ * 1. Redistributions of source code must retain the above copyright
-+ *    notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ *    notice, this list of conditions and the following disclaimer in the
-+ *    documentation and/or other materials provided with the distribution.
-+ * 3. All modifications to the source code must be clearly marked as
-+ *    such.  Binary redistributions based on modified source code
-+ *    must be clearly marked as modified versions in the documentation
-+ *    and/or other materials provided with the distribution.
-+ * 4. All advertising materials mentioning features or use of this software
-+ *    must display the following acknowledgment:
-+ *      This product includes software developed by Geoff Kuenning and
-+ *      other unpaid contributors.
-+ * 5. The name of Geoff Kuenning may not be used to endorse or promote
-+ *    products derived from this software without specific prior
-+ *    written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY GEOFF KUENNING AND CONTRIBUTORS ``AS IS'' AND
-+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED.  IN NO EVENT SHALL GEOFF KUENNING OR CONTRIBUTORS BE LIABLE
-+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+ * DAMAGES(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+ * LIABILITY, OR TORT(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+ * SUCH DAMAGE.
-+ */
-+
-+/*
-+ * $Log$
-+ * Revision 1.45  1994/12/27  23:08:52  geoff
-+ * Add code to makedent to reject words that contain non-word characters.
-+ * This helps protect people who use ISO 8-bit characters when ispell
-+ * isn't configured for that option.
-+ *
-+ * Revision 1.44  1994/10/25  05:46:20  geoff
-+ * Fix some incorrect declarations in the lint versions of some routines.
-+ *
-+ * Revision 1.43  1994/09/16  03:32:34  geoff
-+ * Issue an error message for bad affix flags
-+ *
-+ * Revision 1.42  1994/02/07  04:23:43  geoff
-+ * Correctly identify the deformatter when changing file types
-+ *
-+ * Revision 1.41  1994/01/25  07:11:55  geoff
-+ * Get rid of all old RCS log lines in preparation for the 3.1 release.
-+ *
-+ */
-+
-+#include "ispell.h"
-+#include <stdlib.h>
-+#include "msgs.h"
-+
-+Global int    makedent(char * lbuf, int lbuflen, struct dent * ent);
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+Global long   whatcap(ichar_t * word);
-+#endif
-+Global int    addvheader(struct dent * ent);
-+Global int    combinecaps(struct dent * hdr, struct dent * newent);
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+Local void    forcevheader(struct dent * hdrp, struct dent * oldp,
-+                                                    struct dent * newp);
-+#endif /* NO_CAPITALIZATION_SUPPORT */
-+Local int     combine_two_entries(struct dent * hdrp,
-+                                    struct dent * oldp, struct dent * newp);
-+Local int     acoversb(struct dent * enta, struct dent * entb);
-+Global void   upcase(ichar_t * string);
-+Global void   lowcase(ichar_t * string);
-+Global void   chupcase(char * s);
-+Local int     issubset(struct dent * ent1, struct dent * ent2);
-+Local void    combineaffixes(struct dent * ent1, struct dent * ent2);
-+Global void   toutent(FILE * outfile, struct dent * hent, int onlykeep);
-+Local void    toutword(FILE * outfile, char * word, struct dent * cent);
-+Local void    flagout(FILE * outfile, int flag);
-+Global int            stringcharlen(char * bufp, int canonical);
-+Global int            strtoichar(ichar_t * out, char * in, int outlen,
-+                                                            int canonical);
-+Global int            ichartostr(char * out, ichar_t * in, int outlen,
-+                                                            int canonical);
-+Global ichar_t *      strtosichar(char * in, int canonical);
-+Global char *         ichartosstr(ichar_t * in, int canonical);
-+Global char *         printichar(int in);
-+#ifndef ICHAR_IS_CHAR
-+Global ichar_t *      icharcpy(ichar_t * out, ichar_t * in);
-+Global int            icharlen(ichar_t * str);
-+Global int            icharcmp(ichar_t * s1, ichar_t * s2);
-+Global int            icharncmp(ichar_t * s1, ichar_t * s2, int n);
-+#endif /* ICHAR_IS_CHAR */
-+Global int            findfiletype(char * name, int searchnames,
-+                                                    int * deformatter);
-+
-+Local Logical         has_marker;
-+
-+/*
-+ * Fill in a directory entry, including setting the capitalization flags, and
-+ * allocate and initialize memory for the d->word field.  Returns -1
-+ * if there was trouble.  The input word must be in canonical form.
-+ */
-+
-+Public int
-+makedent(
-+    char *            lbuf,
-+    int                       lbuflen,
-+    struct dent *     d)
-+{
-+    ichar_t           ibuf[INPUTWORDLEN + MAXAFFIXLEN];
-+    ichar_t *         ip;
-+    char *            p;
-+    int                       bit;
-+    int                       len;
-+
-+                          /* Strip off any trailing newline */
-+    len = strlen(lbuf) - 1;
-+    if(lbuf[len] == '\n')
-+      lbuf[len] = '\0';
-+
-+    d->next = NULL;
-+    /* WARNING:  flagfield might be the same as mask! See ispell.h. */
-+    d->flagfield = 0;
-+   (void) bzero ((char *) d->mask, sizeof (d->mask));
-+    d->flagfield |= USED;
-+    d->flagfield &= ~KEEP;
-+
-+    p = index(lbuf, hashheader.flagmarker);
-+    if(p != NULL)
-+      *p = 0;
-+
-+    /*
-+    ** Convert the word to an ichar_t and back;  this makes sure that
-+    ** it is in canonical form and thus that the length is correct.
-+    */
-+    if(strtoichar(ibuf, lbuf, INPUTWORDLEN * sizeof (ichar_t), 1)
-+                                ||  ichartostr(lbuf, ibuf, lbuflen, 1))
-+      {
-+      (void) fprintf(stderr, WORD_TOO_LONG (lbuf));
-+      return(-1);
-+      }
-+    /*
-+    ** Make sure the word is well-formed(contains only legal characters).
-+    */
-+    for(ip = ibuf;  *ip != 0;  ip++)
-+      {
-+      if(!iswordch(*ip))
-+          {
-+          /* Boundary characters are legal as long as they're not at edges */
-+          if(!isboundarych(*ip) || ip == ibuf  ||  ip[1] == 0)
-+              {
-+              (void) fprintf(stderr, MAKEDENT_C_BAD_WORD_CHAR, lbuf);
-+              return -1;
-+              }
-+          }
-+      }
-+    len = strlen(lbuf);
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+    /*
-+    ** Figure out the capitalization rules from the capitalization of
-+    ** the sample entry.
-+    */
-+    d->flagfield |= whatcap(ibuf);
-+#endif
-+
-+    if(len > INPUTWORDLEN - 1)
-+      {
-+      (void) fprintf(stderr, WORD_TOO_LONG (lbuf));
-+      return(-1);
-+      }
-+
-+    d->word = malloc((unsigned) len + 1);
-+    if(d->word == NULL)
-+      {
-+      (void) fprintf(stderr, MAKEDENT_C_NO_WORD_SPACE, lbuf);
-+      return -1;
-+      }
-+
-+   (void) strcpy (d->word, lbuf);
-+#ifdef NO_CAPITALIZATION_SUPPORT
-+    chupcase(d->word);
-+#else /* NO_CAPITALIZATION_SUPPORT */
-+    if(captype(d->flagfield) != FOLLOWCASE)
-+      chupcase(d->word);
-+#endif /* NO_CAPITALIZATION_SUPPORT */
-+    if(p == NULL)
-+      return(0);
-+
-+    p++;
-+    while(*p != '\0'  &&  *p != '\n')
-+      {
-+      bit = CHARTOBIT((unsigned char) *p);
-+      if(bit >= 0  &&  bit <= LARGESTFLAG)
-+          SETMASKBIT(d->mask, bit);
-+      else
-+         (void) fprintf (stderr, BAD_FLAG, (unsigned char) *p);
-+      p++;
-+      if(*p == hashheader.flagmarker)
-+          p++;                /* Handle old-format dictionaries too */
-+      }
-+    return(0);
-+}
-+
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+/*
-+** Classify the capitalization of a sample entry.  Returns one of the
-+** four capitalization codes ANYCASE, ALLCAPS, CAPITALIZED, or FOLLOWCASE.
-+*/
-+
-+Public long 
-+whatcap(register ichar_t *    word)
-+{
-+    register ichar_t *        p;
-+
-+    for(p = word;  *p;  p++)
-+      {
-+      if(mylower(*p))
-+          break;
-+      }
-+    if(*p == '\0')
-+      return ALLCAPS;
-+    else
-+      {
-+      for(; *p; p++)
-+          if(myupper(*p))
-+              break;
-+      if(*p == '\0')
-+          {
-+          /*
-+          ** No uppercase letters follow the lowercase ones.
-+          ** If there is more than one uppercase letter, it's
-+          ** "followcase". If only the first one is capitalized,
-+          ** it's "capitalize".  If there are no capitals
-+          ** at all, it's ANYCASE.
-+          */
-+          if(myupper(word[0]))
-+              {
-+              for(p = word + 1;  *p != '\0';  p++)
-+                  if(myupper(*p))
-+                      return FOLLOWCASE;
-+              return CAPITALIZED;
-+              }
-+          else
-+              return ANYCASE;
-+          }
-+      else
-+          return FOLLOWCASE;  /* .../lower/upper */
-+      }
-+}
-+
-+/*
-+** Add a variant-capitalization header to a word.  This routine may be
-+** called even for a followcase word that doesn't yet have a header.
-+**
-+** Returns 0 if all was ok, -1 if allocation error.
-+*/
-+Public int 
-+addvheader(register struct dent *dp)  /* Entry to update */
-+{
-+    register struct dent *    tdent; /* Copy of entry */
-+
-+    /*
-+    ** Add a second entry with the correct capitalization, and then make
-+    ** dp into a special dummy entry.
-+    */
-+    tdent = (struct dent *) malloc (sizeof (struct dent));
-+    if(tdent == NULL)
-+      {
-+      (void) fprintf(stderr, MAKEDENT_C_NO_WORD_SPACE, dp->word);
-+      return -1;
-+      }
-+    *tdent = *dp;
-+    if(captype(tdent->flagfield) != FOLLOWCASE)
-+      tdent->word = NULL;
-+    else
-+      {
-+      /* Followcase words need a copy of the capitalization */
-+      tdent->word = malloc((unsigned int) strlen (tdent->word) + 1);
-+      if(tdent->word == NULL)
-+          {
-+         (void) fprintf (stderr, MAKEDENT_C_NO_WORD_SPACE, dp->word);
-+          free((char *) tdent);
-+          return -1;
-+          }
-+      (void) strcpy(tdent->word, dp->word);
-+      }
-+    chupcase(dp->word);
-+    dp->next = tdent;
-+    dp->flagfield &= ~CAPTYPEMASK;
-+    dp->flagfield |= (ALLCAPS | MOREVARIANTS);
-+    return 0;
-+}
-+#endif /* NO_CAPITALIZATION_SUPPORT */
-+
-+/*
-+** Combine and resolve the entries describing two capitalizations of the same
-+** word.  This may require allocating yet more entries.
-+**
-+** Hdrp is a pointer into a hash table.  If the word covered by hdrp has
-+** variations, hdrp must point to the header.  Newp is a pointer to temporary
-+** storage, and space is malloc'ed if newp is to be kept.  The newp->word
-+** field must have been allocated with mymalloc, so that this routine may free
-+** the space if it keeps newp but not the word.
-+**
-+** Return value:  0 if the word was added, 1 if the word was combined
-+** with an existing entry, and -1 if trouble occurred(e.g., malloc).
-+** If 1 is returned, newp->word may have been be freed using myfree.
-+**
-+** Life is made much more difficult by the KEEP flag's possibilities.  We
-+** must ensure that a !KEEP word doesn't find its way into the personal
-+** dictionary as a result of this routine's actions.  However, a !KEEP
-+** word that has affixes must have come from the main dictionary, so it
-+** is acceptable to combine entries in that case(got that?).
-+**
-+** The net result of all this is a set of rules that is a bloody pain
-+** to figure out.  Basically, we want to choose one of the following actions:
-+**
-+**    (1) Add newp's affixes and KEEP flag to oldp, and discard newp.
-+**    (2) Add oldp's affixes and KEEP flag to newp, replace oldp with
-+**        newp, and discard newp.
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+**    (3) Insert newp as a new entry in the variants list.  If there is
-+**        currently no variant header, this requires adding one.  Adding a
-+**        header splits into two sub-cases:
-+**
-+**       (3a) If oldp is ALLCAPS and the KEEP flags match, just turn it
-+**            into the header.
-+**       (3b) Otherwise, add a new entry to serve as the header.
-+**            To ease list linking, this is done by copying oldp into
-+**            the new entry, and then performing(3a).
-+**
-+**        After newp has been added as a variant, its affixes and KEEP
-+**        flag are OR-ed into the variant header.
-+#endif
-+**
-+** So how to choose which?  The default is always case(3), which adds newp
-+** as a new entry in the variants list.  Cases(1) and (2) are symmetrical
-+** except for which entry is discarded.  We can use case(1) or (2) whenever
-+** one entry "covers" the other.  "Covering" is defined as follows:
-+**
-+**    (4) For entries with matching capitalization types, A covers B
-+**        if:
-+**
-+**       (4a) B's affix flags are a subset of A's, or the KEEP flags
-+**             match, and
-+**       (4b) either the KEEP flags match, or A's KEEP flag is set.
-+**            (Since A has more suffixes, combining B with it won't
-+**            cause any extra suffixes to be added to the dictionary.)
-+**       (4c) If the words are FOLLOWCASE, the capitalizations match
-+**            exactly.
-+**
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+**    (5) For entries with mismatched capitalization types, A covers B
-+**        if(4a) and(4b) are true, and:
-+**
-+**       (5a) B is ALLCAPS, or
-+**       (5b) A is ANYCASE, and B is CAPITALIZED.
-+#endif
-+**
-+** For any "hdrp" without variants, oldp is the same as hdrp.  Otherwise,
-+** the above tests are applied using each variant in turn for oldp.
-+*/
-+Public int 
-+combinecaps(
-+    struct dent *     hdrp,   /* Header of entry currently in dictionary */
-+    register struct dent * newp)      /* Entry to add */
-+{
-+    register struct dent *
-+                      oldp;   /* Current "oldp" entry */
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+    register struct dent *
-+                      tdent; /* Entry we'll add to the dictionary */
-+#endif /* NO_CAPITALIZATION_SUPPORT */
-+    register int      retval = 0; /* Return value from combine_two_entries */
-+
-+    /*
-+    ** First, see if we can combine the two entries(cases 1 and 2).  If
-+    ** combine_two_entries does so, it will return 1.  If it has trouble,
-+    ** it will return zero.
-+    */
-+    oldp = hdrp;
-+#ifdef NO_CAPITALIZATION_SUPPORT
-+    retval = combine_two_entries(hdrp, oldp, newp);
-+#else /* NO_CAPITALIZATION_SUPPORT */
-+    if((oldp->flagfield &(CAPTYPEMASK | MOREVARIANTS))
-+                                                == (ALLCAPS | MOREVARIANTS))
-+      {
-+      while(oldp->flagfield & MOREVARIANTS)
-+          {
-+          oldp = oldp->next;
-+          retval = combine_two_entries(hdrp, oldp, newp);
-+          if(retval != 0)             /* Did we combine them? */
-+              break;
-+          }
-+      }
-+    else
-+      retval = combine_two_entries(hdrp, oldp, newp);
-+    if(retval == 0)
-+      {
-+      /*
-+      ** Couldn't combine the two entries.  Add a new variant.  For
-+      ** ease, we'll stick it right behind the header, rather than
-+      ** at the end of the list.
-+      */
-+      forcevheader(hdrp, oldp, newp);
-+      tdent = (struct dent *) malloc (sizeof (struct dent));
-+      if(tdent == NULL)
-+          {
-+         (void) fprintf (stderr, MAKEDENT_C_NO_WORD_SPACE, newp->word);
-+          return -1;
-+          }
-+      *tdent = *newp;
-+      tdent->next = hdrp->next;
-+      hdrp->next = tdent;
-+      tdent->flagfield |= (hdrp->flagfield & MOREVARIANTS);
-+      hdrp->flagfield |= MOREVARIANTS;
-+      combineaffixes(hdrp, newp);
-+      hdrp->flagfield |= (newp->flagfield & KEEP);
-+      if(captype(newp->flagfield) == FOLLOWCASE)
-+          tdent->word = newp->word;
-+      else
-+          {
-+          tdent->word = NULL;
-+          free(newp->word);           /* newp->word isn't needed */
-+          }
-+      }
-+#endif /* NO_CAPITALIZATION_SUPPORT */
-+    return retval;
-+}
-+
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+/*
-+** The following routine implements steps 3a and 3b in the commentary
-+** for "combinecaps".
-+*/
-+Local void
-+forcevheader(
-+    register struct dent *    hdrp,
-+    struct dent *             oldp,
-+    struct dent *             newp)
-+{
-+
-+    if((hdrp->flagfield &(CAPTYPEMASK | MOREVARIANTS)) == ALLCAPS
-+      && ((oldp->flagfield ^ newp->flagfield) & KEEP) == 0)
-+      return;                 /* Caller will set MOREVARIANTS */
-+    else if((hdrp->flagfield &(CAPTYPEMASK | MOREVARIANTS))
-+      != (ALLCAPS | MOREVARIANTS))
-+      (void) addvheader(hdrp);
-+}
-+#endif /* NO_CAPITALIZATION_SUPPORT */
-+
-+/*
-+** This routine implements steps 4 and 5 of the commentary for "combinecaps".
-+**
-+** Returns 1 if newp can be discarded, 0 if nothing done.
-+*/
-+Local int 
-+combine_two_entries(
-+    struct dent *hdrp,                /*(Possible) header of variant chain */
-+    register struct dent *oldp,       /* Pre-existing dictionary entry */
-+    register struct dent *newp)       /* Entry to possibly combine */
-+{
-+
-+    if(acoversb(oldp, newp))
-+      {
-+      /* newp is superfluous.  Drop it, preserving affixes and keep flag */
-+      combineaffixes(oldp, newp);
-+      oldp->flagfield |= (newp->flagfield & KEEP);
-+      hdrp->flagfield |= (newp->flagfield & KEEP);
-+      free(newp->word);
-+      return 1;
-+      }
-+    else if(acoversb(newp, oldp))
-+      {
-+      /*
-+      ** oldp is superfluous.  Replace it with newp, preserving affixes and
-+      ** the keep flag.
-+      */
-+      combineaffixes(newp, oldp);
-+#ifdef NO_CAPITALIZATION_SUPPORT
-+      newp->flagfield |= (oldp->flagfield & KEEP);
-+#else /* NO_CAPITALIZATION_SUPPORT */
-+      newp->flagfield |= (oldp->flagfield & (KEEP | MOREVARIANTS));
-+#endif /* NO_CAPITALIZATION_SUPPORT */
-+      hdrp->flagfield |= (newp->flagfield & KEEP);
-+      newp->next = oldp->next;
-+      /*
-+      ** We really want to free oldp->word, but that might be part of
-+      ** "hashstrings".  So we'll futz around to arrange things so we can
-+      ** free newp->word instead.  This depends very much on the fact
-+      ** that both words are the same length.
-+      */
-+      if(oldp->word != NULL)
-+         (void) strcpy (oldp->word, newp->word);
-+      free(newp->word);       /* No longer needed */
-+      newp->word = oldp->word;
-+      *oldp = *newp;
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+      /* We may need to add a header if newp is followcase */
-+      if(captype(newp->flagfield) == FOLLOWCASE
-+        && (hdrp->flagfield & (CAPTYPEMASK | MOREVARIANTS))
-+          != (ALLCAPS | MOREVARIANTS))
-+         (void) addvheader (hdrp);
-+#endif /* NO_CAPITALIZATION_SUPPORT */
-+      return 1;
-+      }
-+    else
-+      return 0;
-+}
-+
-+/*
-+** Determine if enta covers entb, according to the rules in steps 4 and 5
-+** of the commentary for "combinecaps".
-+*/
-+Local int 
-+acoversb(
-+    register struct dent *    enta,   /* "A" in the rules */
-+    register struct dent *    entb)   /* "B" in the rules */
-+{
-+    int                               subset; /* NZ if entb is a subset of enta */
-+
-+    if((subset = issubset(entb, enta)) != 0)
-+      {
-+      /* entb is a subset of enta;  thus enta might cover entb */
-+      if(((enta->flagfield ^ entb->flagfield) & KEEP) != 0
-+        && (enta->flagfield & KEEP) == 0)     /* Inverse of condition (4b) */
-+          return 0;
-+      }
-+    else
-+      {
-+      /* not a subset;  KEEP flags must match exactly(both (4a) and (4b)) */
-+      if(((enta->flagfield ^ entb->flagfield) & KEEP) != 0)
-+          return 0;
-+      }
-+
-+    /* Rules(4a) and (4b) are satisfied;  check for capitalization match */
-+#ifdef NO_CAPITALIZATION_SUPPORT
-+#ifdef lint
-+    return subset;                            /* Just so it gets used */
-+#else /* lint */
-+    return 1;                                 /* All words match */
-+#endif /* lint */
-+#else /* NO_CAPITALIZATION_SUPPORT */
-+    if(((enta->flagfield ^ entb->flagfield) & CAPTYPEMASK) == 0)
-+      {
-+      if(captype(enta->flagfield) != FOLLOWCASE       /* Condition (4c) */
-+        ||  strcmp(enta->word, entb->word) == 0)
-+          return 1;                           /* Perfect match */
-+      else
-+          return 0;
-+      }
-+    else if(subset == 0)                      /* No flag subset, refuse */
-+      return 0;                               /* ..near matches */
-+    else if(captype(entb->flagfield) == ALLCAPS)
-+      return 1;
-+    else if(captype(enta->flagfield) == ANYCASE
-+      &&  captype(entb->flagfield) == CAPITALIZED)
-+      return 1;
-+    else
-+      return 0;
-+#endif /* NO_CAPITALIZATION_SUPPORT */
-+}
-+
-+Public void 
-+upcase(register ichar_t *     s)
-+{
-+
-+    while(*s)
-+      {
-+      *s = mytoupper(*s);
-+      s++;
-+      }
-+}
-+
-+Public void 
-+lowcase(register ichar_t *    s)
-+{
-+
-+    while(*s)
-+      {
-+      *s = mytolower(*s);
-+      s++;
-+      }
-+}
-+
-+/*
-+ * Upcase variant that works on normal strings.  Note that it is a lot
-+ * slower than the normal upcase.  The input must be in canonical form.
-+ */
-+Public void 
-+chupcase(char *       s)
-+{
-+    ichar_t * is;
-+
-+    is = strtosichar(s, 1);
-+    upcase(is);
-+   (void) ichartostr (s, is, strlen (s) + 1, 1);
-+}
-+
-+/*
-+** See if one affix field is a subset of another.  Returns NZ if ent1
-+** is a subset of ent2.  The KEEP flag is not taken into consideration.
-+*/
-+Local int 
-+issubset(
-+    register struct dent *    ent1,
-+    register struct dent *    ent2)
-+{
-+/* The following is really testing for MASKSIZE > 1, but cpp can't do that */
-+#if MASKBITS > 32
-+    register int              flagword;
-+
-+#ifdef FULLMASKSET
-+#define MASKMAX       MASKSIZE
-+#else
-+#define MASKMAX       MASKSIZE - 1
-+#endif /* FULLMASKSET */
-+    for(flagword = MASKMAX;  --flagword >= 0;  )
-+      {
-+      if((ent1->mask[flagword] & ent2->mask[flagword])
-+        != ent1->mask[flagword])
-+          return 0;
-+      }
-+#endif /* MASKBITS > 32 */
-+#ifdef FULLMASKSET
-+    return((ent1->mask[MASKSIZE - 1] & ent2->mask[MASKSIZE - 1])
-+      == ent1->mask[MASKSIZE - 1]);
-+#else
-+    if(((ent1->mask[MASKSIZE - 1] & ent2->mask[MASKSIZE - 1])
-+      ^ ent1->mask[MASKSIZE - 1]) & ~ALLFLAGS)
-+      return 0;
-+    else
-+      return 1;
-+#endif /* FULLMASKSET */
-+}
-+
-+/*
-+** Add ent2's affix flags to ent1.
-+*/
-+Local void 
-+combineaffixes(
-+    register struct dent *    ent1,
-+    register struct dent *    ent2)
-+{
-+/* The following is really testing for MASKSIZE > 1, but cpp can't do that */
-+#if MASKBITS > 32
-+    register int              flagword;
-+
-+    if(ent1 == ent2)
-+      return;
-+    /* MASKMAX is defined in issubset, just above */
-+    for(flagword = MASKMAX;  --flagword >= 0;  )
-+      ent1->mask[flagword] |= ent2->mask[flagword];
-+#endif /* MASKBITS > 32 */
-+#ifndef FULLMASKSET
-+    ent1->mask[MASKSIZE - 1] |= ent2->mask[MASKSIZE - 1] & ~ALLFLAGS;
-+#endif
-+}
-+
-+/*
-+** Write out a dictionary entry, including capitalization variants.
-+** If onlykeep is true, only those variants with KEEP set will be
-+** written.
-+*/
-+Public void 
-+toutent(
-+    register FILE *   toutfile,
-+    struct dent *     hent,
-+    register int      onlykeep)
-+{
-+#ifdef NO_CAPITALIZATION_SUPPORT
-+    if(!onlykeep  || (hent->flagfield & KEEP))
-+      toutword(toutfile, hent->word, hent);
-+#else
-+    register struct dent * cent;
-+    ichar_t           wbuf[INPUTWORDLEN + MAXAFFIXLEN];
-+
-+    cent = hent;
-+    if(strtoichar(wbuf, cent->word, INPUTWORDLEN, 1))
-+      (void) fprintf(stderr, WORD_TOO_LONG (cent->word));
-+    for(  ;  ;  )
-+      {
-+      if(!onlykeep  || (cent->flagfield & KEEP))
-+          {
-+          switch(captype (cent->flagfield))
-+              {
-+              case ANYCASE:
-+                  lowcase(wbuf);
-+                  toutword(toutfile, ichartosstr (wbuf, 1), cent);
-+                  break;
-+              case ALLCAPS:
-+                  if((cent->flagfield & MOREVARIANTS) == 0 ||  cent != hent)
-+                      {
-+                      upcase(wbuf);
-+                      toutword(toutfile, ichartosstr (wbuf, 1), cent);
-+                      }
-+                  break;
-+              case CAPITALIZED:
-+                  lowcase(wbuf);
-+                  wbuf[0] = mytoupper(wbuf[0]);
-+                  toutword(toutfile, ichartosstr (wbuf, 1), cent);
-+                  break;
-+              case FOLLOWCASE:
-+                  toutword(toutfile, cent->word, cent);
-+                  break;
-+              }
-+          }
-+      if(cent->flagfield & MOREVARIANTS)
-+          cent = cent->next;
-+      else
-+          break;
-+      }
-+#endif
-+}
-+              
-+Local void 
-+toutword(
-+    register FILE *   toutfile,
-+    char *            word,
-+    register struct dent * cent)
-+{
-+    register int      bit;
-+
-+    has_marker = False;
-+   (void) fprintf (toutfile, "%s", word);
-+    for(bit = 0;  bit < LARGESTFLAG;  bit++)
-+      {
-+      if(TSTMASKBIT(cent->mask, bit))
-+        flagout(toutfile, BITTOCHAR (bit));
-+      }
-+   (void) fprintf (toutfile, "\n");
-+}
-+
-+Local void 
-+flagout(
-+    register FILE *   toutfile,
-+    int                       flag)
-+{
-+    if(!has_marker)
-+      (void) putc(hashheader.flagmarker, toutfile);
-+    has_marker = True;
-+   (void) putc (flag, toutfile);
-+}
-+
-+/*
-+ * If the string under the given pointer begins with a string character,
-+ * return the length of that "character".  If not, return 0.
-+ * May be called any time, but it's best if "isstrstart" is first
-+ * used to filter out unnecessary calls.
-+ *
-+ * As a side effect, "laststringch" is set to the number of the string
-+ * found, or to -1 if none was found.  This can be useful for such things
-+ * as case conversion.
-+ */
-+Public int 
-+stringcharlen(
-+    char *            bufp,
-+    int                       canonical)      /* NZ if input is in canonical form */
-+{
-+#ifdef SLOWMULTIPLY
-+    static char *     sp[MAXSTRINGCHARS];
-+    static int                m_inited = 0;
-+#endif /* SLOWMULTIPLY */
-+    register char *   bufcur;
-+    register char *   stringcur;
-+    register int      stringno;
-+    register int      lowstringno;
-+    register int      highstringno;
-+    int                       dupwanted;
-+
-+#ifdef SLOWMULTIPLY
-+    if(!m_inited)
-+      {
-+      m_inited = 1;
-+      for(stringno = 0;  stringno < MAXSTRINGCHARS;  stringno++)
-+          sp[stringno] = &hashheader.stringchars[stringno][0];
-+      }
-+#endif /* SLOWMULTIPLY */
-+    lowstringno = 0;
-+    highstringno = hashheader.nstrchars - 1;
-+    dupwanted = canonical ? 0 : defdupchar;
-+    while(lowstringno <= highstringno)
-+      {
-+      stringno = (lowstringno + highstringno) >> 1;
-+#ifdef SLOWMULTIPLY
-+      stringcur = sp[stringno];
-+#else /* SLOWMULTIPLY */
-+      stringcur = &hashheader.stringchars[stringno][0];
-+#endif /* SLOWMULTIPLY */
-+      bufcur = bufp;
-+      while(*stringcur)
-+          {
-+#ifdef NO8BIT
-+          if(((*bufcur++ ^ *stringcur) & 0x7F) != 0)
-+#else /* NO8BIT */
-+          if(*bufcur++ != *stringcur)
-+#endif /* NO8BIT */
-+              break;
-+          /*
-+          ** We can't use autoincrement above because of the
-+          ** test below.
-+          */
-+          stringcur++;
-+          }
-+      if(*stringcur == '\0')
-+          {
-+          if(hashheader.dupnos[stringno] == dupwanted)
-+              {
-+              /* We have a match */
-+              laststringch = hashheader.stringdups[stringno];
-+#ifdef SLOWMULTIPLY
-+              return stringcur - sp[stringno];
-+#else /* SLOWMULTIPLY */
-+              return stringcur - &hashheader.stringchars[stringno][0];
-+#endif /* SLOWMULTIPLY */
-+              }
-+          else
-+              --stringcur;
-+          }
-+      /* No match - choose which side to search on */
-+#ifdef NO8BIT
-+      if((*--bufcur & 0x7F) <(*stringcur & 0x7F))
-+          highstringno = stringno - 1;
-+      else if((*bufcur & 0x7F) >(*stringcur & 0x7F))
-+          lowstringno = stringno + 1;
-+#else /* NO8BIT */
-+      if(*--bufcur < *stringcur)
-+          highstringno = stringno - 1;
-+      else if(*bufcur > *stringcur)
-+          lowstringno = stringno + 1;
-+#endif /* NO8BIT */
-+      else if(dupwanted < hashheader.dupnos[stringno])
-+          highstringno = stringno - 1;
-+      else
-+          lowstringno = stringno + 1;
-+      }
-+    laststringch = -1;
-+    return 0;                 /* Not a string character */
-+}
-+
-+/*
-+ * Convert an external string to an ichar_t string.  If necessary, the parity
-+ * bit is stripped off as part of the process.
-+ *
-+ * Returns NZ if the output string overflowed.
-+ */
-+Public int 
-+strtoichar(
-+    register ichar_t *        out,            /* Where to put result */
-+    register char *   in,             /* String to convert */
-+    int                       outlen,         /* Size of output buffer, *BYTES* */
-+    int                       canonical)      /* NZ if input is in canonical form */
-+{
-+    register int      len;            /* Length of next character */
-+
-+    outlen /= sizeof(ichar_t);                /* Convert to an ichar_t count */
-+    for(  ;  --outlen > 0  &&  *in != '\0';  in += len)
-+      {
-+      if(l1_isstringch(in, len, canonical))
-+          *out++ = SET_SIZE + laststringch;
-+      else
-+          *out++ = *in & S_NOPARITY;
-+      }
-+    *out = 0;
-+    return outlen <= 0;
-+}
-+
-+/*
-+ * Convert an ichar_t string to an external string.
-+ *
-+ * WARNING: the resulting string may wind up being longer than the
-+ * original.  In fact, even the sequence strtoichar->ichartostr may
-+ * produce a result longer than the original, because the output form
-+ * may use a different string type set than the original input form.
-+ *
-+ * Returns NZ if the output string overflowed.
-+ */
-+Public int 
-+ichartostr(
-+    register char *   out,            /* Where to put result */
-+    register ichar_t *        in,             /* String to convert */
-+    int                       outlen,         /* Size of output buffer, bytes */
-+    int                       canonical)      /* NZ for canonical form */
-+{
-+    register unsigned int     ch;             /* Next character to store */
-+    register unsigned int     i;              /* Index into duplicates list */
-+    register char *   scharp;         /* Pointer into a string char */
-+
-+    while(--outlen > 0  &&  (ch = *in++) != 0)
-+      {
-+      if(ch < SET_SIZE)
-+          *out++ = (char) ch;
-+      else
-+          {
-+          ch -= SET_SIZE;
-+          if(!canonical)
-+              {
-+              for(i = hashheader.nstrchars;  --i >= 0;  )
-+                  {
-+                  if(hashheader.dupnos[i] == defdupchar
-+                                    &&  hashheader.stringdups[i] == ch)
-+                      {
-+                      ch = i;
-+                      break;
-+                      }
-+                  }
-+              }
-+          scharp = hashheader.stringchars[(unsigned) ch];
-+          while((*out++ = *scharp++) != '\0')
-+              ;
-+          out--;
-+          }
-+      }
-+    *out = '\0';
-+    return outlen <= 0;
-+}
-+
-+/*
-+ * Convert a string to an ichar_t, storing the result in a static area.
-+ */
-+Public ichar_t *
-+strtosichar(
-+    char *            in,             /* String to convert */
-+    int                       canonical)      /* NZ if input is in canonical form */
-+{
-+    static ichar_t    out[STRTOSICHAR_SIZE / sizeof(ichar_t)];
-+
-+    if(strtoichar(out, in, sizeof out, canonical))
-+      (void) fprintf(stderr, WORD_TOO_LONG (in));
-+    return out;
-+}
-+
-+/*
-+ * Convert an ichar_t to a string, storing the result in a static area.
-+ */
-+Public char * 
-+ichartosstr(
-+          ichar_t *   in,             /* Internal string to convert */
-+          int         canonical)      /* NZ for canonical conversion */
-+{
-+    static char               out[ICHARTOSSTR_SIZE];
-+
-+    if(ichartostr(out, in, sizeof out, canonical))
-+      (void) fprintf(stderr, WORD_TOO_LONG (out));
-+    return out;
-+}
-+
-+/*
-+ * Convert a single ichar to a printable string, storing the result in
-+ * a static area.
-+ */
-+Public char * 
-+printichar(int in)
-+{
-+    static char               out[MAXSTRINGCHARLEN + 1];
-+
-+    if(in < SET_SIZE)
-+      {
-+      out[0] = (char) in;
-+      out[1] = '\0';
-+      }
-+    else
-+      (void) strcpy(out, hashheader.stringchars[(unsigned) in - SET_SIZE]);
-+    return out;
-+}
-+
-+#ifndef ICHAR_IS_CHAR
-+/*
-+ * Copy an ichar_t.
-+ */
-+Public ichar_t *
-+icharcpy(
-+          register ichar_t *  out,            /* Destination */
-+          register ichar_t *  in)             /* Source */
-+{
-+    ichar_t *         origout;        /* Copy of destination for return */
-+
-+    origout = out;
-+    while((*out++ = *in++) != 0)
-+      ;
-+    return origout;
-+}
-+
-+/*
-+ * Return the length of an ichar_t.
-+ */
-+Public int 
-+icharlen(register ichar_t *   in)             /* String to count */
-+{
-+    register int      len;            /* Length so far */
-+
-+    for(len = 0;  *in++ != 0;  len++)
-+      ;
-+    return len;
-+}
-+
-+/*
-+ * Compare two ichar_t's.
-+ */
-+Public int 
-+icharcmp(
-+          register ichar_t *  s1,
-+          register ichar_t *  s2)
-+{
-+
-+    while(*s1 != 0)
-+      {
-+      if(*s1++ != *s2++)
-+          return *--s1 - *--s2;
-+      }
-+    return *s1 - *s2;
-+}
-+
-+/*
-+ * Strncmp for two ichar_t's.
-+ */
-+Public int 
-+icharncmp(
-+          register ichar_t *  s1,
-+          register ichar_t *  s2,
-+          register int        n)
-+{
-+
-+    while(--n >= 0  &&  *s1 != 0)
-+      {
-+      if(*s1++ != *s2++)
-+          return *--s1 - *--s2;
-+      }
-+    if(n < 0)
-+      return 0;
-+    else
-+      return *s1 - *s2;
-+}
-+
-+#endif /* ICHAR_IS_CHAR */
-+
-+Public int 
-+findfiletype(
-+          char *      name,           /* Name to look up in suffix table */
-+          int         searchnames,    /* NZ to search name field of table */
-+          int *       deformatter)    /* Where to set deformatter type */
-+{
-+    char *            cp;             /* Pointer into suffix list */
-+    int                       cplen;          /* Length of current suffix */
-+    register int      i;              /* Index into type table */
-+    int                       len;            /* Length of the name */
-+
-+      /*
-+       * Note:  for now, the deformatter is set to 1 for tex, 0 for nroff.
-+       * Further, we assume that it's one or the other, so that a test
-+       * for tex is sufficient.  This needs to be generalized.
-+       */
-+    len = strlen(name);
-+    if(searchnames)
-+      {
-+      for(i = 0;  i < hashheader.nstrchartype;  i++)
-+          {
-+          if(strcmp(name, chartypes[i].name) == 0)
-+              {
-+              if(deformatter != NULL)
-+                  *deformatter =
-+                   (strcmp (chartypes[i].deformatter, "tex") == 0);
-+              return i;
-+              }
-+          }
-+      }
-+    for(i = 0;  i < hashheader.nstrchartype;  i++)
-+      {
-+      for(cp = chartypes[i].suffixes;  *cp != '\0';  cp += cplen + 1)
-+          {
-+          cplen = strlen(cp);
-+          if(len >= cplen  &&  strcmp(&name[len - cplen], cp) == 0)
-+              {
-+              if(deformatter != NULL)
-+                  *deformatter =
-+                           (strcmp (chartypes[i].deformatter, "tex") == 0);
-+              return i;
-+              }
-+          }
-+      }
-+    return -1;
-+}
-+
-+Public char *
-+mypath_rindex(char const *str, char c)
-+{
-+    register char *x;
-+
-+    x = (char *)str + strlen(str);
-+
-+    while(x >= str)
-+       {
-+      if(*x == '\\' || *x == '/' || *x == ':')
-+          return(NULL);
-+      else if(*x == c)
-+          return(x);
-+      else
-+          x--;
-+       }
-+    return(NULL);
-+}
-diff -urBbN vim64.org/src/spell/msgs.h vim64/src/spell/msgs.h
---- vim64.org/src/spell/msgs.h 1970-01-01 01:00:00.000000000 +0100
-+++ vim64/src/spell/msgs.h     2005-10-17 12:49:17.515833936 +0200
-@@ -0,0 +1,278 @@
-+/*
-+ * $Id$
-+ *
-+ * Copyright 1992, 1993, Geoff Kuenning, Granada Hills, CA
-+ * All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ *
-+ * 1. Redistributions of source code must retain the above copyright
-+ *    notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ *    notice, this list of conditions and the following disclaimer in the
-+ *    documentation and/or other materials provided with the distribution.
-+ * 3. All modifications to the source code must be clearly marked as
-+ *    such.  Binary redistributions based on modified source code
-+ *    must be clearly marked as modified versions in the documentation
-+ *    and/or other materials provided with the distribution.
-+ * 4. All advertising materials mentioning features or use of this software
-+ *    must display the following acknowledgment:
-+ *      This product includes software developed by Geoff Kuenning and
-+ *      other unpaid contributors.
-+ * 5. The name of Geoff Kuenning may not be used to endorse or promote
-+ *    products derived from this software without specific prior
-+ *    written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY GEOFF KUENNING AND CONTRIBUTORS ``AS IS'' AND
-+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED.  IN NO EVENT SHALL GEOFF KUENNING OR CONTRIBUTORS BE LIABLE
-+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+ * SUCH DAMAGE.
-+ *
-+ */
-+
-+/*
-+ * Messages header file.
-+ *
-+ * This file contains all text strings that are written by any of the
-+ * C programs in the ispell package.  The strings are collected here so that
-+ * you can have the option of translating them into your local language for
-+ * the benefit of your users.
-+ *
-+ * Anyone who goes to the effort of making a translation may wish to return
-+ * the translated strings to me, geoff@ITcorp.com, so that I can include
-+ * them in a later distribution under #ifdef control.
-+ *
-+ * Besides the strings in this header file, you may also want to translate
-+ * the strings in version.h, which give the version and copyright information.
-+ * However, any translation of these strings MUST accurately preserve the
-+ * legal rights under international law;  you may wish to consult a lawyer
-+ * about this since you will be responsible for the results of any
-+ * incorrect translation.
-+ *
-+ * Most of the strings below are simple printf format strings.  If the printf
-+ * takes more than one parameter, the string is given as a parameterized
-+ * macro in case your local language needs a different word order.
-+ */
-+
-+/*
-+ * $Log$
-+ * Revision 1.31  1994/12/27  23:08:57  geoff
-+ * Add a message to be issued if a word contains illegal characters.
-+ *
-+ * Revision 1.30  1994/10/25  05:46:40  geoff
-+ * Improve a couple of error messages relating to affix flags.
-+ *
-+ * Revision 1.29  1994/10/04  03:46:23  geoff
-+ * Add a missing carriage return in the help message
-+ *
-+ * Revision 1.28  1994/09/16  05:07:00  geoff
-+ * Add the BAD_FLAG message, and start a sentence in another message with
-+ * an uppercase letter.
-+ *
-+ * Revision 1.27  1994/07/28  05:11:38  geoff
-+ * Log message for previous revision: add BHASH_C_ZERO_COUNT.
-+ *
-+ * Revision 1.26  1994/07/28  04:53:49  geoff
-+ *
-+ * Revision 1.25  1994/05/24  04:54:36  geoff
-+ * Add error messages for affix-flag checking.
-+ *
-+ * Revision 1.24  1994/01/25  07:12:42  geoff
-+ * Get rid of all old RCS log lines in preparation for the 3.1 release.
-+ *
-+ */
-+
-+/*
-+ * The following strings are used in numerous places:
-+ */
-+#define BAD_FLAG      "\nIllegal affix flag character '%c'\n"
-+#define CANT_OPEN     "Can't open %s"
-+#define CANT_CREATE   "Can't create %s\n"
-+#define WORD_TOO_LONG(w) "\nWord '%s' too long at line %d of %s, truncated\n", \
-+                        w, __LINE__, __FILE__
-+
-+/*
-+ * The following strings are used in buildhash.c:
-+ */
-+#define BHASH_C_NO_DICT               "No dictionary (%s)\n"
-+#define BHASH_C_NO_COUNT      "No count file\n"
-+#define BHASH_C_BAD_COUNT     "Bad count file\n"
-+#define BHASH_C_ZERO_COUNT    "No words in dictionary\n"
-+    /* I think this message looks better when it's nearly 80 characters wide,
-+     * thus the ugly formatting in the next two defines.  GK 9-87 */
-+#define BHASH_C_BAFF_1(max, excess) \
-+  "    Warning:  this language table may exceed the maximum total affix length\nof %d by up to %d bytes.  You should either increase MAXAFFIXLEN in config.X\nor shorten your largest affix/strip string difference.  (This is the\n", \
-+                                max, excess
-+#define BHASH_C_BAFF_2 \
-+  "difference between the affix length and the strip length in a given\nreplacement rule, or the affix length if there is no strip string\nin that rule.)\n"
-+#define BHASH_C_OVERFLOW      "Hash table overflowed by %d words\n"
-+#define BHASH_C_CANT_OPEN_DICT "Can't open dictionary\n"
-+#define BHASH_C_NO_SPACE      "Couldn't allocate hash table\n"
-+#define BHASH_C_COLLISION_SPACE "\ncouldn't allocate space for collision\n"
-+#define BHASH_C_COUNTING      "Counting words in dictionary ...\n"
-+#define BHASH_C_WORD_COUNT    "\n%d words\n"
-+#define BHASH_C_USAGE         "Usage:  buildhash [-s] dict-file aff-file hash-file\n\tbuildhash -c count aff-file\n"
-+
-+/*
-+ * The following strings are used in correct.c:
-+ */
-+#define CORR_C_HELP_1         "Whenever a word is found that is not in the dictionary,\n"
-+#define CORR_C_HELP_2         "it is printed on the first line of the screen.  If the dictionary\n"
-+#define CORR_C_HELP_3         "contains any similar words, they are listed with a number\n"
-+#define CORR_C_HELP_4         "next to each one.  You have the option of replacing the word\n"
-+#define CORR_C_HELP_5         "completely, or choosing one of the suggested words.\n"
-+    /* You may add HELP_6 through HELP_9 if your language needs more lines */
-+#define CORR_C_HELP_6         ""
-+#define CORR_C_HELP_7         ""
-+#define CORR_C_HELP_8         ""
-+#define CORR_C_HELP_9         ""
-+#define CORR_C_HELP_COMMANDS  "\nCommands are:\n\n"
-+#define CORR_C_HELP_R_CMD     "R       Replace the misspelled word completely.\n"
-+#define CORR_C_HELP_BLANK     "Space   Accept the word this time only.\n"
-+#define CORR_C_HELP_A_CMD     "A       Accept the word for the rest of this session.\n"
-+#define CORR_C_HELP_I_CMD     "I       Accept the word, and put it in your private dictionary.\n"
-+#define CORR_C_HELP_U_CMD     "U       Accept and add lowercase version to private dictionary.\n"
-+#define CORR_C_HELP_0_CMD     "0-n     Replace with one of the suggested words.\n"
-+#define CORR_C_HELP_L_CMD     "L       Look up words in system dictionary.\n"
-+#define CORR_C_HELP_X_CMD     "X       Write the rest of this file, ignoring misspellings,\n        and start next file.\n"
-+#define CORR_C_HELP_Q_CMD     "Q       Quit immediately.  Asks for confirmation.\n        Leaves file unchanged.\n"
-+#define CORR_C_HELP_BANG      "!       Shell escape.\n"
-+#define CORR_C_HELP_REDRAW    "^L      Redraw screen.\n"
-+#define CORR_C_HELP_SUSPEND   "^Z      Suspend program.\n"
-+#define CORR_C_HELP_HELP      "?       Show this help screen.\n"
-+#define CORR_C_HELP_TYPE_SPACE        "-- Type space to continue --"
-+
-+#define CORR_C_FILE_LABEL     "              File: %s"
-+#define CORR_C_READONLY               "[READONLY]"
-+#define CORR_C_MINI_MENU      "[SP] <number> R)epl A)ccept I)nsert L)ookup U)ncap Q)uit e(X)it or ? for help\n"
-+#define CORR_C_CONFIRM_QUIT   "Are you sure you want to throw away your changes? "
-+#define CORR_C_REPLACE_WITH   "Replace with: "
-+#define CORR_C_LOOKUP_PROMPT  "Lookup string ('*' is wildcard): "
-+#define CORR_C_MORE_PROMPT    "-- more --"
-+#define CORR_C_BLANK_MORE     "           "
-+#define CORR_C_END_LOOK               "--end--"
-+
-+/*
-+ * The following strings are used in defmt.c:
-+ */
-+#define DEFMT_C_TEX_MATH_ERROR        "****ERROR in parsing TeX math mode!\n"
-+#define DEFMT_C_LR_MATH_ERROR "***ERROR in LR to math-mode switch.\n"
-+
-+/*
-+ * The following strings are used in icombine.c:
-+ */
-+#define ICOMBINE_C_BAD_TYPE   "icombine:  unrecognized formatter type '%s'\n"
-+#define ICOMBINE_C_USAGE      "Usage:  icombine [-T suffix] [aff-file] < wordlist\n"
-+
-+/*
-+ * The following strings are used in ispell.c:
-+ */
-+#define ISPELL_C_USAGE1               "Usage: %s [-dfile | -pfile | -wchars | -Wn | -t | -n | -x | -b | -S | -B | -C | -P | -m | -Lcontext | -M | -N | -Ttype | -V] file .....\n"
-+#define ISPELL_C_USAGE2               "       %s [-dfile | -pfile | -wchars | -Wn | -t | -n | -Ttype] -l\n"
-+#ifndef USG
-+#define ISPELL_C_USAGE3               "       %s [-dfile | -pfile | -ffile | -Wn | -t | -n | -s | -B | -C | -P | -m | -Ttype] {-a | -A}\n"
-+#else
-+#define ISPELL_C_USAGE3               "       %s [-dfile | -pfile | -ffile | -Wn | -t | -n | -B | -C | -P | -m | -Ttype] {-a | -A}\n"
-+#endif
-+#define ISPELL_C_USAGE4               "       %s [-dfile] [-wchars | -Wn] -c\n"
-+#define ISPELL_C_USAGE5               "       %s [-dfile] [-wchars] -e[1-4]\n"
-+#define ISPELL_C_USAGE6               "       %s [-dfile] [-wchars] -D\n"
-+#define ISPELL_C_USAGE7               "       %s -v\n"
-+#define ISPELL_C_TEMP_DISAPPEARED "temporary file disappeared (%s)\n"
-+#define ISPELL_C_BAD_TYPE     "ispell:  unrecognized formatter type '%s'\n"
-+#define ISPELL_C_NO_FILE      "ispell:  specified file does not exist\n"
-+#define ISPELL_C_NO_FILES     "ispell:  specified files do not exist\n"
-+#define ISPELL_C_CANT_WRITE   "Warning:  Can't write to %s\n"
-+#define ISPELL_C_OPTIONS_ARE  "Compiled-in options:\n"
-+#ifdef MSDOS
-+#define ISPELL_C_NO_OPTIONS_SPACE "ispell: no memory to read default options\n"
-+#endif
-+
-+/*
-+ * The following strings are used in lookup.c:
-+ */
-+#define LOOKUP_C_CANT_READ    "Trouble reading hash table %s"
-+#define LOOKUP_C_NULL_HASH    "Null hash table %s"
-+#define LOOKUP_C_SHORT_HASH(name, gotten, wanted) \
-+                              "Truncated hash table %s:  got %d bytes, expected %d", \
-+                                name, gotten, wanted
-+#define LOOKUP_C_BAD_MAGIC(name, wanted, gotten) \
-+                              "Illegal format hash table %s - expected magic 0x%x, got 0x%x", \
-+                                name, wanted, gotten
-+#define LOOKUP_C_BAD_MAGIC2(name, wanted, gotten) \
-+                              "Illegal format hash table %s - \nexpected magic2 0x%x, got 0x%x", \
-+                                name, wanted, gotten
-+#define LOOKUP_C_BAD_OPTIONS(gotopts, gotchars, gotlen, wantedopts, wantedchars, wantedlen) \
-+                              "Hash table options don't agree with buildhash - 0x%x/%d/%d vs. 0x%x/%d/%d", \
-+                                gotopts, gotchars, gotlen, \
-+                                wantedopts, wantedchars, wantedlen
-+#define LOOKUP_C_NO_HASH_SPACE        "Couldn't allocate space for hash table"
-+#define LOOKUP_C_BAD_FORMAT   "Illegal format hash table"
-+#define LOOKUP_C_NO_LANG_SPACE        "Couldn't allocate space for language tables"
-+
-+/*
-+ * The following strings are used in makedent.c:
-+ */
-+#define MAKEDENT_C_NO_WORD_SPACE "\nCouldn't allocate space for word '%s'\n"
-+#define MAKEDENT_C_BAD_WORD_CHAR "\nWord '%s' contains illegal characters\n"
-+
-+/*
-+ * The following strings are used in parse.y:
-+ */
-+#define PARSE_Y_8_BIT         "Eighth bit ignored (recompile ispell without NO8BIT)"
-+#define PARSE_Y_NO_WORD_STRINGS       "wordchars statement may not specify string characters"
-+#define PARSE_Y_UNMATCHED     "Unmatched charset lengths"
-+#define PARSE_Y_NO_BOUNDARY_STRINGS "boundarychars statement may not specify string characters"
-+#define PARSE_Y_LONG_STRING   "String character is too long"
-+#define PARSE_Y_NULL_STRING   "String character must have nonzero length"
-+#define PARSE_Y_MANY_STRINGS  "Too many string characters"
-+#define PARSE_Y_NO_SUCH_STRING        "No such string character"
-+#define PARSE_Y_MULTIPLE_STRINGS "Alternate string character was already defined"
-+#define PARSE_Y_LENGTH_MISMATCH       "Upper and lower versions of string character must be same length"
-+#define PARSE_Y_WRONG_NROFF   "Incorrect character count in nroffchars statement"
-+#define PARSE_Y_WRONG_TEX     "Incorrect character count in TeXchars statement"
-+#define PARSE_Y_DOUBLE_COMPOUND       "Compoundwords option may only appear once"
-+#define PARSE_Y_LONG_FLAG     "Flag must be single character"
-+#define PARSE_Y_BAD_FLAG      "Flag must be alphabetic"
-+#define PARSE_Y_DUP_FLAG      "Duplicate flag"
-+#define PARSE_Y_NO_SPACE      "Out of memory"
-+#define PARSE_Y_NEED_BLANK    "Single characters must be separated by a blank"
-+#define PARSE_Y_MANY_CONDS    "Too many conditions;  8 maximum"
-+#define PARSE_Y_EOF           "Unexpected EOF in quoted string"
-+#define PARSE_Y_LONG_QUOTE    "Quoted string too long, max 256 characters"
-+#define PARSE_Y_ERROR_FORMAT(file, lineno, error) \
-+                              "%s line %d: %s\n", file, lineno, error
-+#define PARSE_Y_MALLOC_TROUBLE        "yyopen:  trouble allocating memory\n"
-+#define PARSE_Y_UNGRAB_PROBLEM        "Internal error:  ungrab buffer overflow"
-+#define PARSE_Y_BAD_DEFORMATTER       "Deformatter must be either 'nroff' or 'tex'"
-+#define PARSE_Y_BAD_NUMBER    "Illegal digit in number"
-+
-+/*
-+ * The following strings are used in term.c:
-+ */
-+#define TERM_C_SMALL_SCREEN   "Screen too small:  need at least %d lines\n"
-+#define TERM_C_NO_BATCH               "Can't deal with non-interactive use yet.\n"
-+#define TERM_C_CANT_FORK      "Couldn't fork, try later.\n"
-+#define TERM_C_TYPE_SPACE     "\n-- Type space to continue --"
-+
-+/*
-+ * The following strings are used in tree.c:
-+ */
-+#define TREE_C_CANT_UPDATE    "Warning: Cannot update personal dictionary (%s)\n"
-+#define TREE_C_NO_SPACE               "Ran out of space for personal dictionary\n"
-+#define TREE_C_TRY_ANYWAY     "Continuing anyway (with reduced performance).\n"
-+
-+/*
-+ * The following strings are used in unsq.c:
-+ */
-+#define UNSQ_C_BAD_COUNT      "Illegal count character 0x%x\n"
-+#define UNSQ_C_SURPRISE_EOF   "Unexpected EOF\n"
-diff -urBbN vim64.org/src/spell/tgood.c vim64/src/spell/tgood.c
---- vim64.org/src/spell/tgood.c        1970-01-01 01:00:00.000000000 +0100
-+++ vim64/src/spell/tgood.c    2005-10-17 12:49:17.517833632 +0200
-@@ -0,0 +1,654 @@
-+/*
-+ * Copyright 1987, 1988, 1989, 1992, 1993, Geoff Kuenning, Granada Hills, CA
-+ * All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ *
-+ * 1. Redistributions of source code must retain the above copyright
-+ *    notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ *    notice, this list of conditions and the following disclaimer in the
-+ *    documentation and/or other materials provided with the distribution.
-+ * 3. All modifications to the source code must be clearly marked as
-+ *    such.  Binary redistributions based on modified source code
-+ *    must be clearly marked as modified versions in the documentation
-+ *    and/or other materials provided with the distribution.
-+ * 4. All advertising materials mentioning features or use of this software
-+ *    must display the following acknowledgment:
-+ *      This product includes software developed by Geoff Kuenning and
-+ *      other unpaid contributors.
-+ * 5. The name of Geoff Kuenning may not be used to endorse or promote
-+ *    products derived from this software without specific prior
-+ *    written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY GEOFF KUENNING AND CONTRIBUTORS ``AS IS'' AND
-+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED.  IN NO EVENT SHALL GEOFF KUENNING OR CONTRIBUTORS BE LIABLE
-+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+ * SUCH DAMAGE.
-+ */
-+
-+/*
-+ * Table-driven version of good.c.
-+ *
-+ * Geoff Kuenning, July 1987
-+ */
-+
-+/*
-+ * $Log$
-+ * Revision 1.32  1994/11/02  06:56:16  geoff
-+ * Remove the anyword feature, which I've decided is a bad idea.
-+ *
-+ * Revision 1.31  1994/10/25  05:46:25  geoff
-+ * Add support for the FF_ANYWORD (affix applies to all words, even if
-+ * flag bit isn't set) flag option.
-+ *
-+ * Revision 1.30  1994/05/24  06:23:08  geoff
-+ * Don't create a hit if "allhits" is clear and capitalization
-+ * mismatches.  This cures a bug where a word could be in the dictionary
-+ * and yet not found.
-+ *
-+ * Revision 1.29  1994/05/17  06:44:21  geoff
-+ * Add support for controlled compound formation and the COMPOUNDONLY
-+ * option to affix flags.
-+ *
-+ * Revision 1.28  1994/01/25  07:12:13  geoff
-+ * Get rid of all old RCS log lines in preparation for the 3.1 release.
-+ *
-+ */
-+
-+#include <ctype.h>
-+#include "ispell.h"
-+
-+Global void   chk_aff (ichar_t * word, ichar_t * ucword, int len,
-+                int ignoreflagbits, int allhits, int pfxopts, int sfxopts);
-+Local void    pfx_list_chk (ichar_t * word, ichar_t * ucword,
-+                int len, int optflags, int sfxopts, struct flagptr * ind,
-+                int ignoreflagbits, int allhits);
-+Local void    chk_suf (ichar_t * word, ichar_t * ucword, int len,
-+                int optflags, struct flagent * pfxent, int ignoreflagbits,
-+                int allhits);
-+Local void    suf_list_chk (ichar_t * word, ichar_t * ucword, int len,
-+                struct flagptr * ind, int optflags, struct flagent * pfxent,
-+                int ignoreflagbits, int allhits);
-+Global int    expand_pre (char * croot, ichar_t * rootword,
-+                MASKTYPE mask[], int option, char * extra);
-+Local int     pr_pre_expansion (char * croot, ichar_t * rootword,
-+                struct flagent * flent, MASKTYPE mask[], int option,
-+                char * extra);
-+Global int    expand_suf (char * croot, ichar_t * rootword,
-+                MASKTYPE mask[], int optflags, int option, char * extra);
-+Local int     pr_suf_expansion (char * croot, ichar_t * rootword,
-+                struct flagent * flent, int option, char * extra);
-+Local void    forcelc (ichar_t * dst, int len);
-+
-+/* Check possible affixes */
-+Public void 
-+chk_aff (
-+    ichar_t *         word,           /* Word to be checked */
-+    ichar_t *         ucword,         /* Upper-case-only copy of word */
-+    int                       len,            /* The length of word/ucword */
-+    int                       ignoreflagbits, /* Ignore whether affix is legal */
-+    int                       allhits,        /* Keep going after first hit */
-+    int                       pfxopts,        /* Options to apply to prefixes */
-+    int                       sfxopts)        /* Options to apply to suffixes */
-+    {
-+    register ichar_t *        cp;             /* Pointer to char to index on */
-+    struct flagptr *  ind;            /* Flag index table to test */
-+
-+    pfx_list_chk (word, ucword, len, pfxopts, sfxopts, &pflagindex[0],
-+                                                ignoreflagbits, allhits);
-+    cp = ucword;
-+    ind = &pflagindex[*cp++];
-+    while (ind->numents == 0  &&  ind->pu.fp != NULL)
-+      {
-+      if (*cp == 0)
-+          return;
-+      if (ind->pu.fp[0].numents)
-+          {
-+          pfx_list_chk (word, ucword, len, pfxopts, sfxopts, &ind->pu.fp[0],
-+                                                ignoreflagbits, allhits);
-+          if (numhits  &&  !allhits  &&  !cflag  &&  !ignoreflagbits)
-+              return;
-+          }
-+      ind = &ind->pu.fp[*cp++];
-+      }
-+    pfx_list_chk (word, ucword, len, pfxopts, sfxopts, ind, ignoreflagbits,
-+                                                                    allhits);
-+    if (numhits  &&  !allhits  &&  !cflag  &&  !ignoreflagbits)
-+      return;
-+    chk_suf (word, ucword, len, sfxopts, (struct flagent *) NULL,
-+                                                    ignoreflagbits, allhits);
-+    }
-+
-+/* Check some prefix flags */
-+Local void 
-+pfx_list_chk(
-+    ichar_t *         word,           /* Word to be checked */
-+    ichar_t *         ucword,         /* Upper-case-only word */
-+    int                       len,            /* The length of ucword */
-+    int                       optflags,       /* Options to apply */
-+    int                       sfxopts,        /* Options to apply to suffixes */
-+    struct flagptr *  ind,            /* Flag index table */
-+    int                       ignoreflagbits, /* Ignore whether affix is legal */
-+    int                       allhits)        /* Keep going after first hit */
-+    {
-+    int                       cond;           /* Condition number */
-+    register ichar_t *        cp;             /* Pointer into end of ucword */
-+    struct dent *     dent;           /* Dictionary entry we found */
-+    int                       entcount;       /* Number of entries to process */
-+    register struct flagent *
-+                      flent;          /* Current table entry */
-+    int                       preadd;         /* Length added to tword2 as prefix */
-+    register int      tlen;           /* Length of tword */
-+    ichar_t           tword[INPUTWORDLEN + 4 * MAXAFFIXLEN + 4]; /* Tmp cpy */
-+    ichar_t           tword2[sizeof tword]; /* 2nd copy for ins_root_cap */
-+
-+    for (flent = ind->pu.ent, entcount = ind->numents;
-+                                        entcount > 0; flent++, entcount--)
-+      {
-+      /*
-+       * If this is a compound-only affix, ignore it unless we're
-+       * looking for that specific thing.
-+       */
-+      if ((flent->flagflags & FF_COMPOUNDONLY) != 0
-+        &&  (optflags & FF_COMPOUNDONLY) == 0)
-+          continue;
-+      /*
-+       * In COMPOUND_CONTROLLED mode, the FF_COMPOUNDONLY bit must
-+       * match exactly.
-+       */
-+      if (compoundflag == COMPOUND_CONTROLLED
-+        &&  ((flent->flagflags ^ optflags) & FF_COMPOUNDONLY) != 0)
-+          continue;
-+      /*
-+       * See if the prefix matches.
-+       */
-+      tlen = len - flent->affl;
-+      if (tlen > 0 &&  (flent->affl == 0 ||
-+                      icharncmp (flent->affix, ucword, flent->affl) == 0) &&
-+                                 tlen + flent->stripl >= flent->numconds)
-+          {
-+          /*
-+           * The prefix matches.  Remove it, replace it by the "strip"
-+           * string (if any), and check the original conditions.
-+           */
-+          if (flent->stripl)
-+              (void) icharcpy (tword, flent->strip);
-+          (void) icharcpy (tword + flent->stripl, ucword + flent->affl);
-+          cp = tword;
-+          for (cond = 0;  cond < flent->numconds;  cond++)
-+              {
-+              if ((flent->conds[*cp++] & (1 << cond)) == 0)
-+                  break;
-+              }
-+          if (cond >= flent->numconds)
-+              {
-+              /*
-+               * The conditions match.  See if the word is in the
-+               * dictionary.
-+               */
-+              tlen += flent->stripl;
-+              if (cflag)
-+                  flagpr (tword, BITTOCHAR (flent->flagbit), flent->stripl,
-+                    flent->affl, -1, 0);
-+              else if (ignoreflagbits)
-+                  {
-+                  if ((dent = lookup (tword, 1)) != NULL)
-+                      {
-+                      cp = tword2;
-+                      if (flent->affl)
-+                          {
-+                          (void) icharcpy (cp, flent->affix);
-+                          cp += flent->affl;
-+                          *cp++ = '+';
-+                          }
-+                      preadd = cp - tword2;
-+                      (void) icharcpy (cp, tword);
-+                      cp += tlen;
-+                      if (flent->stripl)
-+                          {
-+                          *cp++ = '-';
-+                          (void) icharcpy (cp, flent->strip);
-+                          }
-+                      (void) ins_root_cap (tword2, word,
-+                                    flent->stripl, preadd,
-+                                        0, (cp - tword2) - tlen - preadd,
-+                                        dent, flent, (struct flagent *) NULL);
-+                      }
-+                  }
-+              else if ((dent = lookup (tword, 1)) != NULL
-+                                &&  TSTMASKBIT (dent->mask, flent->flagbit))
-+                  {
-+                  if (numhits < MAX_HITS)
-+                      {
-+                      hits[numhits].dictent = dent;
-+                      hits[numhits].prefix = flent;
-+                      hits[numhits].suffix = NULL;
-+                      numhits++;
-+                      }
-+                  if (!allhits)
-+                      {
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+                      if (cap_ok (word, &hits[0], len))
-+                          return;
-+                      numhits = 0;
-+#else /* NO_CAPITALIZATION_SUPPORT */
-+                      return;
-+#endif /* NO_CAPITALIZATION_SUPPORT */
-+                      }
-+                  }
-+              /*
-+               * Handle cross-products.
-+               */
-+              if (flent->flagflags & FF_CROSSPRODUCT)
-+                  chk_suf (word, tword, tlen, sfxopts | FF_CROSSPRODUCT,
-+                                            flent, ignoreflagbits, allhits);
-+              }
-+          }
-+      }
-+    }
-+
-+/* Check possible suffixes */
-+Local void 
-+chk_suf(
-+    ichar_t *         word,           /* Word to be checked */
-+    ichar_t *         ucword,         /* Upper-case-only word */
-+    int                       len,            /* The length of ucword */
-+    int                       optflags,       /* Affix option flags */
-+    struct flagent *  pfxent,         /* Prefix flag entry if cross-prod */
-+    int                       ignoreflagbits, /* Ignore whether affix is legal */
-+    int                       allhits)        /* Keep going after first hit */
-+    {
-+    register ichar_t *        cp;             /* Pointer to char to index on */
-+    struct flagptr *  ind;            /* Flag index table to test */
-+
-+    suf_list_chk (word, ucword, len, &sflagindex[0], optflags, pfxent,
-+                                                ignoreflagbits, allhits);
-+    cp = ucword + len - 1;
-+    ind = &sflagindex[*cp];
-+    while (ind->numents == 0  &&  ind->pu.fp != NULL)
-+      {
-+      if (cp == ucword)
-+          return;
-+      if (ind->pu.fp[0].numents)
-+          {
-+          suf_list_chk (word, ucword, len, &ind->pu.fp[0],
-+                                optflags, pfxent, ignoreflagbits, allhits);
-+          if (numhits != 0  &&  !allhits  &&  !cflag  &&  !ignoreflagbits)
-+              return;
-+          }
-+      ind = &ind->pu.fp[*--cp];
-+      }
-+    suf_list_chk (word, ucword, len, ind, optflags, pfxent,
-+                                                ignoreflagbits, allhits);
-+    }
-+    
-+Local void 
-+suf_list_chk (
-+    ichar_t *         word,           /* Word to be checked */
-+    ichar_t *         ucword,         /* Upper-case-only word */
-+    int                       len,            /* The length of ucword */
-+    struct flagptr *  ind,            /* Flag index table */
-+    int                       optflags,       /* Affix option flags */
-+    struct flagent *  pfxent,         /* Prefix flag entry if crossonly */
-+    int                       ignoreflagbits, /* Ignore whether affix is legal */
-+    int                       allhits)        /* Keep going after first hit */
-+{
-+    register ichar_t *        cp;             /* Pointer into end of ucword */
-+    int                       cond;           /* Condition number */
-+    struct dent *     dent;           /* Dictionary entry we found */
-+    int                       entcount;       /* Number of entries to process */
-+    register struct flagent *
-+                      flent;          /* Current table entry */
-+    int                       preadd;         /* Length added to tword2 as prefix */
-+    register int      tlen;           /* Length of tword */
-+    ichar_t           tword[INPUTWORDLEN + 4 * MAXAFFIXLEN + 4]; /* Tmp cpy */
-+    ichar_t           tword2[sizeof tword]; /* 2nd copy for ins_root_cap */
-+
-+    (void) icharcpy (tword, ucword);
-+    for (flent = ind->pu.ent, entcount = ind->numents;
-+      entcount > 0;
-+      flent++, entcount--)
-+      {
-+      if ((optflags & FF_CROSSPRODUCT) != 0
-+        &&  (flent->flagflags & FF_CROSSPRODUCT) == 0)
-+          continue;
-+      /*
-+       * If this is a compound-only affix, ignore it unless we're
-+       * looking for that specific thing.
-+       */
-+      if ((flent->flagflags & FF_COMPOUNDONLY) != 0
-+        &&  (optflags & FF_COMPOUNDONLY) == 0)
-+          continue;
-+      /*
-+       * In COMPOUND_CONTROLLED mode, the FF_COMPOUNDONLY bit must
-+       * match exactly.
-+       */
-+      if (compoundflag == COMPOUND_CONTROLLED
-+        &&  ((flent->flagflags ^ optflags) & FF_COMPOUNDONLY) != 0)
-+          continue;
-+      /*
-+       * See if the suffix matches.
-+       */
-+      tlen = len - flent->affl;
-+      if (tlen > 0
-+        &&  (flent->affl == 0
-+          ||  icharcmp (flent->affix, ucword + tlen) == 0)
-+        &&  tlen + flent->stripl >= flent->numconds)
-+          {
-+          /*
-+           * The suffix matches.  Remove it, replace it by the "strip"
-+           * string (if any), and check the original conditions.
-+           */
-+          (void) icharcpy (tword, ucword);
-+          cp = tword + tlen;
-+          if (flent->stripl)
-+              {
-+              (void) icharcpy (cp, flent->strip);
-+              tlen += flent->stripl;
-+              cp = tword + tlen;
-+              }
-+          else
-+              *cp = '\0';
-+          for (cond = flent->numconds;  --cond >= 0;  )
-+              {
-+              if ((flent->conds[*--cp] & (1 << cond)) == 0)
-+                  break;
-+              }
-+          if (cond < 0)
-+              {
-+              /*
-+               * The conditions match.  See if the word is in the
-+               * dictionary.
-+               */
-+              if (cflag)
-+                  {
-+                  if (optflags & FF_CROSSPRODUCT)
-+                      flagpr (tword, BITTOCHAR (pfxent->flagbit),
-+                        pfxent->stripl, pfxent->affl,
-+                        BITTOCHAR (flent->flagbit), flent->affl);
-+                  else
-+                      flagpr (tword, -1, 0, 0,
-+                        BITTOCHAR (flent->flagbit), flent->affl);
-+                  }
-+              else if (ignoreflagbits)
-+                  {
-+                  if ((dent = lookup (tword, 1)) != NULL)
-+                      {
-+                      cp = tword2;
-+                      if ((optflags & FF_CROSSPRODUCT)
-+                        &&  pfxent->affl != 0)
-+                          {
-+                          (void) icharcpy (cp, pfxent->affix);
-+                          cp += pfxent->affl;
-+                          *cp++ = '+';
-+                          }
-+                      preadd = cp - tword2;
-+                      (void) icharcpy (cp, tword);
-+                      cp += tlen;
-+                      if ((optflags & FF_CROSSPRODUCT)
-+                        &&  pfxent->stripl != 0)
-+                          {
-+                          *cp++ = '-';
-+                          (void) icharcpy (cp, pfxent->strip);
-+                          cp += pfxent->stripl;
-+                          }
-+                      if (flent->stripl)
-+                          {
-+                          *cp++ = '-';
-+                          (void) icharcpy (cp, flent->strip);
-+                          cp += flent->stripl;
-+                          }
-+                      if (flent->affl)
-+                          {
-+                          *cp++ = '+';
-+                          (void) icharcpy (cp, flent->affix);
-+                          cp += flent->affl;
-+                          }
-+                      (void) ins_root_cap (tword2, word,
-+                        (optflags & FF_CROSSPRODUCT) ? pfxent->stripl : 0,
-+                        preadd,
-+                        flent->stripl, (cp - tword2) - tlen - preadd,
-+                        dent, pfxent, flent);
-+                      }
-+                  }
-+              else if ((dent = lookup (tword, 1)) != NULL
-+                &&  TSTMASKBIT (dent->mask, flent->flagbit)
-+                &&  ((optflags & FF_CROSSPRODUCT) == 0
-+                  || TSTMASKBIT (dent->mask, pfxent->flagbit)))
-+                  {
-+                  if (numhits < MAX_HITS)
-+                      {
-+                      hits[numhits].dictent = dent;
-+                      hits[numhits].prefix = pfxent;
-+                      hits[numhits].suffix = flent;
-+                      numhits++;
-+                      }
-+                  if (!allhits)
-+                      {
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+                      if (cap_ok (word, &hits[0], len))
-+                          return;
-+                      numhits = 0;
-+#else /* NO_CAPITALIZATION_SUPPORT */
-+                      return;
-+#endif /* NO_CAPITALIZATION_SUPPORT */
-+                      }
-+                  }
-+              }
-+          }
-+      }
-+}
-+
-+/*
-+ * Expand a dictionary prefix entry
-+ */
-+Public int
-+expand_pre(
-+    char *                    croot,          /* Char version of rootword */
-+    ichar_t *                 rootword,       /* Root word to expand */
-+    register MASKTYPE         mask[],         /* Mask bits to expand on */
-+    int                               option,         /* Option, see expandmode */
-+    char *                    extra)          /* Extra info to add to line */
-+{
-+    int                               entcount;       /* No. of entries to process */
-+    int                               explength;      /* Length of expansions */
-+    register struct flagent *
-+                              flent;          /* Current table entry */
-+
-+    for (flent = pflaglist, entcount = numpflags, explength = 0;
-+                                            entcount > 0; flent++, entcount--)
-+      {
-+      if (TSTMASKBIT (mask, flent->flagbit))
-+          explength +=
-+            pr_pre_expansion (croot, rootword, flent, mask, option, extra);
-+      }
-+    return explength;
-+}
-+
-+/* Print a prefix expansion */
-+Local int 
-+pr_pre_expansion(
-+    char *                    croot,          /* Char version of rootword */
-+    register ichar_t *                rootword,       /* Root word to expand */
-+    register struct flagent * flent,          /* Current table entry */
-+    MASKTYPE                  mask[],         /* Mask bits to expand on */
-+    int                               option,         /* Option, see  expandmode */
-+    char *                    extra)          /* Extra info to add to line */
-+{
-+    int                               cond;           /* Current condition number */
-+    register ichar_t *                nextc;          /* Next case choice */
-+    int                               tlen;           /* Length of tword */
-+    ichar_t                   tword[INPUTWORDLEN + MAXAFFIXLEN]; /* Temp */
-+
-+    tlen = icharlen (rootword);
-+    if (flent->numconds > tlen)
-+      return 0;
-+    tlen -= flent->stripl;
-+    if (tlen <= 0)
-+      return 0;
-+    tlen += flent->affl;
-+    for (cond = 0, nextc = rootword;  cond < flent->numconds;  cond++)
-+      {
-+      if ((flent->conds[mytoupper (*nextc++)] & (1 << cond)) == 0)
-+          return 0;
-+      }
-+    /*
-+     * The conditions are satisfied.  Copy the word, add the prefix,
-+     * and make it the proper case.   This code is carefully written
-+     * to match that ins_cap and cap_ok.  Note that the affix, as
-+     * inserted, is uppercase.
-+     *
-+     * There is a tricky bit here:  if the root is capitalized, we
-+     * want a capitalized result.  If the root is followcase, however,
-+     * we want to duplicate the case of the first remaining letter
-+     * of the root.  In other words, "Loved/U" should generate "Unloved",
-+     * but "LOved/U" should generate "UNLOved" and "lOved/U" should
-+     * produce "unlOved".
-+     */
-+    if (flent->affl)
-+      {
-+      (void) icharcpy (tword, flent->affix);
-+      nextc = tword + flent->affl;
-+      }
-+    (void) icharcpy (nextc, rootword + flent->stripl);
-+    if (myupper (rootword[0]))
-+      {
-+      /* We must distinguish followcase from capitalized and all-upper */
-+      for (nextc = rootword + 1;  *nextc;  nextc++)
-+          {
-+          if (!myupper (*nextc))
-+              break;
-+          }
-+      if (*nextc)
-+          {
-+          /* It's a followcase or capitalized word.  Figure out which. */
-+          for (  ;  *nextc;  nextc++)
-+              {
-+              if (myupper (*nextc))
-+                  break;
-+              }
-+          if (*nextc)
-+              {
-+              /* It's followcase. */
-+              if (!myupper (tword[flent->affl]))
-+                  forcelc (tword, flent->affl);
-+              }
-+          else
-+              {
-+              /* It's capitalized */
-+              forcelc (tword + 1, tlen - 1);
-+              }
-+          }
-+      }
-+    else
-+      {
-+      /* Followcase or all-lower, we don't care which */
-+      if (!myupper (*nextc))
-+          forcelc (tword, flent->affl);
-+      }
-+    if (option == 3)
-+      (void) printf ("\n%s", croot);
-+    if (option != 4)
-+      (void) printf (" %s%s", ichartosstr (tword, 1), extra);
-+    if (flent->flagflags & FF_CROSSPRODUCT)
-+      return tlen
-+        + expand_suf (croot, tword, mask, FF_CROSSPRODUCT, option, extra);
-+    else
-+      return tlen;
-+}
-+
-+/*
-+ * Expand a dictionary suffix entry
-+ */
-+int expand_suf (croot, rootword, mask, optflags, option, extra)
-+    char *                    croot;          /* Char version of rootword */
-+    ichar_t *                 rootword;       /* Root word to expand */
-+    register MASKTYPE         mask[];         /* Mask bits to expand on */
-+    int                               optflags;       /* Affix option flags */
-+    int                               option;         /* Option, see expandmode */
-+    char *                    extra;          /* Extra info to add to line */
-+    {
-+    int                               entcount;       /* No. of entries to process */
-+    int                               explength;      /* Length of expansions */
-+    register struct flagent *
-+                              flent;          /* Current table entry */
-+
-+    for (flent = sflaglist, entcount = numsflags, explength = 0;
-+      entcount > 0;
-+      flent++, entcount--)
-+      {
-+      if (TSTMASKBIT (mask, flent->flagbit))
-+          {
-+          if ((optflags & FF_CROSSPRODUCT) == 0
-+            ||  (flent->flagflags & FF_CROSSPRODUCT))
-+              explength +=
-+                pr_suf_expansion (croot, rootword, flent, option, extra);
-+          }
-+      }
-+    return explength;
-+    }
-+
-+/* Print a suffix expansion */
-+static int pr_suf_expansion (croot, rootword, flent, option, extra)
-+    char *                    croot;          /* Char version of rootword */
-+    register ichar_t *                rootword;       /* Root word to expand */
-+    register struct flagent * flent;          /* Current table entry */
-+    int                               option;         /* Option, see expandmode */
-+    char *                    extra;          /* Extra info to add to line */
-+    {
-+    int                               cond;           /* Current condition number */
-+    register ichar_t *                nextc;          /* Next case choice */
-+    int                               tlen;           /* Length of tword */
-+    ichar_t                   tword[INPUTWORDLEN + MAXAFFIXLEN]; /* Temp */
-+
-+    tlen = icharlen (rootword);
-+    cond = flent->numconds;
-+    if (cond > tlen)
-+      return 0;
-+    if (tlen - flent->stripl <= 0)
-+      return 0;
-+    for (nextc = rootword + tlen;  --cond >= 0;  )
-+      {
-+      if ((flent->conds[mytoupper (*--nextc)] & (1 << cond)) == 0)
-+          return 0;
-+      }
-+    /*
-+     * The conditions are satisfied.  Copy the word, add the suffix,
-+     * and make it match the case of the last remaining character of the
-+     * root.  Again, this code carefully matches ins_cap and cap_ok.
-+     */
-+    (void) icharcpy (tword, rootword);
-+    nextc = tword + tlen - flent->stripl;
-+    if (flent->affl)
-+      {
-+      (void) icharcpy (nextc, flent->affix);
-+      if (!myupper (nextc[-1]))
-+          forcelc (nextc, flent->affl);
-+      }
-+    else
-+      *nextc = 0;
-+    if (option == 3)
-+      (void) printf ("\n%s", croot);
-+    if (option != 4)
-+      (void) printf (" %s%s", ichartosstr (tword, 1), extra);
-+    return tlen + flent->affl - flent->stripl;
-+    }
-+
-+static void forcelc (dst, len)                        /* Force to lowercase */
-+    register ichar_t *                dst;            /* Destination to modify */
-+    register int              len;            /* Length to copy */
-+    {
-+
-+    for (  ;  --len >= 0;  dst++)
-+      *dst = mytolower (*dst);
-+    }
-diff -urBbN vim64.org/src/spell/tree.c vim64/src/spell/tree.c
---- vim64.org/src/spell/tree.c 1970-01-01 01:00:00.000000000 +0100
-+++ vim64/src/spell/tree.c     2005-10-17 12:49:17.518833480 +0200
-@@ -0,0 +1,748 @@
-+/*
-+ * tree.c - a hash style dictionary for user's personal words
-+ *
-+ * Pace Willisson, 1983
-+ * Hash support added by Geoff Kuenning, 1987
-+ *
-+ * Copyright 1987, 1988, 1989, 1992, 1993, Geoff Kuenning, Granada Hills, CA
-+ * All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ *
-+ * 1. Redistributions of source code must retain the above copyright
-+ *    notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ *    notice, this list of conditions and the following disclaimer in the
-+ *    documentation and/or other materials provided with the distribution.
-+ * 3. All modifications to the source code must be clearly marked as
-+ *    such.  Binary redistributions based on modified source code
-+ *    must be clearly marked as modified versions in the documentation
-+ *    and/or other materials provided with the distribution.
-+ * 4. All advertising materials mentioning features or use of this software
-+ *    must display the following acknowledgment:
-+ *      This product includes software developed by Geoff Kuenning and
-+ *      other unpaid contributors.
-+ * 5. The name of Geoff Kuenning may not be used to endorse or promote
-+ *    products derived from this software without specific prior
-+ *    written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY GEOFF KUENNING AND CONTRIBUTORS ``AS IS'' AND
-+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED.  IN NO EVENT SHALL GEOFF KUENNING OR CONTRIBUTORS BE LIABLE
-+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+ * SUCH DAMAGE.
-+ */
-+
-+/*
-+ * $Log$
-+ * Revision 1.56  1995/01/08  23:23:49  geoff
-+ * Support PDICTHOME for DOS purposes.
-+ *
-+ * Revision 1.55  1994/10/25  05:46:27  geoff
-+ * Fix a comment that looked to some compilers like it might be nested.
-+ *
-+ * Revision 1.54  1994/01/25  07:12:15  geoff
-+ * Get rid of all old RCS log lines in preparation for the 3.1 release.
-+ *
-+ */
-+
-+#include <ctype.h>
-+#include <stdlib.h>
-+#include <errno.h>
-+#include "ispell.h"
-+#include "msgs.h"
-+
-+Local FILE *  trydict (char * dictname, char * home,
-+                                        char * prefix, char * suffix);
-+Local void    treeload (FILE * dictf);
-+Local struct dent * tinsert (struct dent * proto);
-+#if SORTPERSONAL != 0
-+Local int     pdictcmp (struct dent ** enta, struct dent **entb);
-+#endif /* SORTPERSONAL != 0 */
-+#ifdef REGEX_LOOKUP
-+#endif /* REGEX_LOOKUP */
-+
-+Local int             cantexpand = 0; /* NZ if an expansion fails */
-+Local struct dent *   pershtab;       /* Aux hash table for personal dict */
-+Local int             pershsize = 0;  /* Space available in aux hash table */
-+Local int             hcount = 0;     /* Number of items in hash table */
-+
-+/*
-+ * Hash table sizes.  Prime is probably a good idea, though in truth I
-+ * whipped the algorithm up on the spot rather than looking it up, so
-+ * who knows what's really best?  If we overflow the table, we just
-+ * use a double-and-add-1 algorithm.
-+ */
-+static int goodsizes[] =
-+    {
-+    53, 223, 907, 3631
-+    };
-+
-+Local char            personaldict[MAXPATHLEN];
-+Local FILE *          dictf;
-+Local                 newwords = 0;
-+
-+Public void 
-+treeinit (
-+    char *            p,              /* Value specified in -p switch */
-+    char *            LibDict)        /* Root of default dict name */
-+{
-+    int                       abspath;        /* NZ if p is abs path name */
-+    char *            h;              /* Home directory name */
-+    char              seconddict[MAXPATHLEN]; /* Name of secondary dict */
-+    FILE *            secondf;        /* Access to second dict file */
-+
-+    /*
-+    ** If -p was not specified, try to get a default name from the
-+    ** environment.  After this point, if p is null, the the value in
-+    ** personaldict is the only possible name for the personal dictionary.
-+    ** If p is non-null, then there is a possibility that we should
-+    ** prepend HOME to get the correct dictionary name.
-+    */
-+    if (p == NULL)
-+      p = getenv (PDICTVAR);
-+    /*
-+    ** if p exists and begins with '/' we don't really need HOME,
-+    ** but it's not very likely that HOME isn't set anyway (on non-DOS
-+    ** systems).
-+    */
-+       {
-+      int  i;
-+      struct dent *x;
-+
-+      for(i = 0; i < pershsize; i++)
-+         {
-+          x = &pershtab[i];
-+          if(x->word != NULL)
-+              free(x->word);
-+          for(x = x->next; x != NULL;)
-+             {
-+              struct dent *y;
-+
-+              if(x->word != NULL)
-+                  free(x->word);
-+              y = x;
-+              x = x->next;
-+              free(y);
-+             }
-+         }
-+      if(pershtab != NULL)
-+          free(pershtab);
-+      pershtab = NULL;
-+      pershsize = 0;
-+      hcount = 0;
-+       }
-+    if ((h = getenv (HOME)) == NULL)
-+      {
-+#ifdef PDICTHOME
-+      h = PDICTHOME;
-+#else /* PDICTHOME */
-+      return;
-+#endif /* PDICTHOME */
-+      }
-+
-+    if (p == NULL)
-+      {
-+      /*
-+       * No -p and no PDICTVAR.  We will use LibDict and DEFPAFF to
-+       * figure out the name of the personal dictionary and where it
-+       * is.  The rules are as follows:
-+       *
-+       * (1) If there is a local dictionary and a HOME dictionary,
-+       *     both are loaded, but changes are saved in the local one.
-+       *     The dictionary to save changes in is named "personaldict".
-+       * (2) Dictionaries named after the affix file take precedence
-+       *     over dictionaries with the default suffix (DEFPAFF).
-+       * (3) Dictionaries named with the new default names
-+       *     (DEFPDICT/DEFPAFF) take precedence over the old ones
-+       *     (OLDPDICT/OLDPAFF).
-+       * (4) Dictionaries aren't combined unless they follow the same
-+       *     naming scheme.
-+       * (5) If no dictionary can be found, a new one is created in
-+       *     the home directory, named after DEFPDICT and the affix
-+       *     file.
-+       */
-+      dictf = trydict (personaldict, (char *) NULL, DEFPDICT, LibDict);
-+      secondf = trydict (seconddict, h, DEFPDICT, LibDict);
-+      if (dictf == NULL  &&  secondf == NULL)
-+          {
-+          dictf = trydict (personaldict, (char *) NULL, DEFPDICT, DEFPAFF);
-+          secondf = trydict (seconddict, h, DEFPDICT, DEFPAFF);
-+          }
-+      if (dictf == NULL  &&  secondf == NULL)
-+          {
-+          dictf = trydict (personaldict, (char *) NULL, OLDPDICT, LibDict);
-+          secondf = trydict (seconddict, h, OLDPDICT, LibDict);
-+          }
-+      if (dictf == NULL  &&  secondf == NULL)
-+          {
-+          dictf = trydict (personaldict, (char *) NULL, OLDPDICT, OLDPAFF);
-+          secondf = trydict (seconddict, h, OLDPDICT, OLDPAFF);
-+          }
-+      if (personaldict[0] == '\0')
-+          {
-+          if (seconddict[0] != '\0')
-+              (void) strcpy (personaldict, seconddict);
-+          else
-+              (void) sprintf (personaldict, "%s/%s%s", h, DEFPDICT, LibDict);
-+          }
-+      if (dictf != NULL)
-+          {
-+          treeload (dictf);
-+          (void) fclose (dictf);
-+          }
-+      if (secondf != NULL)
-+          {
-+          treeload (secondf);
-+          (void) fclose (secondf);
-+          }
-+      }
-+    else
-+      {
-+      /*
-+      ** Figure out if p is an absolute path name.  Note that beginning
-+      ** with "./" and "../" is considered an absolute path, since this
-+      ** still means we can't prepend HOME.
-+      */
-+      abspath = (*p == '/'  ||  strncmp (p, "./", 2) == 0
-+        ||  strncmp (p, "../", 3) == 0);
-+#ifdef MSDOS
-+      if (!abspath)
-+          abspath = (*p == '\\' || strncmp (p, ".\\", 2) == 0
-+                     || strncmp (p, "..\\", 3) == 0
-+                     || (p[0] && p[1] == ':'));
-+#endif
-+      if (abspath)
-+          {
-+          (void) strcpy (personaldict, p);
-+          if ((dictf = fopen (personaldict, "r")) != NULL)
-+              {
-+              treeload (dictf);
-+              (void) fclose (dictf);
-+              }
-+          }
-+      else
-+          {
-+          /*
-+          ** The user gave us a relative pathname.  We will try it
-+          ** locally, and if that doesn't work, we'll try the home
-+          ** directory.  If neither exists, it will be created in
-+          ** the home directory if words are added.
-+          */
-+          (void) strcpy (personaldict, p);
-+          if ((dictf = fopen (personaldict, "r")) != NULL)
-+              {
-+              treeload (dictf);
-+              (void) fclose (dictf);
-+              }
-+          else if (!abspath)
-+              {
-+              /* Try the home */
-+              (void) sprintf (personaldict, "%s/%s", h, p);
-+              if ((dictf = fopen (personaldict, "r")) != NULL)
-+                  {
-+                  treeload (dictf);
-+                  (void) fclose (dictf);
-+                  }
-+              }
-+          /*
-+           * If dictf is null, we couldn't open the dictionary
-+           * specified in the -p switch.  Complain.
-+           */
-+          if (dictf == NULL)
-+              {
-+              (void) fprintf (stderr, CANT_OPEN, p);
-+              perror ("");
-+              return;
-+              }
-+          }
-+      }
-+
-+#ifndef FEAT_SPELL_HL
-+    if (!lflag  &&  !aflag
-+      &&  access (personaldict, 2) < 0  &&  errno != ENOENT)
-+      {
-+      (void) fprintf (stderr, TREE_C_CANT_UPDATE, personaldict);
-+      (void) sleep ((unsigned) 2);
-+      }
-+#endif
-+}
-+
-+/*
-+ * Try to open a dictionary.  As a side effect, leaves the dictionary
-+ * name in "filename" if one is found, and leaves a null string there
-+ * otherwise.
-+ */
-+Local FILE * 
-+trydict (
-+    char *            filename,       /* Where to store the file name */
-+    char *            home,           /* Home directory */
-+    char *            prefix,         /* Prefix for dictionary */
-+    char *            suffix)         /* Suffix for dictionary */
-+{
-+    FILE *            dictf;          /* Access to dictionary file */
-+
-+    if (home == NULL)
-+      (void) sprintf (filename, "%s%s", prefix, suffix);
-+    else
-+      (void) sprintf (filename, "%s/%s%s", home, prefix, suffix);
-+    dictf = fopen (filename, "r");
-+    if (dictf == NULL)
-+      filename[0] = '\0';
-+    return dictf;
-+}
-+
-+Local void 
-+treeload (
-+    register FILE *   loadfile)       /* File to load words from */
-+{
-+    char              buf[BUFSIZ];    /* Buffer for reading pers dict */
-+
-+    while (fgets (buf, sizeof buf, loadfile) != NULL)
-+      treeinsert (buf, sizeof(buf), 1);
-+    newwords = 0;
-+}
-+
-+Public  void
-+treeinsert (
-+    char *            word,   /* Word to insert - must be canonical */
-+    int                       wordlen, /* Length of the word buffer */
-+    int                       keep)
-+{
-+    register int      i, len;
-+    struct dent               wordent;
-+    register struct dent * dp;
-+    struct dent *     olddp;
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+    struct dent *     newdp;
-+#endif
-+    struct dent *     oldhtab;
-+    int                       oldhsize;
-+    ichar_t           nword[INPUTWORDLEN + MAXAFFIXLEN];
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+    int                       isvariant;
-+#endif
-+
-+    len = strlen(word);
-+    if((word[len - 1] == '\n') || (word[len - 1] == '\r'))
-+      word[len - 1] = '\0', len--;
-+    if((word[len - 1] == '\n') || (word[len - 1] == '\r'))
-+      word[len - 1] = '\0';
-+    /*
-+     * Expand hash table when it is MAXPCT % full.
-+     */
-+    if (!cantexpand  &&  (hcount * 100) / MAXPCT >= pershsize)
-+      {
-+      oldhsize = pershsize;
-+      oldhtab = pershtab;
-+      for (i = 0;  i < sizeof goodsizes / sizeof (goodsizes[0]);  i++)
-+          if (goodsizes[i] > pershsize)
-+              break;
-+      if (i >= sizeof goodsizes / sizeof goodsizes[0])
-+          pershsize += pershsize + 1;
-+      else
-+          pershsize = goodsizes[i];
-+      pershtab =
-+        (struct dent *) calloc ((unsigned) pershsize, sizeof (struct dent));
-+      if (pershtab == NULL)
-+          {
-+          (void) fprintf (stderr, TREE_C_NO_SPACE);
-+          /*
-+           * Try to continue anyway, since our overflow
-+           * algorithm can handle an overfull (100%+) table,
-+           * and the malloc very likely failed because we
-+           * already have such a huge table, so small mallocs
-+           * for overflow entries will still work.
-+           */
-+          if (oldhtab == NULL)
-+              exit (1);               /* No old table, can't go on */
-+          (void) fprintf (stderr, TREE_C_TRY_ANYWAY);
-+          cantexpand = 1;             /* Suppress further messages */
-+          pershsize = oldhsize;       /* Put things back */
-+          pershtab = oldhtab;         /* ... */
-+          newwords = 1;               /* And pretend it worked */
-+          }
-+      else
-+          {
-+          /*
-+           * Re-insert old entries into new table
-+           */
-+          for (i = 0;  i < oldhsize;  i++)
-+              {
-+              dp = &oldhtab[i];
-+              if (dp->flagfield & USED)
-+                  {
-+#ifdef NO_CAPITALIZATION_SUPPORT
-+                  (void) tinsert (dp);
-+#else
-+                  newdp = tinsert (dp);
-+                  isvariant = (dp->flagfield & MOREVARIANTS);
-+#endif
-+                  dp = dp->next;
-+#ifdef NO_CAPITALIZATION_SUPPORT
-+                  while (dp != NULL)
-+                      {
-+                      (void) tinsert (dp);
-+                      olddp = dp;
-+                      dp = dp->next;
-+                      free ((char *) olddp);
-+                      }
-+#else
-+                  while (dp != NULL)
-+                      {
-+                      if (isvariant)
-+                          {
-+                          isvariant = dp->flagfield & MOREVARIANTS;
-+                          olddp = newdp->next;
-+                          newdp->next = dp;
-+                          newdp = dp;
-+                          dp = dp->next;
-+                          newdp->next = olddp;
-+                          }
-+                      else
-+                          {
-+                          isvariant = dp->flagfield & MOREVARIANTS;
-+                          newdp = tinsert (dp);
-+                          olddp = dp;
-+                          dp = dp->next;
-+                          free ((char *) olddp);
-+                          }
-+                      }
-+#endif
-+                  }
-+              }
-+          if (oldhtab != NULL)
-+              free ((char *) oldhtab);
-+          }
-+      }
-+
-+    /*
-+    ** We're ready to do the insertion.  Start by creating a sample
-+    ** entry for the word.
-+    */
-+    if (makedent (word, wordlen, &wordent) < 0)
-+      return;                 /* Word must be too big or something */
-+    if (keep)
-+      wordent.flagfield |= KEEP;
-+    /*
-+    ** Now see if word or a variant is already in the table.  We use the
-+    ** capitalized version so we'll find the header, if any.
-+    **/
-+    (void) strtoichar (nword, word, sizeof nword, 1);
-+    upcase (nword);
-+    if ((dp = lookup (nword, 1)) != NULL)
-+      {
-+      /* It exists.  Combine caps and set the keep flag. */
-+      if (combinecaps (dp, &wordent) < 0)
-+          {
-+          free (wordent.word);
-+          return;
-+          }
-+      }
-+    else
-+      {
-+      /* It's new. Insert the word. */
-+      dp = tinsert (&wordent);
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+      if (captype (dp->flagfield) == FOLLOWCASE)
-+         (void) addvheader (dp);
-+#endif
-+      }
-+    newwords |= keep;
-+    hcount++;
-+}
-+
-+Local struct dent * 
-+tinsert (
-+    struct dent *     proto)          /* Prototype entry to copy */
-+{
-+    ichar_t           iword[INPUTWORDLEN + MAXAFFIXLEN];
-+    register int      hcode;
-+    register struct dent * hp;                /* Next trial entry in hash table */
-+    register struct dent * php;               /* Prev. value of hp, for chaining */
-+
-+    if (strtoichar (iword, proto->word, sizeof iword, 1))
-+      (void) fprintf (stderr, WORD_TOO_LONG (proto->word));
-+#ifdef NO_CAPITALIZATION_SUPPORT
-+    upcase (iword);
-+#endif
-+    hcode = hash (iword, pershsize);
-+    php = NULL;
-+    hp = &pershtab[hcode];
-+    if (hp->flagfield & USED)
-+      {
-+      while (hp != NULL)
-+          {
-+          php = hp;
-+          hp = hp->next;
-+          }
-+      hp = (struct dent *) calloc (1, sizeof (struct dent));
-+      if (hp == NULL)
-+          {
-+          (void) fprintf (stderr, TREE_C_NO_SPACE);
-+          exit (1);
-+          }
-+      }
-+    *hp = *proto;
-+    if (php != NULL)
-+      php->next = hp;
-+    hp->next = NULL;
-+    return hp;
-+}
-+
-+Public struct dent * 
-+treelookup (register ichar_t *        word)
-+
-+{
-+    register int      hcode;
-+    register struct dent * hp;
-+    char              chword[INPUTWORDLEN + MAXAFFIXLEN];
-+
-+    if (pershsize <= 0)
-+      return NULL;
-+    (void) ichartostr (chword, word, sizeof chword, 1);
-+    hcode = hash (word, pershsize);
-+    hp = &pershtab[hcode];
-+    while (hp != NULL  &&  (hp->flagfield & USED))
-+      {
-+      if (strcmp (chword, hp->word) == 0)
-+          break;
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+      while (hp->flagfield & MOREVARIANTS)
-+          hp = hp->next;
-+#endif
-+      hp = hp->next;
-+      }
-+    if (hp != NULL  &&  (hp->flagfield & USED))
-+      return hp;
-+    else
-+      return NULL;
-+}
-+
-+#if SORTPERSONAL != 0
-+/* Comparison routine for sorting the personal dictionary with qsort */
-+Local int 
-+pdictcmp (
-+    struct dent **    enta,
-+    struct dent **    entb)
-+{
-+
-+    /* The parentheses around *enta and *entb below are NECESSARY!
-+    ** Otherwise the compiler reads it as *(enta->word), or
-+    ** enta->word[0], which is illegal (but pcc takes it and
-+    ** produces wrong code).
-+    **/
-+    return casecmp ((*enta)->word, (*entb)->word, 1);
-+}
-+#endif
-+
-+Public void 
-+treeoutput ()
-+
-+{
-+    register struct dent *    cent;   /* Current entry */
-+    register struct dent *    lent;   /* Linked entry */
-+#if SORTPERSONAL != 0
-+    int                               pdictsize; /* Number of entries to write */
-+    struct dent **            sortlist; /* List of entries to be sorted */
-+    register struct dent **   sortptr; /* Handy pointer into sortlist */
-+#endif
-+    register struct dent *    ehtab;  /* End of pershtab, for fast looping */
-+
-+    if (newwords == 0)
-+      return;
-+
-+    if ((dictf = fopen (personaldict, "w")) == NULL)
-+      {
-+      (void) fprintf (stderr, CANT_CREATE, personaldict);
-+      return;
-+      }
-+
-+#if SORTPERSONAL != 0
-+    /*
-+    ** If we are going to sort the personal dictionary, we must know
-+    ** how many items are going to be sorted.
-+    */
-+    pdictsize = 0;
-+    if (hcount >= SORTPERSONAL)
-+      sortlist = NULL;
-+    else
-+      {
-+      for (cent = pershtab, ehtab = pershtab + pershsize; cent < ehtab;
-+                                                                    cent++)
-+          {
-+          for (lent = cent;  lent != NULL;  lent = lent->next)
-+              {
-+              if ((lent->flagfield & (USED | KEEP)) == (USED | KEEP))
-+                  pdictsize++;
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+              while (lent->flagfield & MOREVARIANTS)
-+                 lent = lent->next;
-+#endif
-+              }
-+          }
-+      for (cent = hashtbl, ehtab = hashtbl + hashsize; cent < ehtab; cent++)
-+          {
-+          if ((cent->flagfield & (USED | KEEP)) == (USED | KEEP))
-+              {
-+              /*
-+              ** We only want to count variant headers
-+              ** and standalone entries.  These happen
-+              ** to share the characteristics in the
-+              ** test below.  This test will appear
-+              ** several more times in this routine.
-+              */
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+              if (captype (cent->flagfield) != FOLLOWCASE
-+                                                    &&  cent->word != NULL)
-+#endif
-+                  pdictsize++;
-+              }
-+          }
-+      sortlist = (struct dent **) malloc (pdictsize * sizeof (struct dent));
-+      }
-+    if (sortlist == NULL)
-+      {
-+#endif
-+      for (cent = pershtab, ehtab = pershtab + pershsize; cent < ehtab;
-+                                                                      cent++)
-+          {
-+          for (lent = cent;  lent != NULL;  lent = lent->next)
-+              {
-+              if ((lent->flagfield & (USED | KEEP)) == (USED | KEEP))
-+                  {
-+                  toutent (dictf, lent, 1);
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+                  while (lent->flagfield & MOREVARIANTS)
-+                      lent = lent->next;
-+#endif
-+                  }
-+              }
-+          }
-+      for (cent = hashtbl, ehtab = hashtbl + hashsize; cent < ehtab; cent++)
-+          {
-+          if ((cent->flagfield & (USED | KEEP)) == (USED | KEEP))
-+              {
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+              if (captype (cent->flagfield) != FOLLOWCASE
-+                                                &&  cent->word != NULL)
-+#endif
-+                  toutent (dictf, cent, 1);
-+              }
-+          }
-+#if SORTPERSONAL != 0
-+      return;
-+      }
-+    /*
-+    ** Produce dictionary in sorted order.  We used to do this
-+    ** destructively, but that turns out to fail because in some modes
-+    ** the dictionary is written more than once.  So we build an
-+    ** auxiliary pointer table (in sortlist) and sort that.  This
-+    ** is faster anyway, though it uses more memory. 
-+    */
-+    sortptr = sortlist;
-+    for (cent = pershtab, ehtab = pershtab + pershsize;  cent < ehtab;  cent++)
-+      {
-+      for (lent = cent;  lent != NULL;  lent = lent->next)
-+          {
-+          if ((lent->flagfield & (USED | KEEP)) == (USED | KEEP))
-+              {
-+              *sortptr++ = lent;
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+              while (lent->flagfield & MOREVARIANTS)
-+                  lent = lent->next;
-+#endif
-+              }
-+          }
-+      }
-+    for (cent = hashtbl, ehtab = hashtbl + hashsize;  cent < ehtab;  cent++)
-+      {
-+      if ((cent->flagfield & (USED | KEEP)) == (USED | KEEP))
-+          {
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+          if (captype (cent->flagfield) != FOLLOWCASE
-+                                                    &&  cent->word != NULL)
-+#endif
-+              *sortptr++ = cent;
-+          }
-+      }
-+    /* Sort the list */
-+    qsort ((char *) sortlist, (unsigned) pdictsize,
-+                        sizeof (sortlist[0]),
-+                        (int (*) (const void *, const void *)) pdictcmp);
-+    /* Write it out */
-+    for (sortptr = sortlist;  --pdictsize >= 0;  )
-+      toutent (dictf, *sortptr++, 1);
-+    free ((char *) sortlist);
-+#endif
-+
-+    newwords = 0;
-+
-+    (void) fclose (dictf);
-+}
-+
-+#ifdef REGEX_LOOKUP
-+
-+/* check the hashed dictionary for words matching the regex. return the */
-+/* a matching string if found else return NULL */
-+char * 
-+do_regex_lookup (
-+    char *    expr,   /* regular expression to use in the match   */
-+    int               whence) /* 0 = start at the beg with new regx, else */
-+                      /* continue from cur point w/ old regex     */
-+{
-+    static struct dent *    curent;
-+    static int                    curindex;
-+    static struct dent *    curpersent;
-+    static int                    curpersindex;
-+    static REGCTYPE       cmp_expr = (REGCTYPE)0;
-+    char                  dummy[INPUTWORDLEN + MAXAFFIXLEN];
-+    ichar_t *             is;
-+
-+    if (whence == 0)
-+      {
-+        is = strtosichar (expr, 0);
-+        upcase (is);
-+        expr = ichartosstr (is, 1);
-+        REGFREE (cmp_expr);   /* free previous compiled pattern, if any */
-+        cmp_expr = REGCMP (cmp_expr, expr);
-+        curent = hashtbl;
-+        curindex = 0;
-+        curpersent = pershtab;
-+        curpersindex = 0;
-+      }
-+    
-+    /* search the dictionary until the word is found or the words run out */
-+    for (  ; curindex < hashsize;  curent++, curindex++)
-+      {
-+        if (curent->word != NULL
-+                        &&  REGEX (cmp_expr, curent->word, dummy) != NULL)
-+          {
-+          curindex++;
-+          /* Everybody's gotta write a wierd expression once in a while! */
-+          return curent++->word;
-+          }
-+      }
-+    /* Try the personal dictionary too */
-+    for (  ; curpersindex < pershsize;  curpersent++, curpersindex++)
-+      {
-+        if ((curpersent->flagfield & USED) != 0
-+                &&  curpersent->word != NULL
-+                        &&  REGEX (cmp_expr, curpersent->word, dummy) != NULL)
-+          {
-+          curpersindex++;
-+          /* Everybody's gotta write a wierd expression once in a while! */
-+          return curpersent++->word;
-+          }
-+      }
-+    return NULL;
-+}
-+#endif /* REGEX_LOOKUP */
-diff -urBbN vim64.org/src/spell/util.c vim64/src/spell/util.c
---- vim64.org/src/spell/util.c 1970-01-01 01:00:00.000000000 +0100
-+++ vim64/src/spell/util.c     2005-10-17 12:49:17.520833176 +0200
-@@ -0,0 +1,351 @@
-+#include <ctype.h>
-+#include "ispell.h"
-+
-+Local char *myrindex(char *s, char c);
-+
-+Public int
-+casecmp (
-+    char *            a,
-+    char *            b,
-+    int                       canonical)      /* NZ for canonical string chars */
-+{
-+    register ichar_t *        ap;
-+    register ichar_t *        bp;
-+    ichar_t           inta[INPUTWORDLEN + 4 * MAXAFFIXLEN + 4];
-+    ichar_t           intb[INPUTWORDLEN + 4 * MAXAFFIXLEN + 4];
-+
-+    (void) strtoichar (inta, a, sizeof inta, canonical);
-+    (void) strtoichar (intb, b, sizeof intb, canonical);
-+    for (ap = inta, bp = intb;  *ap != 0;  ap++, bp++)
-+      {
-+      if (*ap != *bp)
-+          {
-+          if (*bp == '\0')
-+              return hashheader.sortorder[*ap];
-+          else if (mylower (*ap))
-+              {
-+              if (mylower (*bp)  ||  mytoupper (*ap) != *bp)
-+                  return (int) hashheader.sortorder[*ap] -
-+                                            (int) hashheader.sortorder[*bp];
-+              }
-+          else
-+              {
-+              if (myupper (*bp)  ||  mytolower (*ap) != *bp)
-+                  return (int) hashheader.sortorder[*ap] -
-+                                            (int) hashheader.sortorder[*bp];
-+              }
-+          }
-+      }
-+    if (*bp != '\0')
-+      return -(int) hashheader.sortorder[*bp];
-+    for (ap = inta, bp = intb;  *ap;  ap++, bp++)
-+      {
-+      if (*ap != *bp)
-+          {
-+          return (int) hashheader.sortorder[*ap] - 
-+                                              (int) hashheader.sortorder[*bp];
-+          }
-+      }
-+    return 0;
-+}
-+
-+Public int 
-+ins_root_cap (
-+    register ichar_t *        word,
-+    register ichar_t *        pattern,
-+    int                       prestrip,
-+    int                       preadd,
-+    int                       sufstrip,
-+    int                       sufadd,
-+    struct dent *     firstdent,
-+    struct flagent *  pfxent,
-+    struct flagent *  sufent)
-+{
-+    int                       i;              /* Index into savearea */
-+    ichar_t           savearea[MAX_CAPS][INPUTWORDLEN + MAXAFFIXLEN];
-+    int                       nsaved;         /* Number of words saved */
-+
-+    nsaved = 0;
-+    save_root_cap (word, pattern, prestrip, preadd, sufstrip, sufadd,
-+                            firstdent, pfxent, sufent, savearea, &nsaved);
-+    for (i = 0;  i < nsaved;  i++)
-+      {
-+      if (insert (savearea[i]) < 0)
-+          return -1;
-+      }
-+    return 0;
-+}
-+
-+Public void 
-+save_root_cap(
-+    register ichar_t *        word,           /* Word to be saved */
-+    register ichar_t *        pattern,        /* Capitalization pattern */
-+    int                       prestrip,       /* No. chars stripped from front */
-+    int                       preadd,         /* No. chars added to front of root */
-+    int                       sufstrip,       /* No. chars stripped from back */
-+    int                       sufadd,         /* No. chars added to back of root */
-+    struct dent *     firstdent,      /* First dent for root */
-+    struct flagent *  pfxent,         /* Pfx-flag entry for word */
-+    struct flagent *  sufent,         /* Sfx-flag entry for word */
-+    ichar_t           savearea[MAX_CAPS][INPUTWORDLEN + MAXAFFIXLEN],
-+                                      /* Room to save words */
-+    int *             nsaved)         /* Number saved so far (updated) */
-+{
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+    register struct dent * dent;
-+#endif /* NO_CAPITALIZATION_SUPPORT */
-+    int                       firstisupper;
-+    ichar_t           newword[INPUTWORDLEN + 4 * MAXAFFIXLEN + 4];
-+#ifndef NO_CAPITALIZATION_SUPPORT
-+    register ichar_t *        p;
-+    int                       len;
-+    int                       i;
-+    int                       limit;
-+#endif /* NO_CAPITALIZATION_SUPPORT */
-+
-+    if (*nsaved >= MAX_CAPS)
-+      return;
-+    (void) icharcpy (newword, word);
-+    firstisupper = myupper (pattern[0]);
-+#ifdef NO_CAPITALIZATION_SUPPORT
-+    /*
-+    ** Apply the old, simple-minded capitalization rules.
-+    */
-+    if (firstisupper)
-+      {
-+      if (myupper (pattern[1]))
-+          upcase (newword);
-+      else
-+          {
-+          lowcase (newword);
-+          newword[0] = mytoupper (newword[0]);
-+          }
-+      }
-+    else
-+      lowcase (newword);
-+    (void) icharcpy (savearea[*nsaved], newword);
-+    (*nsaved)++;
-+    return;
-+#else /* NO_CAPITALIZATION_SUPPORT */
-+#define flagsareok(dent)    \
-+    ((pfxent == NULL \
-+      ||  TSTMASKBIT (dent->mask, pfxent->flagbit)) \
-+      &&  (sufent == NULL \
-+      ||  TSTMASKBIT (dent->mask, sufent->flagbit)))
-+
-+    dent = firstdent;
-+    if ((dent->flagfield & (CAPTYPEMASK | MOREVARIANTS)) == ALLCAPS)
-+      {
-+      upcase (newword);       /* Uppercase required */
-+      (void) icharcpy (savearea[*nsaved], newword);
-+      (*nsaved)++;
-+      return;
-+      }
-+    for (p = pattern;  *p;  p++)
-+      {
-+      if (mylower (*p))
-+          break;
-+      }
-+    if (*p == 0)
-+      {
-+      upcase (newword);       /* Pattern was all caps */
-+      (void) icharcpy (savearea[*nsaved], newword);
-+      (*nsaved)++;
-+      return;
-+      }
-+    for (p = pattern + 1;  *p;  p++)
-+      {
-+      if (myupper (*p))
-+          break;
-+      }
-+    if (*p == 0)
-+      {
-+      /*
-+      ** The pattern was all-lower or capitalized.  If that's
-+      ** legal, insert only that version.
-+      */
-+      if (firstisupper)
-+          {
-+          if (captype (dent->flagfield) == CAPITALIZED
-+            ||  captype (dent->flagfield) == ANYCASE)
-+              {
-+              lowcase (newword);
-+              newword[0] = mytoupper (newword[0]);
-+              (void) icharcpy (savearea[*nsaved], newword);
-+              (*nsaved)++;
-+              return;
-+              }
-+          }
-+      else
-+          {
-+          if (captype (dent->flagfield) == ANYCASE)
-+              {
-+              lowcase (newword);
-+              (void) icharcpy (savearea[*nsaved], newword);
-+              (*nsaved)++;
-+              return;
-+              }
-+          }
-+      while (dent->flagfield & MOREVARIANTS)
-+          {
-+          dent = dent->next;
-+          if (captype (dent->flagfield) == FOLLOWCASE
-+            ||  !flagsareok (dent))
-+              continue;
-+          if (firstisupper)
-+              {
-+              if (captype (dent->flagfield) == CAPITALIZED)
-+                  {
-+                  lowcase (newword);
-+                  newword[0] = mytoupper (newword[0]);
-+                  (void) icharcpy (savearea[*nsaved], newword);
-+                  (*nsaved)++;
-+                  return;
-+                  }
-+              }
-+          else
-+              {
-+              if (captype (dent->flagfield) == ANYCASE)
-+                  {
-+                  lowcase (newword);
-+                  (void) icharcpy (savearea[*nsaved], newword);
-+                  (*nsaved)++;
-+                  return;
-+                  }
-+              }
-+          }
-+      }
-+    /*
-+    ** Either the sample had complex capitalization, or the simple
-+    ** capitalizations (all-lower or capitalized) are illegal.
-+    ** Insert all legal capitalizations, including those that are
-+    ** all-lower or capitalized.  If the prototype is capitalized,
-+    ** capitalized all-lower samples.  Watch out for affixes.
-+    */
-+    dent = firstdent;
-+    p = strtosichar (dent->word, 1);
-+    len = icharlen (p);
-+    if (dent->flagfield & MOREVARIANTS)
-+      dent = dent->next;      /* Skip place-holder entry */
-+    for (  ;  ;  )
-+      {
-+      if (flagsareok (dent))
-+          {
-+          if (captype (dent->flagfield) != FOLLOWCASE)
-+              {
-+              lowcase (newword);
-+              if (firstisupper  ||  captype (dent->flagfield) == CAPITALIZED)
-+                  newword[0] = mytoupper (newword[0]);
-+              (void) icharcpy (savearea[*nsaved], newword);
-+              (*nsaved)++;
-+              if (*nsaved >= MAX_CAPS)
-+                  return;
-+              }
-+          else
-+              {
-+              /* Followcase is the tough one. */
-+              p = strtosichar (dent->word, 1);
-+              (void) bcopy ((char *) (p + prestrip),
-+                                (char *) (newword + preadd),
-+                            (len - prestrip - sufstrip) * sizeof (ichar_t));
-+              if (myupper (p[prestrip]))
-+                  {
-+                  for (i = 0;  i < preadd;  i++)
-+                      newword[i] = mytoupper (newword[i]);
-+                  }
-+              else
-+                  {
-+                  for (i = 0;  i < preadd;  i++)
-+                      newword[i] = mytolower (newword[i]);
-+                  }
-+              limit = len + preadd + sufadd - prestrip - sufstrip;
-+              i = len + preadd - prestrip - sufstrip;
-+              p += len - sufstrip - 1;
-+              if (myupper (*p))
-+                  {
-+                  for (p = newword + i;  i < limit;  i++, p++)
-+                      *p = mytoupper (*p);
-+                  }
-+              else
-+                  {
-+                  for (p = newword + i;  i < limit;  i++, p++)
-+                    *p = mytolower (*p);
-+                  }
-+              (void) icharcpy (savearea[*nsaved], newword);
-+              (*nsaved)++;
-+              if (*nsaved >= MAX_CAPS)
-+                  return;
-+              }
-+          }
-+      if ((dent->flagfield & MOREVARIANTS) == 0)
-+          break;              /* End of the line */
-+      dent = dent->next;
-+      }
-+    return;
-+#endif /* NO_CAPITALIZATION_SUPPORT */
-+}
-+Public int 
-+insert(register ichar_t *     word)
-+{
-+    register int      i;
-+    register char *   realword;
-+
-+    realword = ichartosstr (word, 0);
-+    for (i = 0; i < pcount; i++)
-+      if (strcmp (possibilities[i], realword) == 0)
-+          return (0);
-+
-+    (void) strcpy (possibilities[pcount++], realword);
-+    i = strlen (realword);
-+    if (i > maxposslen)
-+      maxposslen = i;
-+    if (pcount >= MAXPOSSIBLE)
-+      return (-1);
-+    else
-+      return (0);
-+}
-+/*
-+** A trivial wrapper for rindex (file '/') on Unix, but
-+** saves a lot of ifdef-ing on MS-DOS.
-+*/
-+
-+Public char * 
-+last_slash (char *file)
-+
-+{
-+    char *slash = myrindex (file, '/');
-+#ifdef MSDOS
-+    /*
-+    ** Can have a backslash or a colon; both mean the basename
-+    ** begins right after them.
-+    */
-+    char *bs = myrindex (file, '\\');
-+
-+    /*
-+    ** We can have both forward- and backslashes; return the
-+    ** place of rightmost one of either gender.
-+    */
-+    if (slash == NULL || (bs != NULL && bs > slash))
-+      slash = bs;
-+    if (slash == NULL && file[0] != '\0' && file[1] == ':')
-+      slash = file + 1;
-+#endif
-+    return slash;
-+}
-+
-+Local char *
-+myrindex(char *s, register char c)
-+
-+{
-+    register char *x;
-+    
-+    x = s + strlen(s) - 1;
-+
-+    while(x >= s)
-+       {
-+      if(*x == c)
-+          return(x);
-+      x--;
-+       }
-+    return(NULL);
-+}
-diff -urBbN vim64.org/src/spell/version.h vim64/src/spell/version.h
---- vim64.org/src/spell/version.h      1970-01-01 01:00:00.000000000 +0100
-+++ vim64/src/spell/version.h  2005-10-17 12:49:17.521833024 +0200
-@@ -0,0 +1,124 @@
-+/*
-+ * Since the strings in this file are printed out when the "-v" switch is
-+ * given to ispell, you may want to translate them into your native language.
-+ * However, any translation of these strings MUST accurately preserve the
-+ * legal rights under international law;  you may wish to consult a lawyer
-+ * about this since you will be responsible for the results of any
-+ * incorrect translation.
-+ */
-+
-+Local char *Version_ID[] = {
-+    "@(#) International Ispell Version 3.1.20 10/10/95",
-+    "@(#) Copyright (c), 1983, by Pace Willisson",
-+    "@(#) International version Copyright (c) 1987, 1988, 1990-1995,",
-+    "@(#) by Geoff Kuenning, Granada Hills, CA.  All rights reserved.",
-+    "@(#)",
-+    "@(#) Redistribution and use in source and binary forms, with or without",
-+    "@(#) modification, are permitted provided that the following conditions",
-+    "@(#) are met:",
-+    "@(#)",
-+    "@(#) 1. Redistributions of source code must retain the above copyright",
-+    "@(#)    notice, this list of conditions and the following disclaimer.",
-+    "@(#) 2. Redistributions in binary form must reproduce the above",
-+    "@(#)    copyright notice, this list of conditions and the following",
-+    "@(#)    disclaimer in the documentation and/or other materials provided",
-+    "@(#)    with the distribution.",
-+    "@(#) 3. All modifications to the source code must be clearly marked as",
-+    "@(#)    such.  Binary redistributions based on modified source code",
-+    "@(#)    must be clearly marked as modified versions in the documentation",
-+    "@(#)    and/or other materials provided with the distribution.",
-+    "@(#) 4. All advertising materials mentioning features or use of this",
-+    "@(#)    software must display the following acknowledgment:",
-+    "@(#)      This product includes software developed by Geoff Kuenning and",
-+    "@(#)      other unpaid contributors.",
-+    "@(#) 5. The name of Geoff Kuenning may not be used to endorse or promote",
-+    "@(#)    products derived from this software without specific prior",
-+    "@(#)    written permission.",
-+    "@(#)",
-+    "@(#) THIS SOFTWARE IS PROVIDED BY GEOFF KUENNING AND CONTRIBUTORS ``AS",
-+    "@(#) IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT",
-+    "@(#) LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS",
-+    "@(#) FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL GEOFF",
-+    "@(#) KUENNING OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,",
-+    "@(#) INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES",
-+    "@(#) (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR",
-+    "@(#) SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)",
-+    "@(#) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,",
-+    "@(#) STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)",
-+    "@(#) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED",
-+    "@(#) OF THE POSSIBILITY OF SUCH DAMAGE.",
-+    NULL
-+};
-+
-+static char RCS_Version_ID[] =
-+    "$Id$";
-+
-+/*
-+ * $Log$
-+ * Revision 1.44  1995/10/11  05:03:28  geoff
-+ * Upgrade to patch level 20
-+ *
-+ * Revision 1.43  1995/10/11  04:58:26  geoff
-+ * Upgrade to patch 19
-+ *
-+ * Revision 1.42  1995/01/15  01:23:26  geoff
-+ * Upgrade to patch level 18
-+ *
-+ * Revision 1.41  1995/01/15  01:14:30  geoff
-+ * Upgrade to patch level 17
-+ *
-+ * Revision 1.40  1995/01/15  01:03:55  geoff
-+ * Upgrade to patch level 16
-+ *
-+ * Revision 1.39  1995/01/15  01:01:01  geoff
-+ * Upgrade to patch level 15
-+ *
-+ * Revision 1.38  1995/01/15  00:54:19  geoff
-+ * Upgrade to patch level 14
-+ *
-+ * Revision 1.37  1994/11/21  07:03:01  geoff
-+ * Update to patch level 13.
-+ *
-+ * Revision 1.36  1994/11/01  06:28:31  geoff
-+ * Update to patch level 12
-+ *
-+ * Revision 1.35  1994/11/01  06:12:42  geoff
-+ * Update to patch level 11
-+ *
-+ * Revision 1.34  1994/11/01  06:01:15  geoff
-+ * Update to patch level 10
-+ *
-+ * Revision 1.33  1994/11/01  05:36:43  geoff
-+ * Update to patch level 9
-+ *
-+ * Revision 1.32  1994/05/25  04:38:59  geoff
-+ * Update to patch level 8
-+ *
-+ * Revision 1.31  1994/05/18  03:07:26  geoff
-+ * Update to patch level 7
-+ *
-+ * Revision 1.30  1994/05/17  06:21:05  geoff
-+ * Version update for ispell.el release
-+ *
-+ * Revision 1.29  1994/04/27  04:14:18  geoff
-+ * Update to patch level 5
-+ *
-+ * Revision 1.28  1994/03/21  02:00:50  geoff
-+ * Update to patch level 4
-+ *
-+ * Revision 1.27  1994/02/23  04:52:31  geoff
-+ * Update to latest version.
-+ *
-+ * Revision 1.26  1994/02/08  05:59:20  geoff
-+ * Update version
-+ *
-+ * Revision 1.25  1994/02/07  08:58:28  geoff
-+ * Get rid of a comma that confuses patch
-+ *
-+ * Revision 1.24  1994/02/07  08:24:23  geoff
-+ * Upate patch level
-+ *
-+ * Revision 1.23  1994/01/25  07:12:21  geoff
-+ * Get rid of all old RCS log lines in preparation for the 3.1 release.
-+ *
-+ */
-diff -urBbN vim64.org/src/spell/wm.h vim64/src/spell/wm.h
---- vim64.org/src/spell/wm.h   1970-01-01 01:00:00.000000000 +0100
-+++ vim64/src/spell/wm.h       2005-10-17 12:49:17.521833024 +0200
-@@ -0,0 +1,12 @@
-+#ifndef Public
-+enum _logical {False,True};
-+typedef enum _logical Logical;
-+
-+#define       EOS             '\0'
-+
-+typedef unsigned int Word;
-+typedef unsigned char Byte;
-+
-+#define Public 
-+#define Local static
-+#endif
-diff -urBbN vim64.org/src/spell.c vim64/src/spell.c
---- vim64.org/src/spell.c      1970-01-01 01:00:00.000000000 +0100
-+++ vim64/src/spell.c  2005-10-17 12:49:17.522832872 +0200
-@@ -0,0 +1,183 @@
-+#include "spell/wm.h"
-+#include "vim.h"
-+#define MAIN  1
-+#include "ispell.h"
-+#define MAXWORDLEN    80
-+
-+#ifdef FEAT_SPELL_HL
-+
-+int spell_flag = 0;
-+Local char *err;
-+void
-+ex_spell(exarg_T  *eap)
-+
-+{
-+    if(strcmp(eap->arg, "on") == 0)
-+       {
-+      spell_flag = 1;
-+      if(!inited)
-+         {
-+          if(!reload_dict())
-+              return;
-+         }
-+       }
-+     else if(STRCMP(eap->arg, "off") == 0)
-+      spell_flag = 0;
-+     else
-+      EMSG2("Invalid :spell %s", eap->arg);
-+    redraw_all_later(NOT_VALID);
-+    return;
-+}
-+
-+int 
-+reload_dict()
-+
-+{
-+    if(spell_flag == 0)
-+      return(TRUE);
-+    spell_save_private_dict();
-+    inited = 0;
-+    if(STRCMP(p_spell_lang, "") == 0)
-+       {
-+      EMSG("dictionary not defined");
-+      do_cmdline((char_u *)"spell off", NULL, NULL, DOCMD_VERBOSE);
-+      spell_flag = 0;
-+      return(FALSE);
-+       }
-+    if ((err = linit(hashname)) != NULL)
-+       {
-+      EMSG(err);
-+      do_cmdline((char_u *)"spell off", NULL, NULL, DOCMD_VERBOSE);
-+      spell_flag = 0;
-+      return(FALSE);
-+       }
-+    treeinit (NULL, p_spell_lang);
-+    return(TRUE);
-+}
-+
-+static colnr_T last_col;
-+static ichar_t curr_word[MAXWORDLEN + 1]; /* assume max. keyword len is 80 */
-+static char    word_to_spell[MAXWORDLEN + 1];
-+       int     last_attr;
-+static Logical in_word;
-+
-+int my_is_char(char_u ccc);
-+
-+int
-+get_spell_attr(spell_col, col, line)
-+    colnr_T   spell_col;
-+    colnr_T   col;
-+    char_u    *line;
-+{
-+    char_u    *line_ptr;
-+    colnr_T   curr_col;
-+    unsigned int         i;
-+
-+    if(spell_col == 0)
-+      last_col = 0, in_word = False, last_attr = 0;
-+    
-+    if((spell_col < last_col) && in_word)
-+      return(last_attr);
-+    else if(spell_col >= last_col)
-+       {
-+      last_attr = 0;
-+      in_word = False;
-+      line_ptr = &line[spell_col];
-+      curr_col = spell_col;
-+      if(iswordch((ichar_t)(*line_ptr)) && *line_ptr)
-+         {
-+          while((spell_col > 0) && my_is_char(*(line_ptr - 1)))
-+              spell_col--, line_ptr--;
-+          while(isboundarych((ichar_t)(*(line_ptr))))
-+              spell_col++, line_ptr++;
-+
-+          line_ptr = &line[spell_col];
-+          curr_col = spell_col;
-+          while(my_is_char(*line_ptr) && *line_ptr && 
-+                                      ((curr_col - spell_col) < MAXWORDLEN))
-+              curr_col++, line_ptr++;
-+          while(isboundarych((ichar_t)(*(line_ptr - 1))))
-+              curr_col--, line_ptr--;
-+         }
-+      if(curr_col - spell_col > 1)
-+         {
-+          /*for(i = 0; i < curr_col - spell_col; i++)
-+              curr_word[i] = line[spell_col + i];
-+          curr_word[curr_col - spell_col] = NUL;*/
-+          strtoichar(curr_word,line+spell_col,(curr_col-spell_col+1)*sizeof(ichar_t),0);
-+          in_word = True;
-+
-+/*        for(i = 0; curr_word[i]; i++)
-+              fprintf(stderr, "%c", curr_word[i]);
-+          fprintf(stderr, "-%d\n", good((ichar_t *)curr_word, 0, 0, 0, 0)); wm */
-+          if(good((ichar_t *)curr_word, 0, 0, 0, 0) == 0)
-+              last_attr = hl_attr(HLF_SPELL);
-+          last_col = curr_col;
-+         }
-+       }
-+    return(last_attr);
-+}
-+
-+int
-+my_is_char(ccc)
-+    char_u    ccc;
-+{
-+    if(iswordch((ichar_t)ccc) || isboundarych((ichar_t)ccc))
-+      return(TRUE);
-+    else
-+      return(FALSE);
-+
-+}
-+
-+static ichar_t *itok;
-+
-+int
-+set_to_private_dict(char *line, int cursor_col, int convert_to_lower)
-+
-+{
-+    int    i;
-+    char_u *b,
-+           *e;
-+
-+    b = line + cursor_col;
-+    e = b;
-+    if(inited == 0)
-+      return(TRUE);
-+    if(iswordch((ichar_t)(*b)) || isboundarych((ichar_t)(*b)))
-+       {
-+      while((iswordch((ichar_t)(*(b - 1))) || 
-+                              isboundarych((ichar_t)(*(b - 1)))) &&
-+                                                          cursor_col > 0)
-+          b--, cursor_col--;
-+      while(isboundarych((ichar_t)(*b)))
-+          b++;
-+      while((iswordch((ichar_t)(*(e))) || isboundarych((ichar_t)(*(e)))) &&
-+                                                                          *e)
-+          e++;
-+      while(isboundarych((ichar_t)(*(e - 1))))
-+          e--;
-+      for(i = 0; b < e;)
-+          word_to_spell[i++] = *b++;
-+      word_to_spell[i] = '\0';
-+      if(!convert_to_lower)
-+          treeinsert (ichartosstr (strtosichar (word_to_spell, 0), 1),
-+                                                       ICHARTOSSTR_SIZE, 1);
-+       else
-+         {
-+          itok = strtosichar (word_to_spell, 0);
-+          lowcase (itok);
-+          treeinsert (ichartosstr (itok, 1), ICHARTOSSTR_SIZE, 1);
-+         }
-+      redraw_all_later(NOT_VALID);
-+       }
-+    return(FALSE);
-+}
-+
-+void
-+spell_save_private_dict(void)
-+
-+{
-+    if(inited)
-+      treeoutput ();
-+}
-+#endif
-diff -urBbN vim64.org/src/syntax.c vim64/src/syntax.c
---- vim64.org/src/syntax.c     2005-07-24 19:39:04.000000000 +0200
-+++ vim64/src/syntax.c 2005-10-17 12:49:17.527832112 +0200
-@@ -5935,6 +5935,9 @@
-       "VertSplit term=reverse cterm=reverse gui=reverse",
-       "Visual term=reverse cterm=reverse gui=reverse guifg=Grey guibg=fg",
-       "VisualNOS term=underline,bold cterm=underline,bold gui=underline,bold",
-+#ifdef FEAT_SPELL_HL
-+      "Spell term=reverse ctermbg=NONE ctermfg=White guibg=NONE guifg=Red",
-+#endif
-       "DiffText term=reverse cterm=bold ctermbg=Red gui=bold guibg=Red",
-       NULL
-     };
-@@ -5955,6 +5958,9 @@
-       "FoldColumn term=standout ctermbg=Grey ctermfg=DarkBlue guibg=Grey guifg=DarkBlue",
-       "SignColumn term=standout ctermbg=Grey ctermfg=DarkBlue guibg=Grey guifg=DarkBlue",
-       "DiffAdd term=bold ctermbg=LightBlue guibg=LightBlue",
-+#ifdef FEAT_SPELL_HL
-+      "Spell term=reverse ctermbg=NONE ctermfg=White guibg=NONE guifg=Red",
-+#endif
-       "DiffChange term=bold ctermbg=LightMagenta guibg=LightMagenta",
-       "DiffDelete term=bold ctermfg=Blue ctermbg=LightCyan gui=bold guifg=Blue guibg=LightCyan",
-       NULL
-@@ -5976,6 +5982,9 @@
-       "FoldColumn term=standout ctermbg=DarkGrey ctermfg=Cyan guibg=Grey guifg=Cyan",
-       "SignColumn term=standout ctermbg=DarkGrey ctermfg=Cyan guibg=Grey guifg=Cyan",
-       "DiffAdd term=bold ctermbg=DarkBlue guibg=DarkBlue",
-+#ifdef FEAT_SPELL_HL
-+      "Spell term=reverse ctermbg=NONE ctermfg=White guibg=NONE guifg=Red",
-+#endif
-       "DiffChange term=bold ctermbg=DarkMagenta guibg=DarkMagenta",
-       "DiffDelete term=bold ctermfg=Blue ctermbg=DarkCyan gui=bold guifg=Blue guibg=DarkCyan",
-       NULL
-diff -urBbN vim64.org/src/version.c vim64/src/version.c
---- vim64.org/src/version.c    2005-10-17 12:43:54.788895000 +0200
-+++ vim64/src/version.c        2005-10-17 12:49:17.529831808 +0200
-@@ -474,6 +474,11 @@
- #else
-       "-syntax",
- #endif
-+#ifdef FEAT_SPELL_HL
-+      "+spell",
-+#else
-+      "-spell",
-+#endif
-           /* only interesting on Unix systems */
- #if defined(USE_SYSTEM) && (defined(UNIX) || defined(__EMX__))
-       "+system()",
-@@ -1135,7 +1140,7 @@
-     int               add_version;
-     int               attr;
- {
--    char_u    vers[20];
-+    char_u    vers[80];
-     int               col;
-     char_u    *p;
-     int               l;
-diff -urBbN vim64.org/src/version.h vim64/src/version.h
---- vim64.org/src/version.h    2005-10-15 13:21:16.000000000 +0200
-+++ vim64/src/version.h        2005-10-17 12:50:20.563249272 +0200
-@@ -35,6 +35,10 @@
-  */
- #define VIM_VERSION_NODOT     "vim64"
- #define VIM_VERSION_SHORT     "6.4"
-+#ifdef FEAT_SPELL_HL
-+#define VIM_VERSION_MEDIUM    "6.4 + ispell 3.1.20 WM-3"
-+#else
- #define VIM_VERSION_MEDIUM    "6.4"
-+#endif
- #define VIM_VERSION_LONG      "VIM - Vi IMproved 6.4 (2005 Oct 15)"
- #define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 6.4 (2005 Oct 15, compiled "
-diff -urBbN vim64.org/src/vim.h vim64/src/vim.h
---- vim64.org/src/vim.h        2005-10-08 16:22:05.000000000 +0200
-+++ vim64/src/vim.h    2005-10-17 12:49:17.532831352 +0200
-@@ -1076,13 +1076,14 @@
-     , HLF_DED     /* Deleted diff line */
-     , HLF_TXD     /* Text Changed in diff line */
-     , HLF_SC      /* Sign column */
-+    , HLF_SPELL           /* spell - string in dictionary WM */
-     , HLF_COUNT           /* MUST be the last one */
- };
- /* the HL_FLAGS must be in the same order as the HLF_ enums! */
- #define HL_FLAGS {'8', '@', 'd', 'e', 'h', 'i', 'l', 'm', 'M', \
-                 'n', 'r', 's', 'S', 'c', 't', 'v', 'V', 'w', 'W', \
--                'f', 'F', 'A', 'C', 'D', 'T', '>'}
-+                'f', 'F', 'A', 'C', 'D', 'T', '>', 'Z'}
- /*
-  * Boolean constants
diff --git a/vim-lib64.patch b/vim-lib64.patch
deleted file mode 100644 (file)
index e92bdfb..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-diff -urN vim63.orig/src/option.c vim63.new/src/option.c
---- vim63.orig/src/option.c    2005-07-05 20:58:20.000000000 +0200
-+++ vim63.new/src/option.c     2005-07-05 20:59:44.981064920 +0200
-@@ -1952,7 +1952,7 @@
-     {"spelldirectory",  "spelldir", P_STRING|P_ALLOCED|P_VI_DEF|P_EXPAND,
- #ifdef FEAT_SPELL_HL
-                           (char_u *)&p_spelldirectory, PV_SPELL_DIR,
--                          {(char_u *)"/usr/lib/ispell", (char_u *)0L}},
-+                          {(char_u *)"/usr/lib64/ispell", (char_u *)0L}},
- #else
-                           (char_u *)NULL, PV_NONE,
-                           {(char_u *)"", (char_u *)0L}},
-diff -urN vim63.orig/src/spell/config.h vim63.new/src/spell/config.h
---- vim63.orig/src/spell/config.h      2005-07-05 20:58:20.000000000 +0200
-+++ vim63.new/src/spell/config.h       2005-07-05 21:00:02.452408872 +0200
-@@ -101,10 +101,10 @@
- #define BINDIR        "/usr/bin"
- #endif
- #ifndef LIBDIR
--#define LIBDIR        "/usr/lib/ispell"
-+#define LIBDIR        "/usr/lib64/ispell"
- #endif
- #ifndef ELISPDIR
--#define ELISPDIR "/usr/lib/emacs/site-lisp"
-+#define ELISPDIR "/usr/lib64/emacs/site-lisp"
- #endif
- #ifndef TEXINFODIR
- #define TEXINFODIR "/usr/share/info"
-diff -urN vim63.orig/src/spell/local.h vim63.new/src/spell/local.h
---- vim63.orig/src/spell/local.h       2005-07-05 20:58:20.000000000 +0200
-+++ vim63.new/src/spell/local.h        2005-07-05 21:00:29.314325240 +0200
-@@ -54,8 +54,8 @@
- ** names can be constructed for the -d option without conflict.
- */
- #define BINDIR      "/usr/bin"
--#define LIBDIR      "/usr/lib/ispell"
--#define ELISPDIR    "/usr/lib/emacs/site-lisp"
-+#define LIBDIR      "/usr/lib64/ispell"
-+#define ELISPDIR    "/usr/lib64/emacs/site-lisp"
- #define TEXINFODIR  "/usr/share/info"
- #define MAN1DIR     "/usr/share/man/man1"
- #define MAN4DIR     "/usr/share/man/man4"
-@@ -112,7 +112,7 @@
- ** !!! If you don't have this file, make EXTRADICT empty             !!!
- ** !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- */
--#define LANGUAGES "{american,MASTERDICTS=americax.med,HASHFILES=amermedx.hash,EXTRADICT=/usr/lib/ispell/words}"
-+#define LANGUAGES "{american,MASTERDICTS=americax.med,HASHFILES=amermedx.hash,EXTRADICT=/usr/lib64/ispell/words}"
- /*
- ** Master hash file for DEFHASH.  This is the name of a hash file
diff --git a/vim-libacl_fix.patch b/vim-libacl_fix.patch
deleted file mode 100644 (file)
index f1f9b49..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
---- vim61/src/configure.in~    Mon Sep 30 08:19:44 2002
-+++ vim61/src/configure.in     Mon Sep 30 08:19:44 2002
-@@ -1764,9 +1764,9 @@
-       AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
-       AC_MSG_RESULT(no))
--dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
--AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
--      AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"],,),)
-+dnl dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
-+dnl AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
-+dnl   AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"],,),)
- AC_MSG_CHECKING(for POSIX ACL support)
- AC_TRY_LINK([
diff --git a/vim-mktemp.patch b/vim-mktemp.patch
deleted file mode 100644 (file)
index d229862..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
---- vim-5.7/src/vimtutor       Mon Dec 27 09:27:02 1999
-+++ vim-5.7.acme/src/vimtutor  Thu Sep 14 13:40:49 2000
-@@ -3,7 +3,11 @@
- # Start Vim on a copy of the tutor file.
- # Use Vim to copy the tutor, it knows the value of $VIMRUNTIME
--TUTORCOPY=/tmp/tutor$$
-+#
-+# Tue Aug 24 12:30:09 EST 1999 - Conectiva
-+# - fixed tmp race
-+#
-+TUTORCOPY=`mktemp ${TMPDIR:-/tmp}/tutorXXXXXX`
- export TUTORCOPY
- vim -u NONE -c 'e $VIMRUNTIME/tutor/tutor' -c 'w! $TUTORCOPY' -c 'q'
diff --git a/vim-ocaml.patch b/vim-ocaml.patch
deleted file mode 100644 (file)
index 0146ccb..0000000
+++ /dev/null
@@ -1,509 +0,0 @@
-diff -Naur vim61.old/runtime/indent/ocaml.vim vim61/runtime/indent/ocaml.vim
---- vim61.old/runtime/indent/ocaml.vim Wed Oct 30 22:10:31 2002
-+++ vim61/runtime/indent/ocaml.vim     Wed Oct 30 22:12:09 2002
-@@ -1,11 +1,12 @@
- " Vim indent file
- " Language:     OCaml
--" Maintainers:  Mike Leary    <leary@nwlink.com>
--"               Markus Mottl  <markus@oefai.at>
--" URL:          http://www.ai.univie.ac.at/~markus/vim/indent/ocaml.vim
--" Last Change:  2001 Oct 03 - minor addition  (MM)
--"               2001 Sep 02 - set option 'expandtab'  (MM)
--"               2001 Aug 29 - revised all rules  (MM)
-+" Maintainers:  Jean-Francois Yuen  <jfyuen@ifrance.com>
-+"               Mike Leary          <leary@nwlink.com>
-+"               Markus Mottl        <markus@oefai.at>
-+" URL:          http://www.oefai.at/~markus/vim/indent/ocaml.vim
-+" Last Change:  2002 Oct 28 - Fixed bug with indentation of ']' (MM)
-+"               2002 Oct 22 - Major rewrite (JY)
-+"               2002 Sep 08 - improved ';;' handling (JY)
- " Only load this indent file when no other was loaded.
- if exists("b:did_indent")
-@@ -15,16 +16,68 @@
- setlocal expandtab
- setlocal indentexpr=GetOCamlIndent()
--setlocal indentkeys+=0=done,0=end,0=if,0=then,0=else,0=and,0=in,0=with,0=>],0=\|],0},0],0)
-+setlocal indentkeys+=0=and,0=constraint,0=done,0=else,0=end,0=exception,0=external,0=if,0=in,0=include,0=inherit,0=initializer,0=let,0=method,0=open,0=then,0=type,0=val,0=with,0=;;,0=>\],0=\|\],0=\|,0=*),0},0\],0)
- setlocal nolisp
- setlocal nosmartindent
- setlocal textwidth=80
-+" Comment formatting
-+if (has("comments"))
-+  set comments=sr:(*,mb:*,ex:*)
-+  set fo=cqort
-+endif
-+
- " Only define the function once.
- if exists("*GetOCamlIndent")
-   finish
- endif
-+" Define some patterns:
-+let s:beflet = '^\s*\(try\|method\)\|\(\<\(begin\|do\|else\|in\|then\|try\)\|->\|;\)\s*$'
-+let s:letpat = '^\s*\(let\|type\|module\|class\|open\|exception\|val\|include\|external\)\>'
-+let s:letlim = '\(\<\(sig\|struct\)\|;;\)\s*$'
-+let s:lim = '^\s*\(exception\|external\|include\|let\|module\|open\|type\|val\)\>'
-+let s:module = '\<\%(begin\|sig\|struct\|object\)\>'
-+let s:obj = '^\s*\(constraint\|inherit\|initializer\|method\|val\)\>\|\<\(object\|object\s*(.*)\)\s*$'
-+let s:type = '^\s*\%(let\|type\)\>.*='
-+let s:val = '^\s*\(val\|external\)\>.*:'
-+
-+" Skipping pattern, for comments
-+function s:SkipPattern(lnum, pat)
-+  let def = prevnonblank(a:lnum - 1)
-+  while def > 0 && getline(def) =~ a:pat
-+    let def = prevnonblank(def - 1)
-+  endwhile
-+  return def
-+endfunction
-+
-+" Indent for ';;' to match multiple 'let'
-+function s:GetInd(lnum, pat, lim)
-+  let llet = search(a:pat, 'bW')
-+  let old = indent(a:lnum)
-+  while llet > 0
-+    let old = indent(llet)
-+    let nb = s:SkipPattern(llet, '^\s*(\*.*\*)\s*$')
-+    if getline(nb) =~ a:lim
-+      return old
-+    endif
-+    let llet = search(a:pat, 'bW')
-+  endwhile
-+  return old
-+endfunction
-+
-+" Indent pairs
-+function s:FindPair(pstart, pmid, pend)
-+  call search(a:pend, 'bW')
-+  return indent(searchpair(a:pstart, a:pmid, a:pend, 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"'))
-+endfunction
-+
-+" Indent 'let'
-+function s:FindLet(pstart, pmid, pend)
-+  call search(a:pend, 'bW')
-+  return indent(searchpair(a:pstart, a:pmid, a:pend, 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment" || getline(".") =~ "^\\s*let\\>.*=.*\\<in\\s*$" || getline(prevnonblank(".") - 1) =~ "^\\s*let\\>.*=\\s*$\\|" . s:beflet'))
-+endfunction
-+
- function GetOCamlIndent()
-   " Find a non-blank line above the current line.
-   let lnum = prevnonblank(v:lnum - 1)
-@@ -34,8 +87,8 @@
-     return 0
-   endif
--  let ind=indent(lnum)
--  let lline=getline(lnum)
-+  let ind = indent(lnum)
-+  let lline = getline(lnum)
-   " Return double 'shiftwidth' after lines matching:
-   if lline =~ '^\s*|.*->\s*$'
-@@ -43,17 +96,118 @@
-   endif
-   " Add a 'shiftwidth' after lines ending with:
--  if lline =~ '\(:\|=\|->\|<-\|(\|[\|{\|[|\|[<\|(\*\|\<\(begin\|struct\|sig\|functor\|object\|try\|do\|if\|then\|else\|fun\|function\|parser\)\>\)\s*$'
-+  if lline =~ '\(:\|=\|->\|<-\|(\|[\|{\|[|\|[<\|\<\(begin\|struct\|sig\|functor\|object\|try\|do\|if\|then\|else\|fun\|function\|parser\)\|\<object\s*(.*)\)\s*$'
-     let ind = ind + &sw
-+
-+  " Back to normal indent after lines ending with ';;':
-+  elseif lline =~ ';;\s*$' && lline !~ '^\s*;;'
-+    let ind = s:GetInd(v:lnum, s:letpat, s:letlim)
-+
-+  " Back to normal indent after lines ending with 'end':
-+  elseif lline =~ '\<end\s*$' && lline !~ '^\s*end\>'
-+    let ind = s:FindPair(s:module, '','\<end\>')
-+
-+  " Back to normal indent after lines ending with 'in':
-+  elseif lline =~ '\<in\s*$' && lline !~ '^\s*in\>'
-+    let ind = s:FindPair('\<let\>', '', '\<in\>')
-+
-+  " Back to normal indent after lines ending with 'done':
-+  elseif lline =~ '\<done\s*$' && lline !~ '^\s*done\>'
-+    let ind = s:FindPair('\<do\>', '','\<done\>')
-+
-+  " Back to normal indent after lines ending with '}':
-+  elseif lline =~ '}\s*$' && lline !~ '^\s*}'
-+    let ind = s:FindPair('{', '','}')
-+
-+  " Back to normal indent after lines ending with '>]':
-+  elseif lline =~ '>\]\s*$' && lline !~ '^\s*>\]'
-+    let ind = s:FindPair('\[<', '','>\]')
-+
-+  " Back to normal indent after lines ending with '|]':
-+  elseif lline =~ '|\]\s*$' && lline !~ '^\s*|\]'
-+    let ind = s:FindPair('\[|', '','|\]')
-+
-+  " Back to normal indent after lines ending with ']':
-+  elseif lline =~ '\]\s*$' && lline !~ '^\s*\]'
-+    let ind = s:FindPair('\[', '','\]')
-+
-+  " Back to normal indent after comments:
-+  elseif lline =~ '\*)\s*$' && lline !~ '^\s*\*)'
-+    call search('\*)', 'bW')
-+    let ind = indent(searchpair('(\*', '', '\*)', 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string"'))
-+
-+  " Back to normal indent after lines ending with ')':
-+  elseif lline =~ ')\s*$' && lline !~ '^\s*)'
-+    let ind = s:FindPair('(', '',')')
-+
-+  endif
-+
-+  " Subtract a 'shiftwidth' after lines matching 'match ... with parser':
-+  if lline =~ '^\s*match\>.*\<with\>\s*\<parser\s*$'
-+    let ind = ind - &sw
-   endif
--  let line=getline(v:lnum)
-+  let line = getline(v:lnum)
--  " Subtract a 'shiftwidth' if current line begins with:
--  if line =~ '^\s*\(\(done\|end\)\>\|>]\||]\|}\|]\|)\)'
--    return ind - &sw
-+  " Indent if current line begins with 'end'
-+  " for 'sig', 'struct', 'object' and 'begin':
-+  if line =~ '^\s*end\>'
-+    return s:FindPair(s:module, '','\<end\>')
-+
-+  " Indent if current line begins with 'done' for 'do':
-+  elseif line =~ '^\s*done\>'
-+    return s:FindPair('\<do\>', '','\<done\>')
-+
-+  " Indent if current line begins with '}':
-+  elseif line =~ '^\s*}'
-+    return s:FindPair('{', '','}')
-+
-+  " Indent if current line begins with '>]':
-+  elseif line =~ '^\s*>\]'
-+    return s:FindPair('\[<', '','>\]')
-+
-+  " Indent if current line begins with '|]':
-+  elseif line =~ '^\s*|\]'
-+    return s:FindPair('\[|', '','|\]')
-+
-+  " Indent if current line begins with ']':
-+  elseif line =~ '^\s*\]'
-+    return s:FindPair('\[', '','\]')
-+
-+  " Indent if current line begins with ')':
-+  elseif line =~ '^\s*)'
-+    return s:FindPair('(', '',')')
-+
-+  " Indent if current line begins with 'let'
-+  " and last line does not begin with 'let' or end with 'in' or ';;':
-+  elseif line =~ '^\s*let\>'
-+    if lline !~ s:lim . '\|' . s:letlim . '\|' . s:beflet
-+      return s:FindLet(s:type, '','\<let\s*$')
-+    else return ind
-+    endif
--  " Subtract a 'shiftwidth' if current line begins with 'if' and last
-+  " Indent if current line begins with 'type'
-+  " and last line does not end with 'and' or ';;':
-+  elseif line =~ '^\s*type\>'
-+    if lline !~ s:lim . '\|\<and\s*$\|' . s:letlim
-+      return s:FindLet(s:type, '','\<type\s*$')
-+    else return ind
-+    endif
-+
-+  " Indent for pattern matching:
-+  elseif line =~ '^\s*|'
-+    if lline !~ '^\s*\(|\|\(match\|with\|type\)\>\)\|\<\(function\|parser\|with\)\s*$'
-+      return s:FindPair('^\s*\(type\|match\)\>\|\<\(with\|function\|parser\)\s*$', '', '|')
-+    else return ind
-+    endif
-+
-+  " Indent if current line begins with ';;':
-+  elseif line =~ '^\s*;;'
-+    if lline !~ ';;\s*$'
-+      return s:GetInd(v:lnum, s:letpat, s:letlim)
-+    endif
-+
-+  " Subtract a 'shiftwidth' if current line begins with 'if' and previous
-   " line ends with 'else':
-   elseif line =~ '^\s*if\>'
-     if lline =~ '\<else\s*$'
-@@ -61,39 +215,114 @@
-     else return ind
-     endif
--  " Subtract a 'shiftwidth' if current line begins with 'in' and last
-+  " Indent if current line begins with 'in' and previous
-   " line does not start with 'let' or 'and':
-   elseif line =~ '^\s*in\>'
-     if lline !~ '^\s*\(let\|and\)\>'
--      return ind - &sw
-+      return s:FindPair('\<let\>', '', '\<in\>')
-     else return ind
-     endif
--  " Subtract a 'shiftwidth' if current line begins with 'else' or 'then'
--  " and previous line does not start with 'if', 'then' or 'else'
--  elseif line =~ '^\s*\(else\|then\)\>'
-+  " Indent if current line begins with 'else'
-+  " and previous line does not start with 'if', 'then' or 'else':
-+  elseif line =~ '^\s*else\>'
-     if lline !~ '^\s*\(if\|else\|then\)\>'
--      return ind - &sw
-+      return s:FindPair('\<if\>', '', '\<else\>')
-     else return ind
-     endif
--  " Subtract a 'shiftwidth' if current line begins with 'and' and previous
--  " line does not start with 'let', 'and' or 'type' or end with 'end'
--  " (for classes):
-+  " Indent if current line begins with 'then'
-+  " and previous line does not start with 'if', 'then' or 'else':
-+  elseif line =~ '^\s*then\>'
-+    if lline !~ '^\s*\(if\|else\|then\)\>'
-+      return s:FindPair('\<if\>', '', '\<then\>')
-+    else return ind
-+    endif
-+
-+  " Indent if current line begins with 'and' and previous
-+  " line does not start with 'let', 'and' or 'type':
-   elseif line =~ '^\s*and\>'
--    if lline !~ '^\s*\(let\|and\|type\)\>\|\<end\s*$'
--      return ind - &sw
-+    if lline !~ '^\s*\(and\|let\|type\)\>'
-+      return s:FindPair('^\s*\%(let\|type\|class\)\>', '', '\<and\>')
-     else return ind
-     endif
--  " Subtract a 'shiftwidth' if current line begins with 'with'
-+  " Indent if current line begins with 'with'
-   " and previous line does not start with 'match' or 'try':
-   elseif line =~ '^\s*with\>'
-     if lline !~ '^\s*\(match\|try\)\>'
--      return ind - &sw
-+      return s:FindPair('\<\%(match\|try\)\>', '','\<with\>')
-+    else return ind
-+    endif
-+
-+  " Indent if current line begins with 'exception':
-+  elseif line =~ '^\s*exception\>'
-+    if lline !~ s:lim . '\|' . s:letlim
-+      return indent(search(s:val . '\|^\s*\(external\|include\|open\|type\)\>'))
-+    else return ind
-+    endif
-+
-+  " Indent if current line begins with 'external':
-+  elseif line =~ '^\s*external\>'
-+    if lline !~ s:lim . '\|' . s:letlim
-+      return indent(search(s:val . '\|^\s*\(exception\|include\|open\|type\)\>'))
-+    else return ind
-+    endif
-+
-+  " Indent if current line begins with 'include':
-+  elseif line =~ '^\s*include\>'
-+    if lline !~ s:lim . '\|' . s:letlim
-+      return indent(search(s:val . '\|^\s*\(exception\|external\|open\|type\)\>'))
-+    else return ind
-+    endif
-+
-+  " Indent if current line begins with 'open':
-+  elseif line =~ '^\s*open\>'
-+    if lline !~ s:lim . '\|' . s:letlim
-+      return indent(search(s:val . '\|^\s*\(exception\|external\|include\|type\)\>'))
-+    else return ind
-+    endif
-+
-+  " Indent if current line begins with 'val':
-+  elseif line =~ '^\s*val\>'
-+    if lline !~ '^\s*\(exception\|external\|include\|open\)\>\|' . s:obj . '\|' . s:letlim
-+      return indent(search(s:val . '\|^\s*\(exception\|include\|initializer\|method\|open\|type\)\>', 'bW'))
-     else return ind
-     endif
-+  " Indent if current line begins with 'constraint':
-+  elseif line =~ '^\s*constraint\>'
-+    if lline !~ s:obj
-+      return indent(search('^\s*\(inherit\|initializer\|method\|val\)\>'))
-+    else return ind
-+    endif
-+
-+  " Indent if current line begins with 'inherit':
-+  elseif line =~ '^\s*inherit\>'
-+    if lline !~ s:obj
-+      return indent(search('^\s*\(constraint\|initializer\|method\|val\)\>'))
-+    else return ind
-+    endif
-+
-+  " Indent if current line begins with 'inherit':
-+  elseif line =~ '^\s*initializer\>'
-+    if lline !~ s:obj
-+      return indent(search('^\s*\(constraint\|inherit\|method\|val\)\>'))
-+    else return ind
-+    endif
-+
-+  " Indent if current line begins with 'method':
-+  elseif line =~ '^\s*method\>'
-+    if lline !~ s:obj
-+      return indent(search('^\s*\(constraint\|inherit\|initializer\|val\)\>'))
-+    else return ind
-+    endif
-+
-+  " Indent back to normal after comments:
-+  elseif line =~ '^\s*\*)'
-+    call search('\*)', 'bW')
-+    return indent(searchpair('(\*', '', '\*)', 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string"'))
-+
-   endif
-   return ind
-diff -Naur vim61.old/runtime/syntax/ocaml.vim vim61/runtime/syntax/ocaml.vim
---- vim61.old/runtime/syntax/ocaml.vim Wed Oct 30 22:10:33 2002
-+++ vim61/runtime/syntax/ocaml.vim     Wed Oct 30 22:11:41 2002
-@@ -3,12 +3,11 @@
- " Filenames:    *.ml *.mli *.mll *.mly
- " Maintainers:  Markus Mottl      <markus@oefai.at>
- "               Karl-Heinz Sylla  <Karl-Heinz.Sylla@gmd.de>
--" URL:          http://www.ai.univie.ac.at/~markus/vim/syntax/ocaml.vim
--" Last Change:  2001 Nov 20 - Fixed small bug with modules  (MM)
--"               2001 Sep 01 - Fixed small bug with '\''  (MM)
--"               2001 Aug 29 - Added rules for scripting directives  (MM)
--"               2001 Aug 28 - Upgraded URL & mail address  (MM)
--"               2001 Apr 26 - upgraded for new Vim version  (MM)
-+"               Issac Trotts      <<ijtrotts@ucdavis.edu>
-+" URL:          http://www.oefai.at/~markus/vim/syntax/ocaml.vim
-+" Last Change:  2002 Oct 30 - New variable "ocaml_revised" (MM)
-+"               2002 Oct 24 - Small fix for "module type" (MM)
-+"               2002 Jun 16 - Added "&&", "<" and ">" as operators (MM)
- " For version 5.x: Clear all syntax items
- " For version 6.x: Quit when a syntax file was already loaded
-@@ -42,7 +41,11 @@
- syn match    ocamlCountErr   "\<downto\>"
- syn match    ocamlCountErr   "\<to\>"
--syn match    ocamlDoErr      "\<do\>"
-+
-+if !exists("ocaml_revised")
-+  syn match    ocamlDoErr      "\<do\>"
-+endif
-+
- syn match    ocamlDoneErr    "\<done\>"
- syn match    ocamlThenErr    "\<then\>"
-@@ -79,7 +82,9 @@
- " Blocks
--syn region   ocamlEnd matchgroup=ocamlKeyword start="\<begin\>" matchgroup=ocamlKeyword end="\<end\>" contains=ALLBUT,@ocamlContained,ocamlEndErr
-+if !exists("ocaml_revised")
-+  syn region   ocamlEnd matchgroup=ocamlKeyword start="\<begin\>" matchgroup=ocamlKeyword end="\<end\>" contains=ALLBUT,@ocamlContained,ocamlEndErr
-+endif
- " "for"
-@@ -87,8 +92,9 @@
- " "do"
--syn region   ocamlDo matchgroup=ocamlKeyword start="\<do\>" matchgroup=ocamlKeyword end="\<done\>" contains=ALLBUT,@ocamlContained,ocamlDoneErr
--
-+if !exists("ocaml_revised")
-+  syn region   ocamlDo matchgroup=ocamlKeyword start="\<do\>" matchgroup=ocamlKeyword end="\<done\>" contains=ALLBUT,@ocamlContained,ocamlDoneErr
-+endif
- " "if"
- syn region   ocamlNone matchgroup=ocamlKeyword start="\<if\>" matchgroup=ocamlKeyword end="\<then\>" contains=ALLBUT,@ocamlContained,ocamlThenErr
-@@ -134,12 +140,13 @@
- syn region   ocamlWithRest start="[^)]" end=")"me=e-1 contained contains=ALLBUT,@ocamlContained
- " "module type"
--syn region   ocamlKeyword start="\<module\s*type\>" matchgroup=ocamlModule end="\<\w\(\w\|'\)*\>" contains=ocamlComment skipwhite skipempty nextgroup=ocamlMTDef
-+syn region   ocamlKeyword start="\<module\>\s*\<type\>" matchgroup=ocamlModule end="\<\w\(\w\|'\)*\>" contains=ocamlComment skipwhite skipempty nextgroup=ocamlMTDef
- syn match    ocamlMTDef "=\s*\w\(\w\|'\)*\>"hs=s+1,me=s
- syn keyword  ocamlKeyword  and as assert class
- syn keyword  ocamlKeyword  constraint else
--syn keyword  ocamlKeyword  exception external fun function
-+syn keyword  ocamlKeyword  exception external fun
-+
- syn keyword  ocamlKeyword  in inherit initializer
- syn keyword  ocamlKeyword  land lazy let match
- syn keyword  ocamlKeyword  method mutable new of
-@@ -147,12 +154,20 @@
- syn keyword  ocamlKeyword  try type
- syn keyword  ocamlKeyword  val virtual when while with
-+if exists("ocaml_revised")
-+  syn keyword  ocamlKeyword  do value
-+  syn keyword  ocamlBoolean  True False
-+else
-+  syn keyword  ocamlKeyword  function
-+  syn keyword  ocamlBoolean  true false
-+  syn match    ocamlKeyChar  "!"
-+endif
-+
- syn keyword  ocamlType     array bool char exn float format int
- syn keyword  ocamlType     list option string unit
--syn keyword  ocamlOperator asr lor lsl lsr lxor mod not or
-+syn keyword  ocamlOperator asr lor lsl lsr lxor mod not
--syn keyword  ocamlBoolean      true false
- syn match    ocamlConstructor  "(\s*)"
- syn match    ocamlConstructor  "\[\s*\]"
- syn match    ocamlConstructor  "\[|\s*>|]"
-@@ -175,9 +190,11 @@
- syn match    ocamlTopStop      ";;"
- syn match    ocamlOperator     "\^"
- syn match    ocamlOperator     "::"
--syn match    ocamlOperator     "<-"
-+
-+syn match    ocamlOperator     "&&"
-+syn match    ocamlOperator     "<"
-+syn match    ocamlOperator     ">"
- syn match    ocamlAnyVar       "\<_\>"
--syn match    ocamlKeyChar      "!"
- syn match    ocamlKeyChar      "|[^\]]"me=e-1
- syn match    ocamlKeyChar      ";"
- syn match    ocamlKeyChar      "\~"
-@@ -185,6 +202,12 @@
- syn match    ocamlKeyChar      "\*"
- syn match    ocamlKeyChar      "="
-+if exists("ocaml_revised")
-+  syn match    ocamlErr        "<-"
-+else
-+  syn match    ocamlOperator   "<-"
-+endif
-+
- syn match    ocamlNumber        "\<-\=\d\+\>"
- syn match    ocamlNumber        "\<-\=0[x|X]\x\+\>"
- syn match    ocamlNumber        "\<-\=0[o|O]\o\+\>"
-@@ -201,9 +224,17 @@
- syn sync minlines=50
- syn sync maxlines=500
--syn sync match ocamlDoSync      grouphere  ocamlDo      "\<do\>"
--syn sync match ocamlDoSync      groupthere ocamlDo      "\<done\>"
--syn sync match ocamlEndSync     grouphere  ocamlEnd     "\<\(begin\|object\)\>"
-+if !exists("ocaml_revised")
-+  syn sync match ocamlDoSync      grouphere  ocamlDo      "\<do\>"
-+  syn sync match ocamlDoSync      groupthere ocamlDo      "\<done\>"
-+endif
-+
-+if exists("ocaml_revised")
-+  syn sync match ocamlEndSync     grouphere  ocamlEnd     "\<\(object\)\>"
-+else
-+  syn sync match ocamlEndSync     grouphere  ocamlEnd     "\<\(begin\|object\)\>"
-+endif
-+
- syn sync match ocamlEndSync     groupthere ocamlEnd     "\<end\>"
- syn sync match ocamlStructSync  grouphere  ocamlStruct  "\<struct\>"
- syn sync match ocamlStructSync  groupthere ocamlStruct  "\<end\>"
-@@ -236,6 +267,8 @@
-   HiLink ocamlCharErr      Error
-+  HiLink ocamlErr          Error
-+
-   HiLink ocamlComment      Comment
-   HiLink ocamlModPath      Include
diff --git a/vim-pl.po.patch b/vim-pl.po.patch
deleted file mode 100644 (file)
index 2397510..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
---- vim64/src/po/pl.po.orig    2004-06-11 10:58:45.000000000 +0200
-+++ vim64/src/po/pl.po 2005-10-28 23:34:15.523950872 +0200
-@@ -7,11 +7,11 @@
- #
- msgid ""
- msgstr ""
--"Project-Id-Version: pl\n"
-+"Project-Id-Version: vim 6.4\n"
- "POT-Creation-Date: 2004-05-23 21:41+0200\n"
- "PO-Revision-Date: 2004-05-23 22:00+0200\n"
- "Last-Translator: Mikolaj Machowski <mikmach@wp.pl>\n"
--"Language-Team: Polish <pl@li.org>\n"
-+"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
- "MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=ISO-8859-2\n"
- "Content-Transfer-Encoding: 8bit\n"
-@@ -1102,8 +1102,8 @@
- #: ex_cmds.c:5441
- #, c-format
--msgid "E154: Duplicate tag \"%s\" in file %s"
--msgstr "E154: Dwukrotny znacznik \"%s\" w pliku %s"
-+msgid "E154: Duplicate tag \"%s\" in file %s/%s"
-+msgstr "E154: Dwukrotny znacznik \"%s\" w pliku %s/%s"
- #: ex_cmds.c:5553
- #, c-format
-@@ -2277,11 +2277,20 @@
- "\n"
- "Wysy³am zawiadomienie koñcz±ce proces pochodny.\n"
-+#: gui_w32.c:839
-+#, c-format
-+msgid "E671: Cannot find window title \"%s\""
-+msgstr "E671: Nie mogê znale¼æ tytu³u okna \"%s\""
-+
- #: gui_w32.c:830
- #, c-format
- msgid "E243: Argument not supported: \"-%s\"; Use the OLE version."
- msgstr "E243: Argument nie jest wspomagany: \"-%s\"; U¿ywaj wersji OLE."
-+#: gui_w32.c:1100
-+msgid "E672: Unable to open window inside MDI application"
-+msgstr "E672: Nie mogê otworzyæ okna w aplikacji MDI"
-+
- #: gui_w48.c:2090
- msgid "Find string (use '\\\\' to find  a '\\')"
- msgstr "Znajd¼ ci±g (u¿yj '\\\\' do szukania '\\')"
-@@ -2328,8 +2337,8 @@
- #: gui_x11.c:2184
- #, c-format
--msgid "Font%d width is not twice that of font0\n"
--msgstr "szeroko¶æ font%d nie jest podwójn± szeroko¶ci± font0\n"
-+msgid "Font%ld width is not twice that of font0\n"
-+msgstr "szeroko¶æ font%ld nie jest podwójn± szeroko¶ci± font0\n"
- #: gui_x11.c:2185
- #, c-format
-@@ -4331,6 +4340,10 @@
- msgid "E352: Cannot erase folds with current 'foldmethod'"
- msgstr "E352: Nie mogê skasowaæ zwiniêcia z bie¿±c± 'foldmethod'"
-+#: normal.c:6762
-+msgid "E664: changelist is empty"
-+msgstr "E664: lista zmian jest pusta"
-+
- #: normal.c:6740
- msgid "E662: At start of changelist"
- msgstr "E662: Na pocz±tku listy zmian"
-@@ -5455,6 +5484,10 @@
- msgid "E410: Invalid :syntax subcommand: %s"
- msgstr "E410: Niew³a¶ciwa podkomenda :syntax : %s"
-+#: syntax.c:6045
-+msgid "E679: recursive loop loading syncolor.vim"
-+msgstr "E679: rekurencyjna pêtla przy wczytywaniu syncolor.vim"
-+
- #: syntax.c:6136
- #, c-format
- msgid "E411: highlight group not found: %s"
-@@ -6042,11 +6075,11 @@
- #: version.c:2089
- msgid "type  :help cp-default<Enter> for info on this"
--msgstr "wprowad¼ :help cp-default<Enter>  dla informacji to tym  "
-+msgstr "wprowad¼ :help cp-default<Enter>  dla informacji o tym  "
- #: version.c:2104
- msgid "menu  Help->Orphans           for information    "
--msgstr "wprowad¼ :help iccf<Enter>        dla informacji to tym  "
-+msgstr "menu  Pomoc->Kibaale Children's Center  dla informacji o tym"
- #: version.c:2106
- msgid "Running modeless, typed text is inserted"
-@@ -6094,7 +6127,7 @@
- #: version.c:2180
- msgid "type  :help windows95<Enter>  for info on this"
--msgstr "wprowad¼ :help windows95<Enter>   dla informacji to tym  "
-+msgstr "wprowad¼ :help windows95<Enter>   dla informacji o tym  "
- #: window.c:203
- msgid "E441: There is no preview window"
diff --git a/vim-python_ts.patch b/vim-python_ts.patch
deleted file mode 100644 (file)
index 7ed47d4..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -Nur vim62.orig/runtime/ftplugin/python.vim vim62/runtime/ftplugin/python.vim
---- vim62.orig/runtime/ftplugin/python.vim     Sat May 24 14:59:06 2003
-+++ vim62/runtime/ftplugin/python.vim  Wed Aug 20 00:01:02 2003
-@@ -13,9 +13,6 @@
- " setlocal comments-=:%
- setlocal commentstring=#%s
--" Python always uses a 'tabstop' of 8.
--setlocal ts=8
--
- set wildignore+=*.pyc
- nnoremap <silent> <buffer> ]] :call <SID>Python_jump('/^\(class\\|def\)')<cr>
diff --git a/vim-specsyntax-pld.patch b/vim-specsyntax-pld.patch
deleted file mode 100644 (file)
index 9abc682..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
---- vim62/runtime/syntax/spec.vim.orig Tue Jul 15 13:16:17 2003
-+++ vim62/runtime/syntax/spec.vim      Tue Jul 15 13:17:28 2003
-@@ -70,11 +70,11 @@
- syn keyword specSpecialVariablesNames contained RPM_BUILD_ROOT RPM_BUILD_DIR RPM_SOURCE_DIR RPM_OPT_FLAGS LDFLAGS CC CC_FLAGS CPPNAME CFLAGS CXX CXXFLAGS CPPFLAGS
- "valid macro names from /usr/lib/rpm/macros
--syn keyword specMacroNameOther contained buildroot buildsubdir distribution disturl ix86 name nil optflags packager perl_sitearch release requires_eq vendor version epoch
-+syn keyword specMacroNameOther contained buildroot buildsubdir debugcflags date distribution disturl ix86 kgcc kgcc_package name nil optflags packager perl_archlib perl_privlib perl_sitearch perl_sitelib perl_vendorarch perl_vendorlib release requires_eq rpmcflags rpmldflags tmpdir vendor version epoch
- syn match   specMacroNameOther contained '\<\(PATCH\|SOURCE\)\d*\>'
- "valid _macro names from /usr/lib/rpm/macros
--syn keyword specMacroNameLocal contained _arch _binary_payload _bindir _build _build_arch _build_alias _build_cpu _builddir _build_os _buildshell _buildsubdir _build_vendor _bzip2bin _datadir _dbpath _dbpath_rebuild _defaultdocdir _docdir _excludedocs _exec_prefix _fixgroup _fixowner _fixperms _ftpport _ftpproxy _gnu _gpg_name _gpg_path _gzipbin _host _host_alias _host_cpu _host_os _host_vendor _httpport _httpproxy _includedir _infodir _initrddir _install_langs _install_script_path _instchangelog _javaclasspath _javadir _javadocdir _langpatt _lib _libdir _libexecdir _localstatedir _mandir _netsharedpath _oldincludedir _os _package_version _pgpbin _pgp_name _pgp_path _prefix _preScriptEnvironment _provides _rpmdir _rpmfilename _sbindir _sharedstatedir _signature _smp_mflags _sourcedir _source_payload _specdir _srcrpmdir _sysconfdir _target _target_alias _target_cpu _target_os _target_platform _target_vendor _timecheck _tmppath _topdir _usr _usrsrc _var _vendor
-+syn keyword specMacroNameLocal contained _aclocaldir _applnkdir _arch _binary_payload _bindir _build _build_arch _build_alias _build_cpu _builddir _build_os _buildshell _buildsubdir _build_vendor _bzip2bin _datadir _dbpath _dbpath_rebuild _defaultdocdir _desktopdir _docdir _examplesdir _excludedocs _exec_prefix _fixgroup _fixowner _fixperms _fontsdir _ftpport _ftpproxy _gnu _gpg_name _gpg_path _gtkdocdir _gzipbin _host _host_alias _host_cpu _host_os _host_vendor _httpport _httpproxy _iconsdir _includedir _infodir _initrddir _install_langs _install_script_path _instchangelog _javaclasspath _javadir _javadocdir _kernelsrcdir _kernel_ver _kernel_ver_str _langpatt _lib _libdir _libexecdir _localstatedir _mandir _netsharedpath _oldincludedir _omf_dest_dir _os _package_version _pgpbin _pgp_name _pgp_path _pixmapsdir _pkgconfigdir _prefix _preScriptEnvironment _provides _rpmdir _rpmfilename _sbindir _sharedstatedir _signature _smp_mflags _sourcedir _source_payload _specdir _srcrpmdir _sysconfdir _target _target_alias _target_cpu _target_os _target_platform _target_vendor _timecheck _tmppath _topdir _usr _usrsrc _var _vendor
- "------------------------------------------------------------------------------
-@@ -83,8 +83,8 @@
- "One line macros - valid in all ScriptAreas
- "tip: remember do include new itens on specScriptArea's skip section
--syn region specSectionMacroArea oneline matchgroup=specSectionMacro start='^%\(define\|patch\d*\|setup\|configure\|GNUconfigure\|find_lang\|makeinstall\)\>' end='$' contains=specCommandOpts,specMacroIdentifier
--syn region specSectionMacroBracketArea oneline matchgroup=specSectionMacro start='^%{\(configure\|GNUconfigure\|find_lang\|makeinstall\)}' end='$' contains=specCommandOpts,specMacroIdentifier
-+syn region specSectionMacroArea oneline matchgroup=specSectionMacro start='^%\(define\|patch\d*\|setup\|configure2_13\|configure\|GNUconfigure\|find_lang\|makeinstall\)\>' end='$' contains=specCommandOpts,specMacroIdentifier
-+syn region specSectionMacroBracketArea oneline matchgroup=specSectionMacro start='^%{\(configure2_13\|configure\|GNUconfigure\|find_lang\|makeinstall\)}' end='$' contains=specCommandOpts,specMacroIdentifier
- "%% Files Section %%
- "TODO %config valid parameters: missingok\|noreplace
-@@ -114,7 +114,7 @@
- syn region specPackageArea matchgroup=specSection start='^%package' end='^%'me=e-1 contains=specPackageOpts,specPreAmble,specComment
- "%% Scripts Section %%
--syn region specScriptArea matchgroup=specSection start='^%\(prep\|build\|install\|clean\|pre\|postun\|preun\|post\|triggerin\|triggerun\|triggerpostun\)\>' skip='^%{\|^%\(define\|patch\d*\|configure\|GNUconfigure\|setup\|find_lang\|makeinstall\)\>' end='^%'me=e-1 contains=specSpecialVariables,specVariables,@specCommands,specVariables,shDo,shFor,shCaseEsac,specNoNumberHilite,specCommandOpts,shComment,shIf,specSpecialChar,specMacroIdentifier,specSectionMacroArea,specSectionMacroBracketArea,shOperator,shQuote1,shQuote2
-+syn region specScriptArea matchgroup=specSection start='^%\(prep\|build\|install\|clean\|pre\|postun\|preun\|post\|triggerin\|triggerun\|triggerpostun\)\>' skip='^%{\|^%\(define\|patch\d*\|configure2_13\|configure\|GNUconfigure\|setup\|find_lang\|makeinstall\)\>' end='^%'me=e-1 contains=specSpecialVariables,specVariables,@specCommands,specVariables,shDo,shFor,shCaseEsac,specNoNumberHilite,specCommandOpts,shComment,shIf,specSpecialChar,specMacroIdentifier,specSectionMacroArea,specSectionMacroBracketArea,shOperator,shQuote1,shQuote2
- "%% Changelog Section %%
- syn region specChangelogArea matchgroup=specSection start='^%changelog' end='^%'me=e-1 contains=specEmail,specURL,specWeekday,specMonth,specNumber,specComment,specLicense
-@@ -137,7 +137,7 @@
- syn match shOperator contained '[><|!&;]\|[!=]='
- syn region shDo transparent matchgroup=specBlock start="\<do\>" end="\<done\>" contains=ALLBUT,shFunction,shDoError,shCase,specPreAmble,@specListedFiles
--syn region specIf  matchgroup=specBlock start="%ifosf\|%ifos\|%ifnos\|%ifarch\|%ifnarch\|%if\|%else"  end='%endif'  contains=ALLBUT, specIfError, shCase
-+syn region specIf  matchgroup=specBlock start="%ifosf\|%ifos\|%ifnos\|%ifarch\|%ifnarch\|ifdef\|ifndef\|%if\|%else"  end='%endif'  contains=ALLBUT, specIfError, shCase
- syn region  shIf transparent matchgroup=specBlock start="\<if\>" end="\<fi\>" contains=ALLBUT,shFunction,shIfError,shCase,@specListedFiles
diff --git a/vim-specsyntax.patch b/vim-specsyntax.patch
deleted file mode 100644 (file)
index 88d5cfd..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
---- vim62/runtime/syntax/spec.vim.orig 2003-05-11 20:20:37.000000000 +0200
-+++ vim62/runtime/syntax/spec.vim      2003-07-08 00:31:22.000000000 +0200
-@@ -70,11 +70,11 @@
- syn keyword specSpecialVariablesNames contained RPM_BUILD_ROOT RPM_BUILD_DIR RPM_SOURCE_DIR RPM_OPT_FLAGS LDFLAGS CC CC_FLAGS CPPNAME CFLAGS CXX CXXFLAGS CPPFLAGS
- "valid macro names from /usr/lib/rpm/macros
--syn keyword specMacroNameOther contained buildroot buildsubdir distribution disturl ix86 name nil optflags perl_sitearch release requires_eq vendor version
-+syn keyword specMacroNameOther contained buildroot buildsubdir distribution disturl ix86 name nil optflags packager perl_sitearch release requires_eq vendor version epoch
- syn match   specMacroNameOther contained '\<\(PATCH\|SOURCE\)\d*\>'
- "valid _macro names from /usr/lib/rpm/macros
--syn keyword specMacroNameLocal contained _arch _binary_payload _bindir _build _build_alias _build_cpu _builddir _build_os _buildshell _buildsubdir _build_vendor _bzip2bin _datadir _dbpath _dbpath_rebuild _defaultdocdir _docdir _excludedocs _exec_prefix _fixgroup _fixowner _fixperms _ftpport _ftpproxy _gpg_path _gzipbin _host _host_alias _host_cpu _host_os _host_vendor _httpport _httpproxy _includedir _infodir _install_langs _install_script_path _instchangelog _langpatt _lib _libdir _libexecdir _localstatedir _mandir _netsharedpath _oldincludedir _os _pgpbin _pgp_path _prefix _preScriptEnvironment _provides _rpmdir _rpmfilename _sbindir _sharedstatedir _signature _sourcedir _source_payload _specdir _srcrpmdir _sysconfdir _target _target_alias _target_cpu _target_os _target_platform _target_vendor _timecheck _tmppath _topdir _usr _usrsrc _var _vendor
-+syn keyword specMacroNameLocal contained _arch _binary_payload _bindir _build _build_arch _build_alias _build_cpu _builddir _build_os _buildshell _buildsubdir _build_vendor _bzip2bin _datadir _dbpath _dbpath_rebuild _defaultdocdir _docdir _excludedocs _exec_prefix _fixgroup _fixowner _fixperms _ftpport _ftpproxy _gnu _gpg_name _gpg_path _gzipbin _host _host_alias _host_cpu _host_os _host_vendor _httpport _httpproxy _includedir _infodir _initrddir _install_langs _install_script_path _instchangelog _javaclasspath _javadir _javadocdir _langpatt _lib _libdir _libexecdir _localstatedir _mandir _netsharedpath _oldincludedir _os _package_version _pgpbin _pgp_name _pgp_path _prefix _preScriptEnvironment _provides _rpmdir _rpmfilename _sbindir _sharedstatedir _signature _smp_mflags _sourcedir _source_payload _specdir _srcrpmdir _sysconfdir _target _target_alias _target_cpu _target_os _target_platform _target_vendor _timecheck _tmppath _topdir _usr _usrsrc _var _vendor
- "------------------------------------------------------------------------------
-@@ -89,9 +89,9 @@
- "%% Files Section %%
- "TODO %config valid parameters: missingok\|noreplace
- "TODO %verify valid parameters: \(not\)\= \(md5\|atime\|...\)
--syn region specFilesArea matchgroup=specSection start='^%[Ff][Ii][Ll][Ee][Ss]\>' skip='%\(attrib\|defattr\|attr\|dir\|config\|docdir\|doc\|lang\|verify\|ghost\)\>' end='^%[a-zA-Z]'me=e-2 contains=specFilesOpts,specFilesDirective,@specListedFiles,specComment,specCommandSpecial,specMacroIdentifier
-+syn region specFilesArea matchgroup=specSection start='^%[Ff][Ii][Ll][Ee][Ss]\>' skip='%\(attrib\|defattr\|attr\|dir\|config\|docdir\|doc\|lang\|verify\|ghost\|exclude\|dev\)\>' end='^%[a-zA-Z]'me=e-2 contains=specFilesOpts,specFilesDirective,@specListedFiles,specComment,specCommandSpecial,specMacroIdentifier
- "tip: remember to include new itens in specFilesArea above
--syn match  specFilesDirective contained '%\(attrib\|defattr\|attr\|dir\|config\|docdir\|doc\|lang\|verify\|ghost\)\>'
-+syn match  specFilesDirective contained '%\(attrib\|defattr\|attr\|dir\|config\|docdir\|doc\|lang\|verify\|ghost\|exclude\|dev\)\>'
- "valid options for certain section headers
- syn match specDescriptionOpts contained '\s-[ln]\s*\a'ms=s+1,me=e-1
-@@ -105,7 +105,7 @@
- "%% PreAmble Section %%
- "Copyright and Serial were deprecated by License and Epoch
- syn region specPreAmbleDeprecated oneline matchgroup=specError start='^\(Copyright\|Serial\)' end='$' contains=specEmail,specURL,specURLMacro,specLicense,specColon,specVariables,specSpecialChar,specMacroIdentifier
--syn region specPreAmble oneline matchgroup=specCommand start='^\(Prereq\|Summary\|Name\|Version\|Packager\|Requires\|Icon\|URL\|Source\d*\|Patch\d*\|Prefix\|Packager\|Group\|License\|Release\|BuildRoot\|Distribution\|Vendor\|Provides\|ExclusiveArch\|ExcludeArch\|ExclusiveOS\|Obsoletes\|BuildArch\|BuildArchitectures\|BuildRequires\|BuildConflicts\|BuildPreReq\|Conflicts\|AutoRequires\|AutoReq\|AutoReqProv\|AutoProv\|Epoch\)' end='$' contains=specEmail,specURL,specURLMacro,specLicense,specColon,specVariables,specSpecialChar,specMacroIdentifier
-+syn region specPreAmble oneline matchgroup=specCommand start='^\(Prereq\|Summary\|Name\|Version\|Packager\|Requires\|Icon\|URL\|Source\d*\|Patch\d*\|Prefix\|Packager\|Group\|License\|Release\|BuildRoot\|Distribution\|Vendor\|Provides\|ExclusiveArch\|ExcludeArch\|ExclusiveOS\|Obsoletes\|BuildArch\|BuildArchitectures\|BuildRequires\|BuildConflicts\|BuildPreReq\|Conflicts\|AutoRequires\|AutoReqProv\|AutoReq\|AutoProv\|Epoch\|NoSource\)' end='$' contains=specEmail,specURL,specURLMacro,specLicense,specColon,specVariables,specSpecialChar,specMacroIdentifier
- "%% Description Section %%
- syn region specDescriptionArea matchgroup=specSection start='^%description' end='^%'me=e-1 contains=specDescriptionOpts,specEmail,specURL,specNumber,specMacroIdentifier,specComment
-@@ -114,7 +114,7 @@
- syn region specPackageArea matchgroup=specSection start='^%package' end='^%'me=e-1 contains=specPackageOpts,specPreAmble,specComment
- "%% Scripts Section %%
--syn region specScriptArea matchgroup=specSection start='^%\(prep\|build\|install\|clean\|pre\|postun\|preun\|post\)\>' skip='^%{\|^%\(define\|patch\d*\|configure\|GNUconfigure\|setup\|find_lang\|makeinstall\)\>' end='^%'me=e-1 contains=specSpecialVariables,specVariables,@specCommands,specVariables,shDo,shFor,shCaseEsac,specNoNumberHilite,specCommandOpts,shComment,shIf,specSpecialChar,specMacroIdentifier,specSectionMacroArea,specSectionMacroBracketArea,shOperator,shQuote1,shQuote2
-+syn region specScriptArea matchgroup=specSection start='^%\(prep\|build\|install\|clean\|pre\|postun\|preun\|post\|triggerin\|triggerun\|triggerpostun\)\>' skip='^%{\|^%\(define\|patch\d*\|configure\|GNUconfigure\|setup\|find_lang\|makeinstall\)\>' end='^%'me=e-1 contains=specSpecialVariables,specVariables,@specCommands,specVariables,shDo,shFor,shCaseEsac,specNoNumberHilite,specCommandOpts,shComment,shIf,specSpecialChar,specMacroIdentifier,specSectionMacroArea,specSectionMacroBracketArea,shOperator,shQuote1,shQuote2
- "%% Changelog Section %%
- syn region specChangelogArea matchgroup=specSection start='^%changelog' end='^%'me=e-1 contains=specEmail,specURL,specWeekday,specMonth,specNumber,specComment,specLicense
-@@ -137,7 +137,7 @@
- syn match shOperator contained '[><|!&;]\|[!=]='
- syn region shDo transparent matchgroup=specBlock start="\<do\>" end="\<done\>" contains=ALLBUT,shFunction,shDoError,shCase,specPreAmble,@specListedFiles
--syn region specIf  matchgroup=specBlock start="%ifosf\|%ifos\|%ifnos\|%ifarch\|%ifnarch\|%else"  end='%endif'  contains=ALLBUT, specIfError, shCase
-+syn region specIf  matchgroup=specBlock start="%ifosf\|%ifos\|%ifnos\|%ifarch\|%ifnarch\|%if\|%else"  end='%endif'  contains=ALLBUT, specIfError, shCase
- syn region  shIf transparent matchgroup=specBlock start="\<if\>" end="\<fi\>" contains=ALLBUT,shFunction,shIfError,shCase,@specListedFiles
diff --git a/vim-specsyntax4.patch b/vim-specsyntax4.patch
deleted file mode 100644 (file)
index c7249a3..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
---- vim62/runtime/syntax/spec.vim.orig 2004-04-09 17:04:52.516737648 +0200
-+++ vim62/runtime/syntax/spec.vim      2004-04-10 00:30:42.532117184 +0200
-@@ -15,7 +15,7 @@
- syn sync minlines=1000
--syn match specSpecialChar contained '[][!$()\\|>^;:{}]'
-+syn match specSpecialChar contained '[][!$()\\|>^;:]'
- syn match specColon       contained ':'
- syn match specPercent     contained '%'
-@@ -23,7 +23,9 @@
- syn match specVariables   contained '\${\w*}' contains=specSpecialVariablesNames,specSpecialChar
- syn match specMacroIdentifier contained '%\h\w*' contains=specMacroNameLocal,specMacroNameOther,specPercent
--syn match specMacroIdentifier contained '%{\w*}' contains=specMacroNameLocal,specMacroNameOther,specPercent,specSpecialChar
-+"syn match specMacroIdentifier contained '%{\w*}' contains=specMacroNameLocal,specMacroNameOther,specPercent,specSpecialChar
-+syn region specMacroIdentifier oneline matchgroup=Special start='%{' skip='\\}' end='}' contains=specMacroNameLocal,specMacroNameOther,specPercent,specSpecialChar
-+syn match specBcond contained '%{with\(out\)\?\s\+[a-zA-Z0-9_-]\+}'
- syn match specSpecialVariables contained '\$[0-9]\|\${[0-9]}'
- syn match specCommandOpts      contained '\s\(-\w\+\|--\w[a-zA-Z_-]\+\)'ms=s+1
-@@ -83,8 +85,9 @@
- "One line macros - valid in all ScriptAreas
- "tip: remember do include new itens on specScriptArea's skip section
--syn region specSectionMacroArea oneline matchgroup=specSectionMacro start='^%\(define\|patch\d*\|setup\|configure2_13\|configure\|GNUconfigure\|find_lang\|makeinstall\)\>' end='$' contains=specCommandOpts,specMacroIdentifier
-+syn region specSectionMacroArea oneline matchgroup=specSectionMacro start='^%\(\(un\)\?define\|patch\d*\|setup\|configure2_13\|configure\|GNUconfigure\|find_lang\|makeinstall\|bcond_with\(out\)\?\|include\)\>' end='$' contains=specCommandOpts,specMacroIdentifier,specSectionMacroBcondArea
- syn region specSectionMacroBracketArea oneline matchgroup=specSectionMacro start='^%{\(configure2_13\|configure\|GNUconfigure\|find_lang\|makeinstall\)}' end='$' contains=specCommandOpts,specMacroIdentifier
-+syn region specSectionMacroBcondArea oneline matchgroup=specBlock start='%{!\??\(with\(out\)\?_[a-zA-Z0-9_]\+\|debug\):' skip='\\}' end='}' contains=ALLBUT,shCase
- "%% Files Section %%
- "TODO %config valid parameters: missingok\|noreplace
-@@ -105,7 +108,7 @@
- "%% PreAmble Section %%
- "Copyright and Serial were deprecated by License and Epoch
- syn region specPreAmbleDeprecated oneline matchgroup=specError start='^\(Copyright\|Serial\)' end='$' contains=specEmail,specURL,specURLMacro,specLicense,specColon,specVariables,specSpecialChar,specMacroIdentifier
--syn region specPreAmble oneline matchgroup=specCommand start='^\(Prereq\|Summary\|Name\|Version\|Packager\|Requires\|Icon\|URL\|Source\d*\|Patch\d*\|Prefix\|Packager\|Group\|License\|Release\|BuildRoot\|Distribution\|Vendor\|Provides\|ExclusiveArch\|ExcludeArch\|ExclusiveOS\|Obsoletes\|BuildArch\|BuildArchitectures\|BuildRequires\|BuildConflicts\|BuildPreReq\|Conflicts\|AutoRequires\|AutoReqProv\|AutoReq\|AutoProv\|Epoch\|NoSource\)' end='$' contains=specEmail,specURL,specURLMacro,specLicense,specColon,specVariables,specSpecialChar,specMacroIdentifier
-+syn region specPreAmble oneline matchgroup=specCommand start='\(^\|\(^%{!\??with\(out\)\?_[a-zA-Z0-9_]\+:\)\@<=\)\(Prereq\|Summary\|Name\|Version\|Packager\|Requires\|Icon\|URL\|Source\d*\|Patch\d*\|Prefix\|Packager\|Group\|License\|Release\|BuildRoot\|Distribution\|Vendor\|Provides\|ExclusiveArch\|ExcludeArch\|ExclusiveOS\|Obsoletes\|BuildArch\|BuildArchitectures\|BuildRequires\|BuildConflicts\|BuildPreReq\|Conflicts\|AutoRequires\|AutoReqProv\|AutoReq\|AutoProv\|Epoch\|NoSource\)' end='$\|}\@=' contains=specEmail,specURL,specURLMacro,specLicense,specColon,specVariables,specSpecialChar,specMacroIdentifier,specSectionMacroBcondArea
- "%% Description Section %%
- syn region specDescriptionArea matchgroup=specSection start='^%description' end='^%'me=e-1 contains=specDescriptionOpts,specEmail,specURL,specNumber,specMacroIdentifier,specComment
-@@ -114,7 +117,7 @@
- syn region specPackageArea matchgroup=specSection start='^%package' end='^%'me=e-1 contains=specPackageOpts,specPreAmble,specComment
- "%% Scripts Section %%
--syn region specScriptArea matchgroup=specSection start='^%\(prep\|build\|install\|clean\|pre\|postun\|preun\|post\|triggerin\|triggerun\|triggerpostun\)\>' skip='^%{\|^%\(define\|patch\d*\|configure2_13\|configure\|GNUconfigure\|setup\|find_lang\|makeinstall\)\>' end='^%'me=e-1 contains=specSpecialVariables,specVariables,@specCommands,specVariables,shDo,shFor,shCaseEsac,specNoNumberHilite,specCommandOpts,shComment,shIf,specSpecialChar,specMacroIdentifier,specSectionMacroArea,specSectionMacroBracketArea,shOperator,shQuote1,shQuote2
-+syn region specScriptArea matchgroup=specSection start='^%\(prep\|build\|install\|clean\|pre\|postun\|preun\|post\|triggerin\|triggerun\|triggerpostun\)\>' skip='^%{\|^%\(define\|patch\d*\|configure2_13\|configure\|GNUconfigure\|setup\|find_lang\|makeinstall\)\>' end='^%'me=e-1 contains=specSpecialVariables,specVariables,@specCommands,specVariables,shDo,shFor,shCaseEsac,specNoNumberHilite,specCommandOpts,shComment,shIf,specSpecialChar,specMacroIdentifier,specSectionMacroArea,specSectionMacroBracketArea,shOperator,shQuote1,shQuote2,specSectionMacroBcondArea
- "%% Changelog Section %%
- syn region specChangelogArea matchgroup=specSection start='^%changelog' end='^%'me=e-1 contains=specEmail,specURL,specWeekday,specMonth,specNumber,specComment,specLicense
-@@ -132,7 +135,7 @@
- syn match shComment contained '#.*$'
- syn region shQuote1 contained matchgroup=shQuoteDelim start=+'+ skip=+\\'+ end=+'+ contains=specMacroIdentifier
--syn region shQuote2 contained matchgroup=shQuoteDelim start=+"+ skip=+\\"+ end=+"+ contains=specVariables,specMacroIdentifier
-+syn region shQuote2 contained matchgroup=shQuoteDelim start=+"+ skip=+\\"+ end=+"+ contains=specVariables,specMacroIdentifier,specSectionMacroBcondArea
- syn match shOperator contained '[><|!&;]\|[!=]='
- syn region shDo transparent matchgroup=specBlock start="\<do\>" end="\<done\>" contains=ALLBUT,shFunction,shDoError,shCase,specPreAmble,@specListedFiles
-@@ -192,6 +195,7 @@
-   "spec colors
-   HiLink specBlock                    Function
-+  HiLink specBcond                    Function
-   HiLink specColon                    Special
-   HiLink specCommand                  Statement
-   HiLink specCommandOpts              specOpts
-diff -Nura vim62.bef/runtime/syntax/spec.vim vim62.new/runtime/syntax/spec.vim
---- vim62.bef/runtime/syntax/spec.vim  2004-06-06 07:05:21.000000000 +0200
-+++ vim62.new/runtime/syntax/spec.vim  2004-06-06 07:15:34.000000000 +0200
-@@ -85,7 +85,7 @@
- "One line macros - valid in all ScriptAreas
- "tip: remember do include new itens on specScriptArea's skip section
--syn region specSectionMacroArea oneline matchgroup=specSectionMacro start='^%\(\(un\)\?define\|patch\d*\|setup\|configure2_13\|configure\|GNUconfigure\|find_lang\|makeinstall\|bcond_with\(out\)\?\|include\)\>' end='$' contains=specCommandOpts,specMacroIdentifier,specSectionMacroBcondArea
-+syn region specSectionMacroArea oneline matchgroup=specSectionMacro start='^%\(\(un\)\?define\|dump\|trace\|patch\d*\|setup\|configure2_13\|configure\|GNUconfigure\|find_lang\|makeinstall\|bcond_with\(out\)\?\|include\)\>' end='$' contains=specCommandOpts,specMacroIdentifier,specSectionMacroBcondArea
- syn region specSectionMacroBracketArea oneline matchgroup=specSectionMacro start='^%{\(configure2_13\|configure\|GNUconfigure\|find_lang\|makeinstall\)}' end='$' contains=specCommandOpts,specMacroIdentifier
- syn region specSectionMacroBcondArea oneline matchgroup=specBlock start='%{!\??\(with\(out\)\?_[a-zA-Z_]\+\|debug\):' skip='\\}' end='}' contains=ALLBUT,shCase
This page took 0.562584 seconds and 4 git commands to generate.