From bf05cf1dbd0e29ee15ac79e46a61bfa6d139671b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20R=C4=99korajski?= Date: Fri, 21 Apr 2006 23:41:34 +0000 Subject: [PATCH] - orphaned, outdated 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 --- 014_all_vim-6.3-dns-syntax.patch | 28 - ...l_vim-6.3-screen.linux-is-dark-83416.patch | 24 - 6.4.001 | 57 - 6.4.002 | 282 - 6.4.003 | 49 - 6.4.004 | 51 - 6.4.005 | 52 - 6.4.006 | 64 - 6.4.007 | 54 - 6.4.008 | 75 - vim-CAN-2005-0069.patch | 14 - vim-CMDLINE_COMPL.patch | 13 - vim-bonobo-20030726.patch | 5214 ------------ vim-docpath.patch | 56 - vim-fhs.patch | 30 - vim-hold_gui_events.patch | 12 - vim-ispell-axp.patch | 11 - vim-ispell.patch | 7034 ----------------- vim-lib64.patch | 51 - vim-libacl_fix.patch | 15 - vim-mktemp.patch | 15 - vim-ocaml.patch | 509 -- vim-pl.po.patch | 104 - vim-python_ts.patch | 13 - vim-specsyntax-pld.patch | 45 - vim-specsyntax.patch | 55 - vim-specsyntax4.patch | 80 - 27 files changed, 14007 deletions(-) delete mode 100644 014_all_vim-6.3-dns-syntax.patch delete mode 100644 015_all_vim-6.3-screen.linux-is-dark-83416.patch delete mode 100644 6.4.001 delete mode 100644 6.4.002 delete mode 100644 6.4.003 delete mode 100644 6.4.004 delete mode 100644 6.4.005 delete mode 100644 6.4.006 delete mode 100644 6.4.007 delete mode 100644 6.4.008 delete mode 100644 vim-CAN-2005-0069.patch delete mode 100644 vim-CMDLINE_COMPL.patch delete mode 100644 vim-bonobo-20030726.patch delete mode 100644 vim-docpath.patch delete mode 100644 vim-fhs.patch delete mode 100644 vim-hold_gui_events.patch delete mode 100644 vim-ispell-axp.patch delete mode 100644 vim-ispell.patch delete mode 100644 vim-lib64.patch delete mode 100644 vim-libacl_fix.patch delete mode 100644 vim-mktemp.patch delete mode 100644 vim-ocaml.patch delete mode 100644 vim-pl.po.patch delete mode 100644 vim-python_ts.patch delete mode 100644 vim-specsyntax-pld.patch delete mode 100644 vim-specsyntax.patch delete mode 100644 vim-specsyntax4.patch diff --git a/014_all_vim-6.3-dns-syntax.patch b/014_all_vim-6.3-dns-syntax.patch deleted file mode 100644 index 7cab4a2..0000000 --- a/014_all_vim-6.3-dns-syntax.patch +++ /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 index 2f3ebe4..0000000 --- a/015_all_vim-6.3-screen.linux-is-dark-83416.patch +++ /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 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 -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 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 -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 -+ #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 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 -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 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 -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 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 -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 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 -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 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 -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 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 -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 index 1c462f9..0000000 --- a/vim-CAN-2005-0069.patch +++ /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 index 0ad89c3..0000000 --- a/vim-CMDLINE_COMPL.patch +++ /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 index 4d2f8c5..0000000 --- a/vim-bonobo-20030726.patch +++ /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 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -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 -+#include -+ -+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 \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 -+#define ORBIT_IDL_SERIAL 19 -+#include -+ -+#ifdef __cplusplus -+extern "C" -+{ -+#endif /* __cplusplus */ -+ -+/** typedefs **/ -+#include -+#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 -+ -+#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 -+ -+#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 -+ -+#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 -+#include -+#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 -+#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 -+#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 -+#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 - #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, ""); -+ generate_gui_xml_recurse( menu->children, xml, commands, TRUE ); -+ g_string_append( xml, ""); -+ } else { -+ g_string_append_printf( xml, "\n", normname->str, label); -+ -+ generate_gui_xml_recurse( menu->children, xml, commands, TRUE ); -+ g_string_append( xml, "\n"); -+ } -+ } else if( menu_is_separator(menu->name)) { -+ g_string_append( xml, "\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, "\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( "\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, "\n", normname->str, label, verbname->str); -+ -+ command = g_strdup_printf( "\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 \tUse for normal text (also: -fg)" --msgstr "-foreground \tÉ趨 Ϊһ°ãÎÄ×ÖÑÕÉ« (Ò²¿ÉÓà -fg)" -+msgstr "-foreground \tÉ趨 Ϊһ°ãÎÄ×ÖÑÕÉ« (Ò²ÉÓà -fg)" - - #: main.c:2316 main.c:2336 - msgid "-font \t\tUse 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 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -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 -+ * -+ */ -+#include -+ -+#include "vim.h" -+#include "vim_bonobo_control.h" -+#include "gtkhtml_editor.h" -+ -+#include -+#include -+#include -+#include -+ -+ -+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 -+#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 -+#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 -+#include -+ -+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 -+#include -+ -+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 index 9ecac89..0000000 --- a/vim-docpath.patch +++ /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 index d25b641..0000000 --- a/vim-fhs.patch +++ /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 index 6d6f356..0000000 --- a/vim-hold_gui_events.patch +++ /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 index 640c02b..0000000 --- a/vim-ispell-axp.patch +++ /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 index e534060..0000000 --- a/vim-ispell.patch +++ /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); -+void ex_spell(exarg_T *eap); -+int get_spell_attr(colnr_T spell_col, colnr_T col, char_u *line); -+int set_to_private_dict(char *line, int cursor_col, int convert_to_lower); -+void spell_save_private_dict(void); -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 -+#include -+#endif -+#ifndef USG -+# ifndef FEAT_SPELL_HL -+# if HAVE_DIRENT_H -+# include -+# 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 -+# endif -+# if HAVE_SYS_DIR_H -+# include -+# endif -+# if HAVE_NDIR_H -+# include -+# 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: -+** -+** [,...] [ [, ...] ...] -+** -+** 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 -+** #include -+** #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 -+#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 -+ -+#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 -+#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 -+ * -+ * 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: -+** -+** [,...] [ [, ...] ...] -+** -+** 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 -+#include -+#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 -+#include -+#define GETKEYSTROKE() getxkey() -+#else -+#define GETKEYSTROKE() getchar() -+#endif -+ -+/* -+** We include to have the definition of O_BINARY. The -+** configuration script will notice this and define MSDOS_BINARY_OPEN. -+*/ -+#include -+ -+/* -+** 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 -+#include -+#ifdef WIN32 -+#include -+#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 -+#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] 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 -+#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 -+#include -+#include -+#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 -+#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 index e92bdfb..0000000 --- a/vim-lib64.patch +++ /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 index f1f9b49..0000000 --- a/vim-libacl_fix.patch +++ /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 index d229862..0000000 --- a/vim-mktemp.patch +++ /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 index 0146ccb..0000000 --- a/vim-ocaml.patch +++ /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 --" Markus Mottl --" 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 -+" Mike Leary -+" Markus Mottl -+" 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\\>.*=.*\\.*=\\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\)\|\' -+ let ind = s:FindPair(s:module, '','\') -+ -+ " Back to normal indent after lines ending with 'in': -+ elseif lline =~ '\' -+ let ind = s:FindPair('\', '', '\') -+ -+ " Back to normal indent after lines ending with 'done': -+ elseif lline =~ '\' -+ 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 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\>.*\\s*\\|>]\||]\|}\|]\|)\)' -- 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, '','\') -+ -+ " Indent if current line begins with 'done' for 'do': -+ elseif line =~ '^\s*done\>' -+ 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 ')': -+ 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, '','\' -+ if lline !~ s:lim . '\|\\)\|\<\(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 =~ '\' - if lline !~ '^\s*\(let\|and\)\>' -- return ind - &sw -+ return s:FindPair('\', '', '\') - 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('\', '', '\') - 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('\', '', '\') -+ 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\)\>\|\' -+ return s:FindPair('^\s*\%(let\|type\|class\)\>', '', '\') - 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\)\>', '','\') -+ 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 - " Karl-Heinz Sylla --" 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 < -+" 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 "\" - syn match ocamlCountErr "\" --syn match ocamlDoErr "\" -+ -+if !exists("ocaml_revised") -+ syn match ocamlDoErr "\" -+endif -+ - syn match ocamlDoneErr "\" - syn match ocamlThenErr "\" - -@@ -79,7 +82,9 @@ - - - " Blocks --syn region ocamlEnd matchgroup=ocamlKeyword start="\" matchgroup=ocamlKeyword end="\" contains=ALLBUT,@ocamlContained,ocamlEndErr -+if !exists("ocaml_revised") -+ syn region ocamlEnd matchgroup=ocamlKeyword start="\" matchgroup=ocamlKeyword end="\" contains=ALLBUT,@ocamlContained,ocamlEndErr -+endif - - - " "for" -@@ -87,8 +92,9 @@ - - - " "do" --syn region ocamlDo matchgroup=ocamlKeyword start="\" matchgroup=ocamlKeyword end="\" contains=ALLBUT,@ocamlContained,ocamlDoneErr -- -+if !exists("ocaml_revised") -+ syn region ocamlDo matchgroup=ocamlKeyword start="\" matchgroup=ocamlKeyword end="\" contains=ALLBUT,@ocamlContained,ocamlDoneErr -+endif - - " "if" - syn region ocamlNone matchgroup=ocamlKeyword start="\" matchgroup=ocamlKeyword end="\" 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="\" matchgroup=ocamlModule end="\<\w\(\w\|'\)*\>" contains=ocamlComment skipwhite skipempty nextgroup=ocamlMTDef -+syn region ocamlKeyword start="\\s*\" 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 "\" --syn sync match ocamlDoSync groupthere ocamlDo "\" --syn sync match ocamlEndSync grouphere ocamlEnd "\<\(begin\|object\)\>" -+if !exists("ocaml_revised") -+ syn sync match ocamlDoSync grouphere ocamlDo "\" -+ syn sync match ocamlDoSync groupthere ocamlDo "\" -+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 "\" - syn sync match ocamlStructSync grouphere ocamlStruct "\" - syn sync match ocamlStructSync groupthere ocamlStruct "\" -@@ -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 index 2397510..0000000 --- a/vim-pl.po.patch +++ /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 \n" --"Language-Team: Polish \n" -+"Language-Team: Polish \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 for info on this" --msgstr "wprowad¼ :help cp-default dla informacji to tym " -+msgstr "wprowad¼ :help cp-default dla informacji o tym " - - #: version.c:2104 - msgid "menu Help->Orphans for information " --msgstr "wprowad¼ :help iccf 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 for info on this" --msgstr "wprowad¼ :help windows95 dla informacji to tym " -+msgstr "wprowad¼ :help windows95 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 index 7ed47d4..0000000 --- a/vim-python_ts.patch +++ /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 ]] :call Python_jump('/^\(class\\|def\)') diff --git a/vim-specsyntax-pld.patch b/vim-specsyntax-pld.patch deleted file mode 100644 index 9abc682..0000000 --- a/vim-specsyntax-pld.patch +++ /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="\" end="\" 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="\" end="\" contains=ALLBUT,shFunction,shIfError,shCase,@specListedFiles - diff --git a/vim-specsyntax.patch b/vim-specsyntax.patch deleted file mode 100644 index 88d5cfd..0000000 --- a/vim-specsyntax.patch +++ /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="\" end="\" 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="\" end="\" contains=ALLBUT,shFunction,shIfError,shCase,@specListedFiles - diff --git a/vim-specsyntax4.patch b/vim-specsyntax4.patch deleted file mode 100644 index c7249a3..0000000 --- a/vim-specsyntax4.patch +++ /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="\" end="\" 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 - -- 2.44.0