Author: jim
Date: 2006-06-22 01:29:32 -0600 (Thu, 22 Jun 2006)
New Revision: 1818

Added:
   trunk/patches/vim-7.0-fixes-4.patch
Removed:
   trunk/patches/vim-7.0-fixes-3.patch
Modified:
   /
Log:
 [EMAIL PROTECTED] (orig r1886):  jim | 2006-06-22 00:06:02 -0700
 Updated Vim 7.0 patch



Property changes on: 
___________________________________________________________________
Name: svk:merge
   - b6734a72-470d-0410-b049-f317dca95413:/:1885
   + b6734a72-470d-0410-b049-f317dca95413:/:1886

Deleted: trunk/patches/vim-7.0-fixes-3.patch
===================================================================
--- trunk/patches/vim-7.0-fixes-3.patch 2006-06-22 07:29:22 UTC (rev 1817)
+++ trunk/patches/vim-7.0-fixes-3.patch 2006-06-22 07:29:32 UTC (rev 1818)
@@ -1,614 +0,0 @@
-Submitted By: Jeremy Huntwork (jhuntwork at linuxfromscratch dot org)
-Date: 2006-05-25
-Initial Package Version: 7.0
-Origin: Upstream
-Upstream Status: Applied
-Description: Contains Patch 001-004 and 006-017 from Upstream
-        005 is for the extras and Windows 32 only
-
-diff -Naur vim70-orig/runtime/autoload/ccomplete.vim 
vim70/runtime/autoload/ccomplete.vim
---- vim70-orig/runtime/autoload/ccomplete.vim  2006-05-03 10:35:56.000000000 
-0400
-+++ vim70/runtime/autoload/ccomplete.vim       2006-05-25 09:13:10.000000000 
-0400
-@@ -1,7 +1,7 @@
- " Vim completion script
- " Language:   C
- " Maintainer: Bram Moolenaar <[EMAIL PROTECTED]>
--" Last Change:        2006 May 03
-+" Last Change:        2006 May 08
- 
- 
- " This function is used for the 'omnifunc' option.
-@@ -458,7 +458,7 @@
- " member.
- function! s:StructMembers(typename, items, all)
-   " Todo: What about local structures?
--  let fnames = join(map(tagfiles(), 'escape(v:val, " \\")'))
-+  let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")'))
-   if fnames == ''
-     return []
-   endif
-diff -Naur vim70-orig/runtime/autoload/spellfile.vim 
vim70/runtime/autoload/spellfile.vim
---- vim70-orig/runtime/autoload/spellfile.vim  2006-02-01 07:12:24.000000000 
-0500
-+++ vim70/runtime/autoload/spellfile.vim       2006-05-25 09:13:12.000000000 
-0400
-@@ -1,9 +1,9 @@
- " Vim script to download a missing spell file
- " Maintainer: Bram Moolenaar <[EMAIL PROTECTED]>
--" Last Change:        2006 Feb 01
-+" Last Change:        2006 May 10
- 
- if !exists('g:spellfile_URL')
--  let g:spellfile_URL = 'ftp://ftp.vim.org/pub/vim/unstable/runtime/spell'
-+  let g:spellfile_URL = 'ftp://ftp.vim.org/pub/vim/runtime/spell'
- endif
- let s:spellfile_URL = ''    " Start with nothing so that s:donedict is reset.
- 
-@@ -61,13 +61,13 @@
-     new
-     setlocal bin
-     echo 'Downloading ' . fname . '...'
--    exe 'Nread ' g:spellfile_URL . '/' . fname
-+    call spellfile#Nread(fname)
-     if getline(2) !~ 'VIMspell'
-       " Didn't work, perhaps there is an ASCII one.
-       g/^/d
-       let fname = a:lang . '.ascii.spl'
-       echo 'Could not find it, trying ' . fname . '...'
--      exe 'Nread ' g:spellfile_URL . '/' . fname
-+      call spellfile#Nread(fname)
-       if getline(2) !~ 'VIMspell'
-       echo 'Sorry, downloading failed'
-       bwipe!
-@@ -95,7 +95,7 @@
-       g/^/d
-       let fname = substitute(fname, '\.spl$', '.sug', '')
-       echo 'Downloading ' . fname . '...'
--      exe 'Nread ' g:spellfile_URL . '/' . fname
-+      call spellfile#Nread(fname)
-       if getline(2) !~ 'VIMsug'
-         echo 'Sorry, downloading failed'
-       else
-@@ -109,3 +109,10 @@
-     bwipe
-   endif
- endfunc
-+
-+" Read "fname" from the ftp server.
-+function! spellfile#Nread(fname)
-+  let machine = substitute(g:spellfile_URL, 'ftp://\([^/]*\).*', '\1', '')
-+  let dir = substitute(g:spellfile_URL, 'ftp://[^/]*/\(.*\)', '\1', '')
-+  exe 'Nread "' . machine . ' anonymous vim7user ' . dir . '/' . a:fname . '"'
-+endfunc
-diff -Naur vim70-orig/runtime/plugin/matchparen.vim 
vim70/runtime/plugin/matchparen.vim
---- vim70-orig/runtime/plugin/matchparen.vim   2006-04-27 09:31:26.000000000 
-0400
-+++ vim70/runtime/plugin/matchparen.vim        2006-05-25 09:13:12.000000000 
-0400
-@@ -1,6 +1,6 @@
- " Vim plugin for showing matching parens
- " Maintainer:  Bram Moolenaar <[EMAIL PROTECTED]>
--" Last Change: 2006 Apr 27
-+" Last Change: 2006 May 11
- 
- " Exit quickly when:
- " - this plugin was already loaded (or disabled)
-@@ -90,7 +90,7 @@
-   " Find the match.  When it was just before the cursor move it there for a
-   " moment.
-   if before > 0
--    let save_cursor = getpos('.')
-+    let save_cursor = winsaveview()
-     call cursor(c_lnum, c_col - before)
-   endif
- 
-@@ -102,7 +102,7 @@
-   let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip, stopline)
- 
-   if before > 0
--    call setpos('.', save_cursor)
-+    call winrestview(save_cursor)
-   endif
- 
-   " If a match is found setup match highlighting.
-diff -Naur vim70-orig/src/edit.c vim70/src/edit.c
---- vim70-orig/src/edit.c      2006-05-07 07:48:51.000000000 -0400
-+++ vim70/src/edit.c   2006-05-25 09:13:12.000000000 -0400
-@@ -751,7 +751,7 @@
-                   continue;
-               }
- 
--              /* Pressing CTRL-Y selects the current match.  Shen
-+              /* Pressing CTRL-Y selects the current match.  When
-                * compl_enter_selects is set the Enter key does the same. */
-               if (c == Ctrl_Y || (compl_enter_selects
-                                  && (c == CAR || c == K_KENTER || c == NL)))
-@@ -3046,7 +3046,6 @@
-     ins_compl_delete();
-     ins_bytes(compl_leader + curwin->w_cursor.col - compl_col);
-     compl_used_match = FALSE;
--    compl_enter_selects = FALSE;
- 
-     if (compl_started)
-       ins_compl_set_original_text(compl_leader);
-@@ -3076,6 +3075,7 @@
-       compl_restarting = FALSE;
-     }
- 
-+#if 0   /* disabled, made CTRL-L, BS and typing char jump to original text. */
-     if (!compl_used_match)
-     {
-       /* Go to the original text, since none of the matches is inserted. */
-@@ -3087,6 +3087,8 @@
-       compl_curr_match = compl_shown_match;
-       compl_shows_dir = compl_direction;
-     }
-+#endif
-+    compl_enter_selects = !compl_used_match;
- 
-     /* Show the popup menu with a different set of matches. */
-     ins_compl_show_pum();
-@@ -3175,10 +3177,32 @@
-     char_u    *p;
-     int               len = curwin->w_cursor.col - compl_col;
-     int               c;
-+    compl_T   *cp;
- 
-     p = compl_shown_match->cp_str;
-     if ((int)STRLEN(p) <= len)   /* the match is too short */
--      return;
-+    {
-+      /* When still at the original match use the first entry that matches
-+       * the leader. */
-+      if (compl_shown_match->cp_flags & ORIGINAL_TEXT)
-+      {
-+          p = NULL;
-+          for (cp = compl_shown_match->cp_next; cp != NULL
-+                               && cp != compl_first_match; cp = cp->cp_next)
-+          {
-+              if (ins_compl_equal(cp, compl_leader,
-+                                                 (int)STRLEN(compl_leader)))
-+              {
-+                  p = cp->cp_str;
-+                  break;
-+              }
-+          }
-+          if (p == NULL || (int)STRLEN(p) <= len)
-+              return;
-+      }
-+      else
-+          return;
-+    }
-     p += len;
- #ifdef FEAT_MBYTE
-     c = mb_ptr2char(p);
-@@ -4100,6 +4124,21 @@
-               && compl_shown_match->cp_next != NULL
-               && compl_shown_match->cp_next != compl_first_match)
-           compl_shown_match = compl_shown_match->cp_next;
-+
-+      /* If we didn't find it searching forward, and compl_shows_dir is
-+       * backward, find the last match. */
-+      if (compl_shows_dir == BACKWARD
-+              && !ins_compl_equal(compl_shown_match,
-+                                    compl_leader, (int)STRLEN(compl_leader))
-+              && (compl_shown_match->cp_next == NULL
-+                  || compl_shown_match->cp_next == compl_first_match))
-+      {
-+          while (!ins_compl_equal(compl_shown_match,
-+                                    compl_leader, (int)STRLEN(compl_leader))
-+                  && compl_shown_match->cp_prev != NULL
-+                  && compl_shown_match->cp_prev != compl_first_match)
-+              compl_shown_match = compl_shown_match->cp_prev;
-+      }
-     }
- 
-     if (allow_get_expansion && insert_match
-diff -Naur vim70-orig/src/eval.c vim70/src/eval.c
---- vim70-orig/src/eval.c      2006-05-05 13:15:26.000000000 -0400
-+++ vim70/src/eval.c   2006-05-25 09:13:11.000000000 -0400
-@@ -11372,7 +11372,7 @@
-           if (argvars[2].v_type != VAR_UNKNOWN)
-           {
-               char_u  *xp_name;
--              int             xp_namelen;
-+              int     xp_namelen;
-               long    argt;
- 
-               rettv->vval.v_string = NULL;
-@@ -18963,7 +18963,8 @@
-     else if (lead > 0)
-     {
-       lead = 3;
--      if (eval_fname_sid(lv.ll_exp_name != NULL ? lv.ll_exp_name : *pp))
-+      if ((lv.ll_exp_name != NULL && eval_fname_sid(lv.ll_exp_name))
-+                                                     || eval_fname_sid(*pp))
-       {
-           /* It's "s:" or "<SID>" */
-           if (current_SID <= 0)
-diff -Naur vim70-orig/src/ex_docmd.c vim70/src/ex_docmd.c
---- vim70-orig/src/ex_docmd.c  2006-05-05 12:33:19.000000000 -0400
-+++ vim70/src/ex_docmd.c       2006-05-25 09:13:10.000000000 -0400
-@@ -833,7 +833,7 @@
-      * If requested, store and reset the global values controlling the
-      * exception handling (used when debugging).
-      */
--    else if (flags & DOCMD_EXCRESET)
-+    if (flags & DOCMD_EXCRESET)
-       save_dbg_stuff(&debug_saved);
- 
-     initial_trylevel = trylevel;
-diff -Naur vim70-orig/src/gui_at_fs.c vim70/src/gui_at_fs.c
---- vim70-orig/src/gui_at_fs.c 2005-07-09 07:30:17.000000000 -0400
-+++ vim70/src/gui_at_fs.c      2006-05-25 09:13:13.000000000 -0400
-@@ -1861,27 +1861,27 @@
-     XtPointer pnew;
- {
-     SFDir     *dir;
--    int               nw;
-+    int               nw = (int)(long)pnew;
- 
-     dir = &(SFdirs[SFdirPtr + (int)(long)n]);
- 
- #ifdef FEAT_GUI_NEXTAW
--    if ((int)(long)pnew < 0)
-+    if (nw < 0)
-     {
--      if ((int)(long)pnew > -SFvScrollHeight)
--          (int)(long)pnew = -1;
-+      if (nw > -SFvScrollHeight)
-+          nw = -1;
-       else
--          (int)(long)pnew = -SFlistSize;
-+          nw = -SFlistSize;
-     }
--    else if ((int)(long)pnew > 0)
-+    else if (nw > 0)
-     {
--      if ((int)(long)pnew < SFvScrollHeight)
--          (int)(long)pnew = 1;
-+      if (nw < SFvScrollHeight)
-+          nw = 1;
-       else
--          (int)(long)pnew = SFlistSize;
-+          nw = SFlistSize;
-     }
- #endif
--    nw = dir->vOrigin + (int)(long)pnew;
-+    nw += dir->vOrigin;
- 
-     if (nw > dir->nEntries - SFlistSize)
-       nw = dir->nEntries - SFlistSize;
-@@ -1941,27 +1941,27 @@
-     XtPointer pnew;
- {
-     SFDir     *dir;
--    int               nw;
-+    int               nw = (int)(long)pnew;
- 
-     dir = &(SFdirs[SFdirPtr + (int)(long)n]);
- 
- #ifdef FEAT_GUI_NEXTAW
--    if ((int)(long)pnew < 0)
-+    if (nw < 0)
-     {
--      if ((int)(long)pnew > -SFhScrollWidth)
--          (int)(long)pnew = -1;
-+      if (nw > -SFhScrollWidth)
-+          nw = -1;
-       else
--          (int)(long)pnew = -SFcharsPerEntry;
-+          nw = -SFcharsPerEntry;
-     }
--    else if ((int)(long)pnew > 0)
-+    else if (nw > 0)
-     {
--      if ((int)(long)pnew < SFhScrollWidth)
--          (int)(long)pnew = 1;
-+      if (nw < SFhScrollWidth)
-+          nw = 1;
-       else
--          (int)(long)pnew = SFcharsPerEntry;
-+          nw = SFcharsPerEntry;
-     }
- #endif
--    nw = dir->hOrigin + (int)(long)pnew;
-+    nw += dir->hOrigin;
- 
-     if (nw > dir->nChars - SFcharsPerEntry)
-       nw = dir->nChars - SFcharsPerEntry;
-@@ -2038,26 +2038,26 @@
-     XtPointer client_data;
-     XtPointer pnew;
- {
--    int               nw;
-+    int               nw = (int)(long)pnew;
-     float     f;
- 
- #ifdef FEAT_GUI_NEXTAW
--    if ((int)(long)pnew < 0)
-+    if (nw < 0)
-     {
--      if ((int)(long)pnew > -SFpathScrollWidth)
--          (int)(long)pnew = -1;
-+      if (nw > -SFpathScrollWidth)
-+          nw = -1;
-       else
--          (int)(long)pnew = -3;
-+          nw = -3;
-     }
--    else if ((int)(long)pnew > 0)
-+    else if (nw > 0)
-     {
--      if ((int)(long)pnew < SFpathScrollWidth)
--          (int)(long)pnew = 1;
-+      if (nw < SFpathScrollWidth)
-+          nw = 1;
-       else
--          (int)(long)pnew = 3;
-+          nw = 3;
-     }
- #endif
--    nw = SFdirPtr + (int)(long)pnew;
-+    nw += SFdirPtr;
- 
-     if (nw > SFdirEnd - 3)
-       nw = SFdirEnd - 3;
-diff -Naur vim70-orig/src/gui.c vim70/src/gui.c
---- vim70-orig/src/gui.c       2006-05-03 07:00:59.000000000 -0400
-+++ vim70/src/gui.c    2006-05-25 09:13:10.000000000 -0400
-@@ -4603,11 +4603,11 @@
-     /* Don't move the mouse when it's left or right of the Vim window */
-     if (x < 0 || x > Columns * gui.char_width)
-       return;
-+    if (y >= 0
- # ifdef FEAT_WINDOWS
--    if (Y_2_ROW(y) >= tabline_height())
--# else
--    if (y >= 0)
-+          && Y_2_ROW(y) >= tabline_height()
- # endif
-+       )
-       wp = xy2win(x, y);
-     if (wp != curwin && wp != NULL)   /* If in other than current window */
-     {
-diff -Naur vim70-orig/src/gui_xmebw.c vim70/src/gui_xmebw.c
---- vim70-orig/src/gui_xmebw.c 2006-04-30 11:32:32.000000000 -0400
-+++ vim70/src/gui_xmebw.c      2006-05-25 09:13:13.000000000 -0400
-@@ -47,13 +47,13 @@
- #include "gui_xmebwp.h"
- 
- /* Provide some missing wrappers, which are missed from the LessTif
-- * implementation.
-+ * implementation.  Also missing in Motif 1.2 and earlier.
-  *
-  * We neither use XmeGetPixmapData or _XmGetPixmapData, since with LessTif the
-  * pixmap will not appear in it's caches properly. We cache the interresting
-  * values in XmEnhancedButtonPart instead ourself.
-  */
--#ifdef LESSTIF_VERSION
-+#if defined(LESSTIF_VERSION) || (XmVersion <= 1002)
- # ifndef Lab_IsMenupane
- #  define Lab_IsMenupane(w) (Lab_MenuType(w) == (int)XmMENU_POPUP || \
-                   Lab_MenuType(w) == (int)XmMENU_PULLDOWN)
-@@ -480,7 +480,7 @@
-           || (eb->core.height <= 2 * eb->primitive.highlight_thickness))
-       return;
- 
--#ifndef LESSTIF_VERSION
-+#if !defined(LESSTIF_VERSION) && (XmVersion > 1002)
-     {
-       XmDisplay       dpy;
- 
-@@ -641,7 +641,7 @@
-     GC                tmp_gc = NULL;
-     Boolean   replaceGC = False;
-     Boolean   deadjusted = False;
--#ifndef LESSTIF_VERSION
-+#if !defined(LESSTIF_VERSION) && (XmVersion > 1002)
-     XmDisplay dpy = (XmDisplay)XmGetXmDisplay(XtDisplay(eb));
-     Boolean   etched_in = dpy->display.enable_etched_in_menu;
- #else
-@@ -726,7 +726,7 @@
-       if ((((ShellWidget) XtParent(XtParent(eb)))->shell.popped_up)
-               && _XmGetInDragMode((Widget) eb))
-       {
--#ifndef LESSTIF_VERSION
-+#if !defined(LESSTIF_VERSION) && (XmVersion > 1002)
-           XmDisplay dpy = (XmDisplay) XmGetXmDisplay(XtDisplay(wid));
-           Boolean etched_in = dpy->display.enable_etched_in_menu;
- #else
-@@ -810,7 +810,7 @@
- 
-     if (Lab_IsMenupane(eb))
-     {
--#ifndef LESSTIF_VERSION
-+#if !defined(LESSTIF_VERSION) && (XmVersion > 1002)
-       XmDisplay dpy = (XmDisplay) XmGetXmDisplay(XtDisplay(wid));
-       Boolean etched_in = dpy->display.enable_etched_in_menu;
- #else
-@@ -1150,7 +1150,7 @@
- Redisplay(Widget w, XEvent *event, Region region)
- {
-     XmEnhancedButtonWidget  eb = (XmEnhancedButtonWidget) w;
--#ifndef LESSTIF_VERSION
-+#if !defined(LESSTIF_VERSION) && (XmVersion > 1002)
-     XmDisplay             dpy;
-     XtEnum                default_button_emphasis;
- #endif
-@@ -1162,7 +1162,7 @@
-     if (!XtIsRealized((Widget)eb))
-       return;
- 
--#ifndef LESSTIF_VERSION
-+#if !defined(LESSTIF_VERSION) && (XmVersion > 1002)
-     dpy = (XmDisplay)XmGetXmDisplay(XtDisplay(eb));
-     default_button_emphasis = dpy->display.default_button_emphasis;
- #endif
-@@ -1241,7 +1241,7 @@
-     {
-       int adjust = 0;
- 
--#ifndef LESSTIF_VERSION
-+#if !defined(LESSTIF_VERSION) && (XmVersion > 1002)
-       /*
-        *  NOTE: PushButton has two types of shadows: primitive-shadow and
-        *  default-button-shadow.  If pushbutton is in a menu only primitive
-@@ -1289,7 +1289,7 @@
-                         adjust, adjust, rectwidth, rectheight, borderwidth);
-           }
- 
--#ifndef LESSTIF_VERSION
-+#if !defined(LESSTIF_VERSION) && (XmVersion > 1002)
-           switch (default_button_emphasis)
-           {
-               case XmINTERNAL_HIGHLIGHT:
-@@ -1365,7 +1365,7 @@
-                   default_button_shadow_thickness =
-                              eb->pushbutton.default_button_shadow_thickness;
- 
--#ifndef LESSTIF_VERSION
-+#if !defined(LESSTIF_VERSION) && (XmVersion > 1002)
-               /*
-                * Compute location of bounding box to contain the
-                * defaultButtonShadow.
-diff -Naur vim70-orig/src/Makefile vim70/src/Makefile
---- vim70-orig/src/Makefile    2006-05-07 09:25:27.000000000 -0400
-+++ vim70/src/Makefile 2006-05-25 09:13:11.000000000 -0400
-@@ -2177,6 +2177,7 @@
-       cd $(SHADOWDIR)/xxd; ln -s ../../xxd/*.[ch] ../../xxd/Make* .
-       if test -d $(RSRC_DIR); then \
-               cd $(SHADOWDIR); \
-+              ln -s ../infplist.xml .; \
-               ln -s ../$(RSRC_DIR) ../os_mac.rsr.hqx ../dehqx.py .; \
-       fi
-       mkdir $(SHADOWDIR)/testdir
-diff -Naur vim70-orig/src/mbyte.c vim70/src/mbyte.c
---- vim70-orig/src/mbyte.c     2006-04-30 07:51:01.000000000 -0400
-+++ vim70/src/mbyte.c  2006-05-25 09:13:13.000000000 -0400
-@@ -311,7 +311,11 @@
- 
- #define IDX_MACROMAN  57
-     {"macroman",      ENC_8BIT + ENC_MACROMAN, 0},    /* Mac OS */
--#define IDX_COUNT     58
-+#define IDX_DECMCS    58
-+    {"dec-mcs",               ENC_8BIT,               0},     /* DEC MCS */
-+#define IDX_HPROMAN8  59
-+    {"hp-roman8",     ENC_8BIT,               0},     /* HP Roman8 */
-+#define IDX_COUNT     60
- };
- 
- /*
-@@ -386,6 +390,7 @@
-     {"950",           IDX_BIG5},
- #endif
-     {"mac",           IDX_MACROMAN},
-+    {"mac-roman",     IDX_MACROMAN},
-     {NULL,            0}
- };
- 
-diff -Naur vim70-orig/src/message.c vim70/src/message.c
---- vim70-orig/src/message.c   2006-05-06 16:07:37.000000000 -0400
-+++ vim70/src/message.c        2006-05-25 09:13:11.000000000 -0400
-@@ -4175,15 +4175,16 @@
-                       str_arg_l = 0;
-                   else
-                   {
--                      /* memchr on HP does not like n > 2^31  !!! */
--                      char *q = memchr(str_arg, '\0',
-+                      /* Don't put the #if inside memchr(), it can be a
-+                       * macro. */
- #if SIZEOF_INT <= 2
--                              precision
-+                      char *q = memchr(str_arg, '\0', precision);
- #else
--                              precision <= (size_t)0x7fffffffL ? precision
--                                                     : (size_t)0x7fffffffL
-+                      /* memchr on HP does not like n > 2^31  !!! */
-+                      char *q = memchr(str_arg, '\0',
-+                                precision <= (size_t)0x7fffffffL ? precision
-+                                                     : (size_t)0x7fffffffL);
- #endif
--                                                     );
-                       str_arg_l = (q == NULL) ? precision : q - str_arg;
-                   }
-                   break;
-diff -Naur vim70-orig/src/option.c vim70/src/option.c
---- vim70-orig/src/option.c    2006-05-03 13:32:28.000000000 -0400
-+++ vim70/src/option.c 2006-05-25 09:13:12.000000000 -0400
-@@ -2294,7 +2294,7 @@
-                           {(char_u *)0L, (char_u *)0L}
- #endif
-                           },
--    {"spellsuggest", "sps", P_STRING|P_VI_DEF|P_EXPAND|P_SECURE,
-+    {"spellsuggest", "sps", P_STRING|P_VI_DEF|P_EXPAND|P_SECURE|P_COMMA,
- #ifdef FEAT_SPELL
-                           (char_u *)&p_sps, PV_NONE,
-                           {(char_u *)"best", (char_u *)0L}
-@@ -5227,13 +5227,13 @@
-           case PV_STL:        return &curwin->w_p_stl_flags;
- #endif
- #ifdef FEAT_EVAL
-+# ifdef FEAT_FOLDING
-           case PV_FDE:        return &curwin->w_p_fde_flags;
-           case PV_FDT:        return &curwin->w_p_fdt_flags;
-+# endif
- # ifdef FEAT_BEVAL
-           case PV_BEXPR:      return &curbuf->b_p_bexpr_flags;
- # endif
--#endif
--#if defined(FEAT_EVAL)
- # if defined(FEAT_CINDENT)
-           case PV_INDE:       return &curbuf->b_p_inde_flags;
- # endif
-diff -Naur vim70-orig/src/spell.c vim70/src/spell.c
---- vim70-orig/src/spell.c     2006-05-05 03:49:58.000000000 -0400
-+++ vim70/src/spell.c  2006-05-25 09:13:11.000000000 -0400
-@@ -2108,7 +2108,8 @@
-        * possible. */
-       STRCPY(buf, line);
-       if (lnum < wp->w_buffer->b_ml.ml_line_count)
--          spell_cat_line(buf + STRLEN(buf), ml_get(lnum + 1), MAXWLEN);
-+          spell_cat_line(buf + STRLEN(buf),
-+                        ml_get_buf(wp->w_buffer, lnum + 1, FALSE), MAXWLEN);
- 
-       p = buf + skip;
-       endp = buf + len;
-diff -Naur vim70-orig/src/version.c vim70/src/version.c
---- vim70-orig/src/version.c   2006-05-03 03:50:42.000000000 -0400
-+++ vim70/src/version.c        2006-05-25 09:13:13.000000000 -0400
-@@ -667,6 +667,38 @@
- static int included_patches[] =
- {   /* Add new patch number below this line */
- /**/
-+    17,
-+/**/
-+    16,
-+/**/
-+    15,
-+/**/
-+    14,
-+/**/
-+    13,
-+/**/
-+    12,
-+/**/
-+    11,
-+/**/
-+    10,
-+/**/
-+    9,
-+/**/
-+    8,
-+/**/
-+    7,
-+/**/
-+    6,
-+/**/
-+    4,
-+/**/
-+    3,
-+/**/
-+    2,
-+/**/
-+    1,
-+/**/
-     0
- };
- 

Added: trunk/patches/vim-7.0-fixes-4.patch
===================================================================
--- trunk/patches/vim-7.0-fixes-4.patch                         (rev 0)
+++ trunk/patches/vim-7.0-fixes-4.patch 2006-06-22 07:29:32 UTC (rev 1818)
@@ -0,0 +1,900 @@
+Submitted By: Jim Gifford (jim at linuxfromscratch dot org)
+Date: 2006-06-21
+Initial Package Version: 7.0
+Origin: Upstream
+Upstream Status: Applied
+Description: Contains Patch 001-004 and 006-022 from Upstream
+        005 is for the extras and Windows 32 only
+
+diff -Naur vim70.orig/runtime/autoload/ccomplete.vim 
vim70/runtime/autoload/ccomplete.vim
+--- vim70.orig/runtime/autoload/ccomplete.vim  2006-05-03 07:35:56.000000000 
-0700
++++ vim70/runtime/autoload/ccomplete.vim       2006-06-21 23:50:50.000000000 
-0700
+@@ -1,7 +1,7 @@
+ " Vim completion script
+ " Language:   C
+ " Maintainer: Bram Moolenaar <[EMAIL PROTECTED]>
+-" Last Change:        2006 May 03
++" Last Change:        2006 May 08
+ 
+ 
+ " This function is used for the 'omnifunc' option.
+@@ -458,7 +458,7 @@
+ " member.
+ function! s:StructMembers(typename, items, all)
+   " Todo: What about local structures?
+-  let fnames = join(map(tagfiles(), 'escape(v:val, " \\")'))
++  let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")'))
+   if fnames == ''
+     return []
+   endif
+diff -Naur vim70.orig/runtime/autoload/spellfile.vim 
vim70/runtime/autoload/spellfile.vim
+--- vim70.orig/runtime/autoload/spellfile.vim  2006-02-01 04:12:24.000000000 
-0800
++++ vim70/runtime/autoload/spellfile.vim       2006-06-21 23:50:50.000000000 
-0700
+@@ -1,9 +1,9 @@
+ " Vim script to download a missing spell file
+ " Maintainer: Bram Moolenaar <[EMAIL PROTECTED]>
+-" Last Change:        2006 Feb 01
++" Last Change:        2006 May 10
+ 
+ if !exists('g:spellfile_URL')
+-  let g:spellfile_URL = 'ftp://ftp.vim.org/pub/vim/unstable/runtime/spell'
++  let g:spellfile_URL = 'ftp://ftp.vim.org/pub/vim/runtime/spell'
+ endif
+ let s:spellfile_URL = ''    " Start with nothing so that s:donedict is reset.
+ 
+@@ -61,13 +61,13 @@
+     new
+     setlocal bin
+     echo 'Downloading ' . fname . '...'
+-    exe 'Nread ' g:spellfile_URL . '/' . fname
++    call spellfile#Nread(fname)
+     if getline(2) !~ 'VIMspell'
+       " Didn't work, perhaps there is an ASCII one.
+       g/^/d
+       let fname = a:lang . '.ascii.spl'
+       echo 'Could not find it, trying ' . fname . '...'
+-      exe 'Nread ' g:spellfile_URL . '/' . fname
++      call spellfile#Nread(fname)
+       if getline(2) !~ 'VIMspell'
+       echo 'Sorry, downloading failed'
+       bwipe!
+@@ -95,7 +95,7 @@
+       g/^/d
+       let fname = substitute(fname, '\.spl$', '.sug', '')
+       echo 'Downloading ' . fname . '...'
+-      exe 'Nread ' g:spellfile_URL . '/' . fname
++      call spellfile#Nread(fname)
+       if getline(2) !~ 'VIMsug'
+         echo 'Sorry, downloading failed'
+       else
+@@ -109,3 +109,10 @@
+     bwipe
+   endif
+ endfunc
++
++" Read "fname" from the ftp server.
++function! spellfile#Nread(fname)
++  let machine = substitute(g:spellfile_URL, 'ftp://\([^/]*\).*', '\1', '')
++  let dir = substitute(g:spellfile_URL, 'ftp://[^/]*/\(.*\)', '\1', '')
++  exe 'Nread "' . machine . ' anonymous vim7user ' . dir . '/' . a:fname . '"'
++endfunc
+diff -Naur vim70.orig/runtime/plugin/matchparen.vim 
vim70/runtime/plugin/matchparen.vim
+--- vim70.orig/runtime/plugin/matchparen.vim   2006-04-27 06:31:26.000000000 
-0700
++++ vim70/runtime/plugin/matchparen.vim        2006-06-21 23:50:50.000000000 
-0700
+@@ -1,6 +1,6 @@
+ " Vim plugin for showing matching parens
+ " Maintainer:  Bram Moolenaar <[EMAIL PROTECTED]>
+-" Last Change: 2006 Apr 27
++" Last Change: 2006 May 11
+ 
+ " Exit quickly when:
+ " - this plugin was already loaded (or disabled)
+@@ -90,7 +90,7 @@
+   " Find the match.  When it was just before the cursor move it there for a
+   " moment.
+   if before > 0
+-    let save_cursor = getpos('.')
++    let save_cursor = winsaveview()
+     call cursor(c_lnum, c_col - before)
+   endif
+ 
+@@ -102,7 +102,7 @@
+   let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip, stopline)
+ 
+   if before > 0
+-    call setpos('.', save_cursor)
++    call winrestview(save_cursor)
+   endif
+ 
+   " If a match is found setup match highlighting.
+diff -Naur vim70.orig/src/edit.c vim70/src/edit.c
+--- vim70.orig/src/edit.c      2006-05-07 04:48:51.000000000 -0700
++++ vim70/src/edit.c   2006-06-21 23:50:50.000000000 -0700
+@@ -751,7 +751,7 @@
+                   continue;
+               }
+ 
+-              /* Pressing CTRL-Y selects the current match.  Shen
++              /* Pressing CTRL-Y selects the current match.  When
+                * compl_enter_selects is set the Enter key does the same. */
+               if (c == Ctrl_Y || (compl_enter_selects
+                                  && (c == CAR || c == K_KENTER || c == NL)))
+@@ -3046,7 +3046,6 @@
+     ins_compl_delete();
+     ins_bytes(compl_leader + curwin->w_cursor.col - compl_col);
+     compl_used_match = FALSE;
+-    compl_enter_selects = FALSE;
+ 
+     if (compl_started)
+       ins_compl_set_original_text(compl_leader);
+@@ -3076,6 +3075,7 @@
+       compl_restarting = FALSE;
+     }
+ 
++#if 0   /* disabled, made CTRL-L, BS and typing char jump to original text. */
+     if (!compl_used_match)
+     {
+       /* Go to the original text, since none of the matches is inserted. */
+@@ -3087,6 +3087,8 @@
+       compl_curr_match = compl_shown_match;
+       compl_shows_dir = compl_direction;
+     }
++#endif
++    compl_enter_selects = !compl_used_match;
+ 
+     /* Show the popup menu with a different set of matches. */
+     ins_compl_show_pum();
+@@ -3175,10 +3177,32 @@
+     char_u    *p;
+     int               len = curwin->w_cursor.col - compl_col;
+     int               c;
++    compl_T   *cp;
+ 
+     p = compl_shown_match->cp_str;
+     if ((int)STRLEN(p) <= len)   /* the match is too short */
+-      return;
++    {
++      /* When still at the original match use the first entry that matches
++       * the leader. */
++      if (compl_shown_match->cp_flags & ORIGINAL_TEXT)
++      {
++          p = NULL;
++          for (cp = compl_shown_match->cp_next; cp != NULL
++                               && cp != compl_first_match; cp = cp->cp_next)
++          {
++              if (ins_compl_equal(cp, compl_leader,
++                                                 (int)STRLEN(compl_leader)))
++              {
++                  p = cp->cp_str;
++                  break;
++              }
++          }
++          if (p == NULL || (int)STRLEN(p) <= len)
++              return;
++      }
++      else
++          return;
++    }
+     p += len;
+ #ifdef FEAT_MBYTE
+     c = mb_ptr2char(p);
+@@ -4100,6 +4124,21 @@
+               && compl_shown_match->cp_next != NULL
+               && compl_shown_match->cp_next != compl_first_match)
+           compl_shown_match = compl_shown_match->cp_next;
++
++      /* If we didn't find it searching forward, and compl_shows_dir is
++       * backward, find the last match. */
++      if (compl_shows_dir == BACKWARD
++              && !ins_compl_equal(compl_shown_match,
++                                    compl_leader, (int)STRLEN(compl_leader))
++              && (compl_shown_match->cp_next == NULL
++                  || compl_shown_match->cp_next == compl_first_match))
++      {
++          while (!ins_compl_equal(compl_shown_match,
++                                    compl_leader, (int)STRLEN(compl_leader))
++                  && compl_shown_match->cp_prev != NULL
++                  && compl_shown_match->cp_prev != compl_first_match)
++              compl_shown_match = compl_shown_match->cp_prev;
++      }
+     }
+ 
+     if (allow_get_expansion && insert_match
+diff -Naur vim70.orig/src/eval.c vim70/src/eval.c
+--- vim70.orig/src/eval.c      2006-05-05 10:15:26.000000000 -0700
++++ vim70/src/eval.c   2006-06-21 23:50:50.000000000 -0700
+@@ -11372,7 +11372,7 @@
+           if (argvars[2].v_type != VAR_UNKNOWN)
+           {
+               char_u  *xp_name;
+-              int             xp_namelen;
++              int     xp_namelen;
+               long    argt;
+ 
+               rettv->vval.v_string = NULL;
+@@ -18963,7 +18963,8 @@
+     else if (lead > 0)
+     {
+       lead = 3;
+-      if (eval_fname_sid(lv.ll_exp_name != NULL ? lv.ll_exp_name : *pp))
++      if ((lv.ll_exp_name != NULL && eval_fname_sid(lv.ll_exp_name))
++                                                     || eval_fname_sid(*pp))
+       {
+           /* It's "s:" or "<SID>" */
+           if (current_SID <= 0)
+diff -Naur vim70.orig/src/ex_docmd.c vim70/src/ex_docmd.c
+--- vim70.orig/src/ex_docmd.c  2006-05-05 09:33:19.000000000 -0700
++++ vim70/src/ex_docmd.c       2006-06-21 23:50:50.000000000 -0700
+@@ -833,7 +833,7 @@
+      * If requested, store and reset the global values controlling the
+      * exception handling (used when debugging).
+      */
+-    else if (flags & DOCMD_EXCRESET)
++    if (flags & DOCMD_EXCRESET)
+       save_dbg_stuff(&debug_saved);
+ 
+     initial_trylevel = trylevel;
+diff -Naur vim70.orig/src/gui_at_fs.c vim70/src/gui_at_fs.c
+--- vim70.orig/src/gui_at_fs.c 2005-07-09 04:30:17.000000000 -0700
++++ vim70/src/gui_at_fs.c      2006-06-21 23:50:50.000000000 -0700
+@@ -1861,27 +1861,27 @@
+     XtPointer pnew;
+ {
+     SFDir     *dir;
+-    int               nw;
++    int               nw = (int)(long)pnew;
+ 
+     dir = &(SFdirs[SFdirPtr + (int)(long)n]);
+ 
+ #ifdef FEAT_GUI_NEXTAW
+-    if ((int)(long)pnew < 0)
++    if (nw < 0)
+     {
+-      if ((int)(long)pnew > -SFvScrollHeight)
+-          (int)(long)pnew = -1;
++      if (nw > -SFvScrollHeight)
++          nw = -1;
+       else
+-          (int)(long)pnew = -SFlistSize;
++          nw = -SFlistSize;
+     }
+-    else if ((int)(long)pnew > 0)
++    else if (nw > 0)
+     {
+-      if ((int)(long)pnew < SFvScrollHeight)
+-          (int)(long)pnew = 1;
++      if (nw < SFvScrollHeight)
++          nw = 1;
+       else
+-          (int)(long)pnew = SFlistSize;
++          nw = SFlistSize;
+     }
+ #endif
+-    nw = dir->vOrigin + (int)(long)pnew;
++    nw += dir->vOrigin;
+ 
+     if (nw > dir->nEntries - SFlistSize)
+       nw = dir->nEntries - SFlistSize;
+@@ -1941,27 +1941,27 @@
+     XtPointer pnew;
+ {
+     SFDir     *dir;
+-    int               nw;
++    int               nw = (int)(long)pnew;
+ 
+     dir = &(SFdirs[SFdirPtr + (int)(long)n]);
+ 
+ #ifdef FEAT_GUI_NEXTAW
+-    if ((int)(long)pnew < 0)
++    if (nw < 0)
+     {
+-      if ((int)(long)pnew > -SFhScrollWidth)
+-          (int)(long)pnew = -1;
++      if (nw > -SFhScrollWidth)
++          nw = -1;
+       else
+-          (int)(long)pnew = -SFcharsPerEntry;
++          nw = -SFcharsPerEntry;
+     }
+-    else if ((int)(long)pnew > 0)
++    else if (nw > 0)
+     {
+-      if ((int)(long)pnew < SFhScrollWidth)
+-          (int)(long)pnew = 1;
++      if (nw < SFhScrollWidth)
++          nw = 1;
+       else
+-          (int)(long)pnew = SFcharsPerEntry;
++          nw = SFcharsPerEntry;
+     }
+ #endif
+-    nw = dir->hOrigin + (int)(long)pnew;
++    nw += dir->hOrigin;
+ 
+     if (nw > dir->nChars - SFcharsPerEntry)
+       nw = dir->nChars - SFcharsPerEntry;
+@@ -2038,26 +2038,26 @@
+     XtPointer client_data;
+     XtPointer pnew;
+ {
+-    int               nw;
++    int               nw = (int)(long)pnew;
+     float     f;
+ 
+ #ifdef FEAT_GUI_NEXTAW
+-    if ((int)(long)pnew < 0)
++    if (nw < 0)
+     {
+-      if ((int)(long)pnew > -SFpathScrollWidth)
+-          (int)(long)pnew = -1;
++      if (nw > -SFpathScrollWidth)
++          nw = -1;
+       else
+-          (int)(long)pnew = -3;
++          nw = -3;
+     }
+-    else if ((int)(long)pnew > 0)
++    else if (nw > 0)
+     {
+-      if ((int)(long)pnew < SFpathScrollWidth)
+-          (int)(long)pnew = 1;
++      if (nw < SFpathScrollWidth)
++          nw = 1;
+       else
+-          (int)(long)pnew = 3;
++          nw = 3;
+     }
+ #endif
+-    nw = SFdirPtr + (int)(long)pnew;
++    nw += SFdirPtr;
+ 
+     if (nw > SFdirEnd - 3)
+       nw = SFdirEnd - 3;
+diff -Naur vim70.orig/src/gui.c vim70/src/gui.c
+--- vim70.orig/src/gui.c       2006-05-03 04:00:59.000000000 -0700
++++ vim70/src/gui.c    2006-06-21 23:52:38.000000000 -0700
+@@ -4515,7 +4515,7 @@
+     int               y;
+ {
+     win_T     *wp;
+-    char_u    st[6];
++    char_u    st[8];
+ 
+     /* Ignore this while still starting up. */
+     if (!gui.in_use || gui.starting)
+@@ -4603,11 +4603,11 @@
+     /* Don't move the mouse when it's left or right of the Vim window */
+     if (x < 0 || x > Columns * gui.char_width)
+       return;
++    if (y >= 0
+ # ifdef FEAT_WINDOWS
+-    if (Y_2_ROW(y) >= tabline_height())
+-# else
+-    if (y >= 0)
++          && Y_2_ROW(y) >= tabline_height()
+ # endif
++       )
+       wp = xy2win(x, y);
+     if (wp != curwin && wp != NULL)   /* If in other than current window */
+     {
+diff -Naur vim70.orig/src/gui_xmebw.c vim70/src/gui_xmebw.c
+--- vim70.orig/src/gui_xmebw.c 2006-04-30 08:32:32.000000000 -0700
++++ vim70/src/gui_xmebw.c      2006-06-21 23:50:50.000000000 -0700
+@@ -47,13 +47,13 @@
+ #include "gui_xmebwp.h"
+ 
+ /* Provide some missing wrappers, which are missed from the LessTif
+- * implementation.
++ * implementation.  Also missing in Motif 1.2 and earlier.
+  *
+  * We neither use XmeGetPixmapData or _XmGetPixmapData, since with LessTif the
+  * pixmap will not appear in it's caches properly. We cache the interresting
+  * values in XmEnhancedButtonPart instead ourself.
+  */
+-#ifdef LESSTIF_VERSION
++#if defined(LESSTIF_VERSION) || (XmVersion <= 1002)
+ # ifndef Lab_IsMenupane
+ #  define Lab_IsMenupane(w) (Lab_MenuType(w) == (int)XmMENU_POPUP || \
+                   Lab_MenuType(w) == (int)XmMENU_PULLDOWN)
+@@ -480,7 +480,7 @@
+           || (eb->core.height <= 2 * eb->primitive.highlight_thickness))
+       return;
+ 
+-#ifndef LESSTIF_VERSION
++#if !defined(LESSTIF_VERSION) && (XmVersion > 1002)
+     {
+       XmDisplay       dpy;
+ 
+@@ -641,7 +641,7 @@
+     GC                tmp_gc = NULL;
+     Boolean   replaceGC = False;
+     Boolean   deadjusted = False;
+-#ifndef LESSTIF_VERSION
++#if !defined(LESSTIF_VERSION) && (XmVersion > 1002)
+     XmDisplay dpy = (XmDisplay)XmGetXmDisplay(XtDisplay(eb));
+     Boolean   etched_in = dpy->display.enable_etched_in_menu;
+ #else
+@@ -726,7 +726,7 @@
+       if ((((ShellWidget) XtParent(XtParent(eb)))->shell.popped_up)
+               && _XmGetInDragMode((Widget) eb))
+       {
+-#ifndef LESSTIF_VERSION
++#if !defined(LESSTIF_VERSION) && (XmVersion > 1002)
+           XmDisplay dpy = (XmDisplay) XmGetXmDisplay(XtDisplay(wid));
+           Boolean etched_in = dpy->display.enable_etched_in_menu;
+ #else
+@@ -810,7 +810,7 @@
+ 
+     if (Lab_IsMenupane(eb))
+     {
+-#ifndef LESSTIF_VERSION
++#if !defined(LESSTIF_VERSION) && (XmVersion > 1002)
+       XmDisplay dpy = (XmDisplay) XmGetXmDisplay(XtDisplay(wid));
+       Boolean etched_in = dpy->display.enable_etched_in_menu;
+ #else
+@@ -1150,7 +1150,7 @@
+ Redisplay(Widget w, XEvent *event, Region region)
+ {
+     XmEnhancedButtonWidget  eb = (XmEnhancedButtonWidget) w;
+-#ifndef LESSTIF_VERSION
++#if !defined(LESSTIF_VERSION) && (XmVersion > 1002)
+     XmDisplay             dpy;
+     XtEnum                default_button_emphasis;
+ #endif
+@@ -1162,7 +1162,7 @@
+     if (!XtIsRealized((Widget)eb))
+       return;
+ 
+-#ifndef LESSTIF_VERSION
++#if !defined(LESSTIF_VERSION) && (XmVersion > 1002)
+     dpy = (XmDisplay)XmGetXmDisplay(XtDisplay(eb));
+     default_button_emphasis = dpy->display.default_button_emphasis;
+ #endif
+@@ -1241,7 +1241,7 @@
+     {
+       int adjust = 0;
+ 
+-#ifndef LESSTIF_VERSION
++#if !defined(LESSTIF_VERSION) && (XmVersion > 1002)
+       /*
+        *  NOTE: PushButton has two types of shadows: primitive-shadow and
+        *  default-button-shadow.  If pushbutton is in a menu only primitive
+@@ -1289,7 +1289,7 @@
+                         adjust, adjust, rectwidth, rectheight, borderwidth);
+           }
+ 
+-#ifndef LESSTIF_VERSION
++#if !defined(LESSTIF_VERSION) && (XmVersion > 1002)
+           switch (default_button_emphasis)
+           {
+               case XmINTERNAL_HIGHLIGHT:
+@@ -1365,7 +1365,7 @@
+                   default_button_shadow_thickness =
+                              eb->pushbutton.default_button_shadow_thickness;
+ 
+-#ifndef LESSTIF_VERSION
++#if !defined(LESSTIF_VERSION) && (XmVersion > 1002)
+               /*
+                * Compute location of bounding box to contain the
+                * defaultButtonShadow.
+diff -Naur vim70.orig/src/if_ruby.c vim70/src/if_ruby.c
+--- vim70.orig/src/if_ruby.c   2006-04-30 08:37:52.000000000 -0700
++++ vim70/src/if_ruby.c        2006-06-21 23:56:28.000000000 -0700
+@@ -643,11 +643,23 @@
+ 
+ static VALUE set_buffer_line(buf_T *buf, linenr_T n, VALUE str)
+ {
+-    buf_T *savebuf = curbuf;
+-    char *line = STR2CSTR(str);
++    char      *line = STR2CSTR(str);
++#ifdef FEAT_AUTOCMD
++    aco_save_T        aco;
++#else
++    buf_T     *save_curbuf = curbuf;
++#endif
+ 
+-    if (n > 0 && n <= buf->b_ml.ml_line_count && line != NULL) {
++    if (n > 0 && n <= buf->b_ml.ml_line_count && line != NULL)
++    {
++#ifdef FEAT_AUTOCMD
++      /* set curwin/curbuf for "buf" and save some things */
++      aucmd_prepbuf(&aco, buf);
++#else
+       curbuf = buf;
++      curwin->w_buffer = buf;
++#endif
++
+       if (u_savesub(n) == OK) {
+           ml_replace(n, (char_u *)line, TRUE);
+           changed();
+@@ -655,10 +667,19 @@
+           syn_changed(n); /* recompute syntax hl. for this line */
+ #endif
+       }
+-      curbuf = savebuf;
++
++#ifdef FEAT_AUTOCMD
++      /* restore curwin/curbuf and a few other things */
++      aucmd_restbuf(&aco);
++      /* Careful: autocommands may have made "buf" invalid! */
++#else
++      curwin->w_buffer = save_curbuf;
++      curbuf = save_curbuf;
++#endif
+       update_curbuf(NOT_VALID);
+     }
+-    else {
++    else
++    {
+       rb_raise(rb_eIndexError, "index %d out of buffer", n);
+       return Qnil; /* For stop warning */
+     }
+@@ -676,12 +697,24 @@
+ 
+ static VALUE buffer_delete(VALUE self, VALUE num)
+ {
+-    buf_T *buf = get_buf(self);
+-    buf_T *savebuf = curbuf;
+-    long n = NUM2LONG(num);
++    buf_T     *buf = get_buf(self);
++    long      n = NUM2LONG(num);
++#ifdef FEAT_AUTOCMD
++    aco_save_T        aco;
++#else
++    buf_T     *save_curbuf = curbuf;
++#endif
+ 
+-    if (n > 0 && n <= buf->b_ml.ml_line_count) {
++    if (n > 0 && n <= buf->b_ml.ml_line_count)
++    {
++#ifdef FEAT_AUTOCMD
++      /* set curwin/curbuf for "buf" and save some things */
++      aucmd_prepbuf(&aco, buf);
++#else
+       curbuf = buf;
++      curwin->w_buffer = buf;
++#endif
++
+       if (u_savedel(n, 1) == OK) {
+           ml_delete(n, 0);
+ 
+@@ -691,10 +724,19 @@
+ 
+           changed();
+       }
+-      curbuf = savebuf;
++
++#ifdef FEAT_AUTOCMD
++      /* restore curwin/curbuf and a few other things */
++      aucmd_restbuf(&aco);
++      /* Careful: autocommands may have made "buf" invalid! */
++#else
++      curwin->w_buffer = save_curbuf;
++      curbuf = save_curbuf;
++#endif
+       update_curbuf(NOT_VALID);
+     }
+-    else {
++    else
++    {
+       rb_raise(rb_eIndexError, "index %d out of buffer", n);
+     }
+     return Qnil;
+@@ -702,13 +744,25 @@
+ 
+ static VALUE buffer_append(VALUE self, VALUE num, VALUE str)
+ {
+-    buf_T *buf = get_buf(self);
+-    buf_T *savebuf = curbuf;
+-    char *line = STR2CSTR(str);
+-    long n = NUM2LONG(num);
++    buf_T     *buf = get_buf(self);
++    char      *line = STR2CSTR(str);
++    long      n = NUM2LONG(num);
++#ifdef FEAT_AUTOCMD
++    aco_save_T        aco;
++#else
++    buf_T     *save_curbuf = curbuf;
++#endif
+ 
+-    if (n >= 0 && n <= buf->b_ml.ml_line_count && line != NULL) {
++    if (n >= 0 && n <= buf->b_ml.ml_line_count && line != NULL)
++    {
++#ifdef FEAT_AUTOCMD
++      /* set curwin/curbuf for "buf" and save some things */
++      aucmd_prepbuf(&aco, buf);
++#else
+       curbuf = buf;
++      curwin->w_buffer = buf;
++#endif
++
+       if (u_inssub(n + 1) == OK) {
+           ml_append(n, (char_u *) line, (colnr_T) 0, FALSE);
+ 
+@@ -718,7 +772,15 @@
+ 
+           changed();
+       }
+-      curbuf = savebuf;
++
++#ifdef FEAT_AUTOCMD
++      /* restore curwin/curbuf and a few other things */
++      aucmd_restbuf(&aco);
++      /* Careful: autocommands may have made "buf" invalid! */
++#else
++      curwin->w_buffer = save_curbuf;
++      curbuf = save_curbuf;
++#endif
+       update_curbuf(NOT_VALID);
+     }
+     else {
+diff -Naur vim70.orig/src/main.c vim70/src/main.c
+--- vim70.orig/src/main.c      2006-05-03 10:36:44.000000000 -0700
++++ vim70/src/main.c   2006-06-21 23:51:37.000000000 -0700
+@@ -564,7 +564,11 @@
+      */
+     if (p_lpl)
+     {
++# ifdef VMS   /* Somehow VMS doesn't handle the "**". */
++      source_runtime((char_u *)"plugin/*.vim", TRUE);
++# else
+       source_runtime((char_u *)"plugin/**/*.vim", TRUE);
++# endif
+       TIME_MSG("loading plugins");
+     }
+ #endif
+diff -Naur vim70.orig/src/Makefile vim70/src/Makefile
+--- vim70.orig/src/Makefile    2006-05-07 06:25:27.000000000 -0700
++++ vim70/src/Makefile 2006-06-21 23:50:50.000000000 -0700
+@@ -2177,6 +2177,7 @@
+       cd $(SHADOWDIR)/xxd; ln -s ../../xxd/*.[ch] ../../xxd/Make* .
+       if test -d $(RSRC_DIR); then \
+               cd $(SHADOWDIR); \
++              ln -s ../infplist.xml .; \
+               ln -s ../$(RSRC_DIR) ../os_mac.rsr.hqx ../dehqx.py .; \
+       fi
+       mkdir $(SHADOWDIR)/testdir
+diff -Naur vim70.orig/src/mbyte.c vim70/src/mbyte.c
+--- vim70.orig/src/mbyte.c     2006-04-30 04:51:01.000000000 -0700
++++ vim70/src/mbyte.c  2006-06-21 23:50:50.000000000 -0700
+@@ -311,7 +311,11 @@
+ 
+ #define IDX_MACROMAN  57
+     {"macroman",      ENC_8BIT + ENC_MACROMAN, 0},    /* Mac OS */
+-#define IDX_COUNT     58
++#define IDX_DECMCS    58
++    {"dec-mcs",               ENC_8BIT,               0},     /* DEC MCS */
++#define IDX_HPROMAN8  59
++    {"hp-roman8",     ENC_8BIT,               0},     /* HP Roman8 */
++#define IDX_COUNT     60
+ };
+ 
+ /*
+@@ -386,6 +390,7 @@
+     {"950",           IDX_BIG5},
+ #endif
+     {"mac",           IDX_MACROMAN},
++    {"mac-roman",     IDX_MACROMAN},
+     {NULL,            0}
+ };
+ 
+diff -Naur vim70.orig/src/message.c vim70/src/message.c
+--- vim70.orig/src/message.c   2006-05-06 13:07:37.000000000 -0700
++++ vim70/src/message.c        2006-06-21 23:50:50.000000000 -0700
+@@ -4175,15 +4175,16 @@
+                       str_arg_l = 0;
+                   else
+                   {
+-                      /* memchr on HP does not like n > 2^31  !!! */
+-                      char *q = memchr(str_arg, '\0',
++                      /* Don't put the #if inside memchr(), it can be a
++                       * macro. */
+ #if SIZEOF_INT <= 2
+-                              precision
++                      char *q = memchr(str_arg, '\0', precision);
+ #else
+-                              precision <= (size_t)0x7fffffffL ? precision
+-                                                     : (size_t)0x7fffffffL
++                      /* memchr on HP does not like n > 2^31  !!! */
++                      char *q = memchr(str_arg, '\0',
++                                precision <= (size_t)0x7fffffffL ? precision
++                                                     : (size_t)0x7fffffffL);
+ #endif
+-                                                     );
+                       str_arg_l = (q == NULL) ? precision : q - str_arg;
+                   }
+                   break;
+diff -Naur vim70.orig/src/ops.c vim70/src/ops.c
+--- vim70.orig/src/ops.c       2006-04-30 08:13:44.000000000 -0700
++++ vim70/src/ops.c    2006-06-21 23:52:03.000000000 -0700
+@@ -2413,6 +2413,7 @@
+       else
+       {
+           curwin->w_cursor = oap->end;
++          check_cursor_col();
+ 
+           /* Works just like an 'i'nsert on the next character. */
+           if (!lineempty(curwin->w_cursor.lnum)
+diff -Naur vim70.orig/src/option.c vim70/src/option.c
+--- vim70.orig/src/option.c    2006-05-03 10:32:28.000000000 -0700
++++ vim70/src/option.c 2006-06-21 23:50:50.000000000 -0700
+@@ -2294,7 +2294,7 @@
+                           {(char_u *)0L, (char_u *)0L}
+ #endif
+                           },
+-    {"spellsuggest", "sps", P_STRING|P_VI_DEF|P_EXPAND|P_SECURE,
++    {"spellsuggest", "sps", P_STRING|P_VI_DEF|P_EXPAND|P_SECURE|P_COMMA,
+ #ifdef FEAT_SPELL
+                           (char_u *)&p_sps, PV_NONE,
+                           {(char_u *)"best", (char_u *)0L}
+@@ -5227,13 +5227,13 @@
+           case PV_STL:        return &curwin->w_p_stl_flags;
+ #endif
+ #ifdef FEAT_EVAL
++# ifdef FEAT_FOLDING
+           case PV_FDE:        return &curwin->w_p_fde_flags;
+           case PV_FDT:        return &curwin->w_p_fdt_flags;
++# endif
+ # ifdef FEAT_BEVAL
+           case PV_BEXPR:      return &curbuf->b_p_bexpr_flags;
+ # endif
+-#endif
+-#if defined(FEAT_EVAL)
+ # if defined(FEAT_CINDENT)
+           case PV_INDE:       return &curbuf->b_p_inde_flags;
+ # endif
+diff -Naur vim70.orig/src/quickfix.c vim70/src/quickfix.c
+--- vim70.orig/src/quickfix.c  2006-05-03 00:47:42.000000000 -0700
++++ vim70/src/quickfix.c       2006-06-21 23:54:05.000000000 -0700
+@@ -602,13 +602,19 @@
+               else
+                   type = 0;
+               /*
+-               * Extract error message data from matched line
++               * Extract error message data from matched line.
++               * We check for an actual submatch, because "\[" and "\]" in
++               * the 'errorformat' may cause the wrong submatch to be used.
+                */
+               if ((i = (int)fmt_ptr->addr[0]) > 0)            /* %f */
+               {
+-                  int c = *regmatch.endp[i];
++                  int c;
++
++                  if (regmatch.startp[i] == NULL || regmatch.endp[i] == NULL)
++                      continue;
+ 
+                   /* Expand ~/file and $HOME/file to full path. */
++                  c = *regmatch.endp[i];
+                   *regmatch.endp[i] = NUL;
+                   expand_env(regmatch.startp[i], namebuf, CMDBUFFSIZE);
+                   *regmatch.endp[i] = c;
+@@ -618,35 +624,63 @@
+                       continue;
+               }
+               if ((i = (int)fmt_ptr->addr[1]) > 0)            /* %n */
++              {
++                  if (regmatch.startp[i] == NULL)
++                      continue;
+                   enr = (int)atol((char *)regmatch.startp[i]);
++              }
+               if ((i = (int)fmt_ptr->addr[2]) > 0)            /* %l */
++              {
++                  if (regmatch.startp[i] == NULL)
++                      continue;
+                   lnum = atol((char *)regmatch.startp[i]);
++              }
+               if ((i = (int)fmt_ptr->addr[3]) > 0)            /* %c */
++              {
++                  if (regmatch.startp[i] == NULL)
++                      continue;
+                   col = (int)atol((char *)regmatch.startp[i]);
++              }
+               if ((i = (int)fmt_ptr->addr[4]) > 0)            /* %t */
++              {
++                  if (regmatch.startp[i] == NULL)
++                      continue;
+                   type = *regmatch.startp[i];
++              }
+               if (fmt_ptr->flags == '+' && !multiscan)        /* %+ */
+                   STRCPY(errmsg, IObuff);
+               else if ((i = (int)fmt_ptr->addr[5]) > 0)       /* %m */
+               {
++                  if (regmatch.startp[i] == NULL || regmatch.endp[i] == NULL)
++                      continue;
+                   len = (int)(regmatch.endp[i] - regmatch.startp[i]);
+                   vim_strncpy(errmsg, regmatch.startp[i], len);
+               }
+               if ((i = (int)fmt_ptr->addr[6]) > 0)            /* %r */
++              {
++                  if (regmatch.startp[i] == NULL)
++                      continue;
+                   tail = regmatch.startp[i];
++              }
+               if ((i = (int)fmt_ptr->addr[7]) > 0)            /* %p */
+               {
++                  if (regmatch.startp[i] == NULL || regmatch.endp[i] == NULL)
++                      continue;
+                   col = (int)(regmatch.endp[i] - regmatch.startp[i] + 1);
+                   if (*((char_u *)regmatch.startp[i]) != TAB)
+                       use_viscol = TRUE;
+               }
+               if ((i = (int)fmt_ptr->addr[8]) > 0)            /* %v */
+               {
++                  if (regmatch.startp[i] == NULL)
++                      continue;
+                   col = (int)atol((char *)regmatch.startp[i]);
+                   use_viscol = TRUE;
+               }
+               if ((i = (int)fmt_ptr->addr[9]) > 0)            /* %s */
+               {
++                  if (regmatch.startp[i] == NULL || regmatch.endp[i] == NULL)
++                      continue;
+                   len = (int)(regmatch.endp[i] - regmatch.startp[i]);
+                   if (len > CMDBUFFSIZE - 5)
+                       len = CMDBUFFSIZE - 5;
+diff -Naur vim70.orig/src/spell.c vim70/src/spell.c
+--- vim70.orig/src/spell.c     2006-05-05 00:49:58.000000000 -0700
++++ vim70/src/spell.c  2006-06-21 23:50:50.000000000 -0700
+@@ -2108,7 +2108,8 @@
+        * possible. */
+       STRCPY(buf, line);
+       if (lnum < wp->w_buffer->b_ml.ml_line_count)
+-          spell_cat_line(buf + STRLEN(buf), ml_get(lnum + 1), MAXWLEN);
++          spell_cat_line(buf + STRLEN(buf),
++                        ml_get_buf(wp->w_buffer, lnum + 1, FALSE), MAXWLEN);
+ 
+       p = buf + skip;
+       endp = buf + len;
+diff -Naur vim70.orig/src/version.c vim70/src/version.c
+--- vim70.orig/src/version.c   2006-05-03 00:50:42.000000000 -0700
++++ vim70/src/version.c        2006-06-21 23:56:28.000000000 -0700
+@@ -667,6 +667,48 @@
+ static int included_patches[] =
+ {   /* Add new patch number below this line */
+ /**/
++    22,
++/**/
++    21,
++/**/
++    20,
++/**/
++    19,
++/**/
++    18,
++/**/
++    17,
++/**/
++    16,
++/**/
++    15,
++/**/
++    14,
++/**/
++    13,
++/**/
++    12,
++/**/
++    11,
++/**/
++    10,
++/**/
++    9,
++/**/
++    8,
++/**/
++    7,
++/**/
++    6,
++/**/
++    4,
++/**/
++    3,
++/**/
++    2,
++/**/
++    1,
++/**/
+     0
+ };
+ 
+ 

-- 
http://linuxfromscratch.org/mailman/listinfo/cross-lfs
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to