--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.1.292
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.1.292
+Problem: When using a pattern with "\@<=" the submatches can be wrong.
+ (Brett Stahlman)
+Solution: Save the submatches when attempting a look-behind match.
+Files: src/regexp.c
+
+
+*** ../vim-7.1.291/src/regexp.c Sat Jan 19 15:55:51 2008
+--- src/regexp.c Tue Apr 1 18:15:47 2008
+***************
+*** 3039,3044 ****
+--- 3039,3053 ----
+ } se_u;
+ } save_se_T;
+
++ /* used for BEHIND and NOBEHIND matching */
++ typedef struct regbehind_S
++ {
++ regsave_T save_after;
++ regsave_T save_behind;
++ save_se_T save_start[NSUBEXP];
++ save_se_T save_end[NSUBEXP];
++ } regbehind_T;
++
+ static char_u *reg_getline __ARGS((linenr_T lnum));
+ static long vim_regexec_both __ARGS((char_u *line, colnr_T col, proftime_T *tm));
+ static long regtry __ARGS((regprog_T *prog, colnr_T col));
+***************
+*** 3046,3051 ****
+--- 3055,3062 ----
+ #ifdef FEAT_SYN_HL
+ static void cleanup_zsubexpr __ARGS((void));
+ #endif
++ static void save_subexpr __ARGS((regbehind_T *bp));
++ static void restore_subexpr __ARGS((regbehind_T *bp));
+ static void reg_nextline __ARGS((void));
+ static void reg_save __ARGS((regsave_T *save, garray_T *gap));
+ static void reg_restore __ARGS((regsave_T *save, garray_T *gap));
+***************
+*** 3166,3184 ****
+ save_se_T sesave;
+ regsave_T regsave;
+ } rs_un; /* room for saving reginput */
+! short rs_no; /* submatch nr */
+ } regitem_T;
+
+ static regitem_T *regstack_push __ARGS((regstate_T state, char_u *scan));
+ static void regstack_pop __ARGS((char_u **scan));
+
+- /* used for BEHIND and NOBEHIND matching */
+- typedef struct regbehind_S
+- {
+- regsave_T save_after;
+- regsave_T save_behind;
+- } regbehind_T;
+-
+ /* used for STAR, PLUS and BRACE_SIMPLE matching */
+ typedef struct regstar_S
+ {
+--- 3177,3188 ----
+ save_se_T sesave;
+ regsave_T regsave;
+ } rs_un; /* room for saving reginput */
+! short rs_no; /* submatch nr or BEHIND/NOBEHIND */
+ } regitem_T;
+
+ static regitem_T *regstack_push __ARGS((regstate_T state, char_u *scan));
+ static void regstack_pop __ARGS((char_u **scan));
+
+ /* used for STAR, PLUS and BRACE_SIMPLE matching */
+ typedef struct regstar_S
+ {
+***************
+*** 4888,4893 ****
+--- 4892,4901 ----
+ status = RA_FAIL;
+ else
+ {
++ /* Need to save the subexpr to be able to restore them
++ * when there is a match but we don't use it. */
++ save_subexpr(((regbehind_T *)rp) - 1);
++
+ rp->rs_no = op;
+ reg_save(&rp->rs_un.regsave, &backpos);
+ /* First try if what follows matches. If it does then we
+***************
+*** 5118,5132 ****
+ reg_restore(&(((regbehind_T *)rp) - 1)->save_after,
+ &backpos);
+ else
+! /* But we didn't want a match. */
+ status = RA_NOMATCH;
+ regstack_pop(&scan);
+ regstack.ga_len -= sizeof(regbehind_T);
+ }
+ else
+ {
+! /* No match: Go back one character. May go to previous
+! * line once. */
+ no = OK;
+ if (REG_MULTI)
+ {
+--- 5126,5145 ----
+ reg_restore(&(((regbehind_T *)rp) - 1)->save_after,
+ &backpos);
+ else
+! {
+! /* But we didn't want a match. Need to restore the
+! * subexpr, because what follows matched, so they have
+! * been set. */
+ status = RA_NOMATCH;
++ restore_subexpr(((regbehind_T *)rp) - 1);
++ }
+ regstack_pop(&scan);
+ regstack.ga_len -= sizeof(regbehind_T);
+ }
+ else
+ {
+! /* No match or a match that doesn't end where we want it: Go
+! * back one character. May go to previous line once. */
+ no = OK;
+ if (REG_MULTI)
+ {
+***************
+*** 5160,5165 ****
+--- 5173,5185 ----
+ /* Advanced, prepare for finding match again. */
+ reg_restore(&rp->rs_un.regsave, &backpos);
+ scan = OPERAND(rp->rs_scan);
++ if (status == RA_MATCH)
++ {
++ /* We did match, so subexpr may have been changed,
++ * need to restore them for the next try. */
++ status = RA_NOMATCH;
++ restore_subexpr(((regbehind_T *)rp) - 1);
++ }
+ }
+ else
+ {
+***************
+*** 5172,5178 ****
+ status = RA_MATCH;
+ }
+ else
+! status = RA_NOMATCH;
+ regstack_pop(&scan);
+ regstack.ga_len -= sizeof(regbehind_T);
+ }
+--- 5192,5207 ----
+ status = RA_MATCH;
+ }
+ else
+! {
+! /* We do want a proper match. Need to restore the
+! * subexpr if we had a match, because they may have
+! * been set. */
+! if (status == RA_MATCH)
+! {
+! status = RA_NOMATCH;
+! restore_subexpr(((regbehind_T *)rp) - 1);
+! }
+! }
+ regstack_pop(&scan);
+ regstack.ga_len -= sizeof(regbehind_T);
+ }
+***************
+*** 5820,5825 ****
+--- 5849,5903 ----
+ #endif
+
+ /*
++ * Save the current subexpr to "bp", so that they can be restored
++ * later by restore_subexpr().
++ */
++ static void
++ save_subexpr(bp)
++ regbehind_T *bp;
++ {
++ int i;
++
++ for (i = 0; i < NSUBEXP; ++i)
++ {
++ if (REG_MULTI)
++ {
++ bp->save_start[i].se_u.pos = reg_startpos[i];
++ bp->save_end[i].se_u.pos = reg_endpos[i];
++ }
++ else
++ {
++ bp->save_start[i].se_u.ptr = reg_startp[i];
++ bp->save_end[i].se_u.ptr = reg_endp[i];
++ }
++ }
++ }
++
++ /*
++ * Restore the subexpr from "bp".
++ */
++ static void
++ restore_subexpr(bp)
++ regbehind_T *bp;
++ {
++ int i;
++
++ for (i = 0; i < NSUBEXP; ++i)
++ {
++ if (REG_MULTI)
++ {
++ reg_startpos[i] = bp->save_start[i].se_u.pos;
++ reg_endpos[i] = bp->save_end[i].se_u.pos;
++ }
++ else
++ {
++ reg_startp[i] = bp->save_start[i].se_u.ptr;
++ reg_endp[i] = bp->save_end[i].se_u.ptr;
++ }
++ }
++ }
++
++ /*
+ * Advance reglnum, regline and reginput to the next line.
+ */
+ static void
+*** ../vim-7.1.291/src/version.c Tue Apr 1 20:58:23 2008
+--- src/version.c Wed Apr 9 12:12:33 2008
+***************
+*** 668,669 ****
+--- 673,676 ----
+ { /* Add new patch number below this line */
++ /**/
++ 292,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+259. When you enter your name in the AltaVista search engine, the top ten
+ matches do indeed refer to you.
+
+ /// 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://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.1.293
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.1.293
+Problem: Spell checking considers super- and subscript characters as word
+ characters.
+Solution: Recognize the Unicode super and subscript characters.
+Files: src/spell.c
+
+
+*** ../vim-7.1.292/src/spell.c Tue Apr 1 17:13:54 2008
+--- src/spell.c Wed Apr 9 15:47:06 2008
+***************
+*** 753,758 ****
+--- 753,759 ----
+ static int spell_iswordp __ARGS((char_u *p, buf_T *buf));
+ static int spell_iswordp_nmw __ARGS((char_u *p));
+ #ifdef FEAT_MBYTE
++ static int spell_mb_isword_class __ARGS((int cl));
+ static int spell_iswordp_w __ARGS((int *p, buf_T *buf));
+ #endif
+ static int write_spell_prefcond __ARGS((FILE *fd, garray_T *gap));
+***************
+*** 9789,9795 ****
+
+ c = mb_ptr2char(s);
+ if (c > 255)
+! return mb_get_class(s) >= 2;
+ return spelltab.st_isw[c];
+ }
+ #endif
+--- 9790,9796 ----
+
+ c = mb_ptr2char(s);
+ if (c > 255)
+! return spell_mb_isword_class(mb_get_class(s));
+ return spelltab.st_isw[c];
+ }
+ #endif
+***************
+*** 9812,9818 ****
+ {
+ c = mb_ptr2char(p);
+ if (c > 255)
+! return mb_get_class(p) >= 2;
+ return spelltab.st_isw[c];
+ }
+ #endif
+--- 9813,9819 ----
+ {
+ c = mb_ptr2char(p);
+ if (c > 255)
+! return spell_mb_isword_class(mb_get_class(p));
+ return spelltab.st_isw[c];
+ }
+ #endif
+***************
+*** 9821,9826 ****
+--- 9822,9839 ----
+
+ #ifdef FEAT_MBYTE
+ /*
++ * Return TRUE if word class indicates a word character.
++ * Only for characters above 255.
++ * Unicode subscript and superscript are not considered word characters.
++ */
++ static int
++ spell_mb_isword_class(cl)
++ int cl;
++ {
++ return cl >= 2 && cl != 0x2070 && cl != 0x2080;
++ }
++
++ /*
+ * Return TRUE if "p" points to a word character.
+ * Wide version of spell_iswordp().
+ */
+***************
+*** 9841,9847 ****
+ if (*s > 255)
+ {
+ if (enc_utf8)
+! return utf_class(*s) >= 2;
+ if (enc_dbcs)
+ return dbcs_class((unsigned)*s >> 8, *s & 0xff) >= 2;
+ return 0;
+--- 9854,9860 ----
+ if (*s > 255)
+ {
+ if (enc_utf8)
+! return spell_mb_isword_class(utf_class(*s));
+ if (enc_dbcs)
+ return dbcs_class((unsigned)*s >> 8, *s & 0xff) >= 2;
+ return 0;
+*** ../vim-7.1.292/src/version.c Wed Apr 9 12:14:44 2008
+--- src/version.c Wed Apr 9 15:45:10 2008
+***************
+*** 668,669 ****
+--- 673,676 ----
+ { /* Add new patch number below this line */
++ /**/
++ 293,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+268. You get up in the morning and go online before getting your coffee.
+
+ /// 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://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.1.294
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.1.294
+Problem: Leaking memory when executing a shell command.
+Solution: Free memory when not able to save for undo. (Dominique Pelle)
+Files: src/ex_cmds.c
+
+*** ../vim-7.1.293/src/ex_cmds.c Mon Feb 18 19:41:40 2008
+--- src/ex_cmds.c Sun Apr 13 13:20:15 2008
+***************
+*** 1160,1165 ****
+--- 1166,1172 ----
+ if (!do_out)
+ msg_putchar('\n');
+
++ /* Create the shell command in allocated memory. */
+ cmd_buf = make_filter_cmd(cmd, itmp, otmp);
+ if (cmd_buf == NULL)
+ goto filterend;
+***************
+*** 1180,1186 ****
+--- 1187,1196 ----
+ if (do_out)
+ {
+ if (u_save((linenr_T)(line2), (linenr_T)(line2 + 1)) == FAIL)
++ {
++ vim_free(cmd_buf);
+ goto error;
++ }
+ redraw_curbuf_later(VALID);
+ }
+ read_linecount = curbuf->b_ml.ml_line_count;
+***************
+*** 4471,4477 ****
+ /*
+ * The new text is build up step by step, to avoid too much
+ * copying. There are these pieces:
+! * sub_firstline The old text, unmodifed.
+ * copycol Column in the old text where we started
+ * looking for a match; from here old text still
+ * needs to be copied to the new text.
+--- 4481,4487 ----
+ /*
+ * The new text is build up step by step, to avoid too much
+ * copying. There are these pieces:
+! * sub_firstline The old text, unmodified.
+ * copycol Column in the old text where we started
+ * looking for a match; from here old text still
+ * needs to be copied to the new text.
+*** ../vim-7.1.293/src/version.c Wed Apr 9 15:48:08 2008
+--- src/version.c Wed May 7 13:07:48 2008
+***************
+*** 668,669 ****
+--- 673,676 ----
+ { /* Add new patch number below this line */
++ /**/
++ 294,
+ /**/
+
+--
+It's not hard to meet expenses, they're everywhere.
+
+ /// 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://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.1.295
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.1.295
+Problem: Vimtutor only works with vim, not gvim.
+Solution: Add the -g flag to vimtutor. (Dominique Pelle) Add gvimtutor.
+Files: src/Makefile, src/gvimtutor, src/vimtutor, runtime/doc/vimtutor.1
+
+
+*** ../vim-7.1.294/src/Makefile Wed May 7 13:09:17 2008
+--- src/Makefile Wed May 7 17:34:31 2008
+***************
+*** 1867,1872 ****
+--- 1872,1879 ----
+ installtutorbin: $(DEST_VIM)
+ $(INSTALL_DATA) vimtutor $(DEST_BIN)/$(VIMNAME)tutor
+ chmod $(SCRIPTMOD) $(DEST_BIN)/$(VIMNAME)tutor
++ $(INSTALL_DATA) gvimtutor $(DEST_BIN)/$(GVIMNAME)tutor
++ chmod $(SCRIPTMOD) $(DEST_BIN)/$(GVIMNAME)tutor
+
+ installtutor: $(DEST_RT) $(DEST_TUTOR)
+ -$(INSTALL_DATA) $(TUTORSOURCE)/README* $(TUTORSOURCE)/tutor* $(DEST_TUTOR)
+***************
+*** 2075,2080 ****
+--- 2082,2088 ----
+ uninstall: uninstall_runtime
+ -rm -f $(DEST_BIN)/$(VIMTARGET)
+ -rm -f $(DEST_BIN)/vimtutor
++ -rm -f $(DEST_BIN)/gvimtutor
+ -rm -f $(DEST_BIN)/$(EXTARGET) $(DEST_BIN)/$(VIEWTARGET)
+ -rm -f $(DEST_BIN)/$(GVIMTARGET) $(DEST_BIN)/$(GVIEWTARGET)
+ -rm -f $(DEST_BIN)/$(RVIMTARGET) $(DEST_BIN)/$(RVIEWTARGET)
+***************
+*** 2171,2177 ****
+
+ shadow: runtime pixmaps
+ mkdir $(SHADOWDIR)
+! cd $(SHADOWDIR); ln -s ../*.[ch] ../*.in ../*.sh ../*.xs ../*.xbm ../toolcheck ../proto ../vimtutor ../mkinstalldirs .
+ mkdir $(SHADOWDIR)/auto
+ cd $(SHADOWDIR)/auto; ln -s ../../auto/configure .
+ cd $(SHADOWDIR); rm -f auto/link.sed
+--- 2179,2185 ----
+
+ shadow: runtime pixmaps
+ mkdir $(SHADOWDIR)
+! cd $(SHADOWDIR); ln -s ../*.[ch] ../*.in ../*.sh ../*.xs ../*.xbm ../toolcheck ../proto ../vimtutor ../gvimtutor ../mkinstalldirs .
+ mkdir $(SHADOWDIR)/auto
+ cd $(SHADOWDIR)/auto; ln -s ../../auto/configure .
+ cd $(SHADOWDIR); rm -f auto/link.sed
+*** ../vim-7.1.294/src/gvimtutor Wed May 7 17:38:10 2008
+--- src/gvimtutor Wed May 7 17:29:35 2008
+***************
+*** 0 ****
+--- 1,8 ----
++ #!/bin/sh
++
++ # Start GUI Vim on a copy of the tutor file.
++
++ # Usage: gvimtutor [xx]
++ # See vimtutor for usage.
++
++ exec `dirname $0`/vimtutor -g "$@"
+*** ../vim-7.1.294/src/vimtutor Tue Jul 17 14:32:07 2007
+--- src/vimtutor Sat Apr 5 12:21:11 2008
+***************
+*** 2,12 ****
+
+ # Start Vim on a copy of the tutor file.
+
+! # Usage: vimtutor [xx], where xx is a language code like "es" or "nl".
+ # When an argument is given, it tries loading that tutor.
+ # When this fails or no argument was given, it tries using 'v:lang'
+ # When that also fails, it uses the English version.
+
+ xx=$1
+ export xx
+
+--- 2,25 ----
+
+ # Start Vim on a copy of the tutor file.
+
+! # Usage: vimtutor [-g] [xx]
+! # Where optional argument -g starts vimtutor in gvim (GUI) instead of vim.
+! # and xx is a language code like "es" or "nl".
+ # When an argument is given, it tries loading that tutor.
+ # When this fails or no argument was given, it tries using 'v:lang'
+ # When that also fails, it uses the English version.
+
++ # Vim could be called "vim" or "vi". Also check for "vimN", for people who
++ # have Vim installed with its version number.
++ # We anticipate up to a future Vim 8 version :-).
++ seq="vim vim8 vim75 vim74 vim73 vim72 vim71 vim70 vim7 vim6 vi"
++ if test "$1" = "-g"; then
++ # Try to use the GUI version of Vim if possible, it will fall back
++ # on Vim if Gvim is not installed.
++ seq="gvim gvim8 gvim75 gvim74 gvim73 gvim72 gvim71 gvim70 gvim7 gvim6 $seq"
++ shift
++ fi
++
+ xx=$1
+ export xx
+
+***************
+*** 39,48 ****
+ # remove the copy of the tutor on exit
+ trap "rm -rf $TODELETE" 0 1 2 3 9 11 13 15
+
+- # Vim could be called "vim" or "vi". Also check for "vimN", for people who
+- # have Vim installed with its version number.
+- # We anticipate up to a future Vim 8 version :-).
+- seq="vim vim8 vim75 vim74 vim73 vim72 vim71 vim70 vim7 vim6 vi"
+ for i in $seq; do
+ testvim=`which $i 2>/dev/null`
+ if test -f "$testvim"; then
+--- 52,57 ----
+***************
+*** 59,65 ****
+
+ # Use Vim to copy the tutor, it knows the value of $VIMRUNTIME
+ # The script tutor.vim tells Vim which file to copy
+! $VIM -u NONE -c 'so $VIMRUNTIME/tutor/tutor.vim'
+
+ # Start vim without any .vimrc, set 'nocompatible'
+! $VIM -u NONE -c "set nocp" $TUTORCOPY
+--- 68,74 ----
+
+ # Use Vim to copy the tutor, it knows the value of $VIMRUNTIME
+ # The script tutor.vim tells Vim which file to copy
+! $VIM -f -u NONE -c 'so $VIMRUNTIME/tutor/tutor.vim'
+
+ # Start vim without any .vimrc, set 'nocompatible'
+! $VIM -f -u NONE -c "set nocp" $TUTORCOPY
+*** ../vim-7.1.294/runtime/doc/vimtutor.1 Sun Jun 13 18:50:18 2004
+--- runtime/doc/vimtutor.1 Sat Apr 5 12:21:11 2008
+***************
+*** 3,9 ****
+ vimtutor \- the Vim tutor
+ .SH SYNOPSIS
+ .br
+! .B vimtutor [language]
+ .SH DESCRIPTION
+ .B Vimtutor
+ starts the
+--- 3,9 ----
+ vimtutor \- the Vim tutor
+ .SH SYNOPSIS
+ .br
+! .B vimtutor [-g] [language]
+ .SH DESCRIPTION
+ .B Vimtutor
+ starts the
+***************
+*** 18,23 ****
+--- 18,26 ----
+ .B Vim
+ commands.
+ .PP
++ The optional argument -g starts vimtutor with gvim rather than vim, if the
++ GUI version of vim is available, or falls back to Vim if gvim is not found.
++ .PP
+ The optional [language] argument is the two-letter name of a language, like
+ "it" or "es".
+ If the [language] argument is missing, the language of the current locale will
+*** ../vim-7.1.294/src/version.c Wed May 7 13:09:12 2008
+--- src/version.c Wed May 7 17:12:43 2008
+***************
+*** 668,669 ****
+--- 673,676 ----
+ { /* Add new patch number below this line */
++ /**/
++ 295,
+ /**/
+
+--
+Time flies like an arrow.
+Fruit flies like a banana.
+
+ /// 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://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.1.296
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.1.296
+Problem: SELinux is not supported.
+Solution: Detect the selinux library and use mch_copy_sec(). (James Vega)
+Files: src/auto/configure, src/config.h.in, src/configure.in,
+ src/fileio.c, src/memfile.c, src/os_unix.c, src/proto/os_unix.pro
+
+
+*** ../vim-7.1.295/src/auto/configure Wed Feb 20 12:43:05 2008
+--- src/auto/configure Wed May 7 18:16:09 2008
+***************
+*** 845,850 ****
+--- 845,851 ----
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --disable-darwin Disable Darwin (Mac OS X) support.
++ --disable-selinux Don't check for SELinux support.
+ --disable-xsmp Disable XSMP session management
+ --disable-xsmp-interact Disable XSMP interaction
+ --enable-mzschemeinterp Include MzScheme interpreter.
+***************
+*** 3611,3616 ****
+--- 3612,3705 ----
+ esac
+ fi
+
++ echo "$as_me:$LINENO: checking --disable-selinux argument" >&5
++ echo $ECHO_N "checking --disable-selinux argument... $ECHO_C" >&6
++ # Check whether --enable-selinux or --disable-selinux was given.
++ if test "${enable_selinux+set}" = set; then
++ enableval="$enable_selinux"
++
++ else
++ enable_selinux="yes"
++ fi;
++ if test "$enable_selinux" = "yes"; then
++ echo "$as_me:$LINENO: result: no" >&5
++ echo "${ECHO_T}no" >&6
++ echo "$as_me:$LINENO: checking for is_selinux_enabled in -lselinux" >&5
++ echo $ECHO_N "checking for is_selinux_enabled in -lselinux... $ECHO_C" >&6
++ if test "${ac_cv_lib_selinux_is_selinux_enabled+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++ else
++ ac_check_lib_save_LIBS=$LIBS
++ LIBS="-lselinux $LIBS"
++ cat >conftest.$ac_ext <<_ACEOF
++ /* confdefs.h. */
++ _ACEOF
++ cat confdefs.h >>conftest.$ac_ext
++ cat >>conftest.$ac_ext <<_ACEOF
++ /* end confdefs.h. */
++
++ /* Override any gcc2 internal prototype to avoid an error. */
++ #ifdef __cplusplus
++ extern "C"
++ #endif
++ /* We use char because int might match the return type of a gcc2
++ builtin and then its argument prototype would still apply. */
++ char is_selinux_enabled ();
++ int
++ main ()
++ {
++ is_selinux_enabled ();
++ ;
++ return 0;
++ }
++ _ACEOF
++ rm -f conftest.$ac_objext conftest$ac_exeext
++ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; } &&
++ { ac_try='test -s conftest$ac_exeext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ ac_cv_lib_selinux_is_selinux_enabled=yes
++ else
++ echo "$as_me: failed program was:" >&5
++ sed 's/^/| /' conftest.$ac_ext >&5
++
++ ac_cv_lib_selinux_is_selinux_enabled=no
++ fi
++ rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++ LIBS=$ac_check_lib_save_LIBS
++ fi
++ echo "$as_me:$LINENO: result: $ac_cv_lib_selinux_is_selinux_enabled" >&5
++ echo "${ECHO_T}$ac_cv_lib_selinux_is_selinux_enabled" >&6
++ if test $ac_cv_lib_selinux_is_selinux_enabled = yes; then
++ LIBS="$LIBS -lselinux"
++ cat >>confdefs.h <<\_ACEOF
++ #define HAVE_SELINUX 1
++ _ACEOF
++
++ fi
++
++ else
++ echo "$as_me:$LINENO: result: yes" >&5
++ echo "${ECHO_T}yes" >&6
++ fi
+
+
+ echo "$as_me:$LINENO: checking --with-features argument" >&5
+*** ../vim-7.1.295/src/config.h.in Tue May 1 13:37:23 2007
+--- src/config.h.in Wed May 7 18:10:49 2008
+***************
+*** 156,161 ****
+--- 156,162 ----
+ #undef HAVE_READLINK
+ #undef HAVE_RENAME
+ #undef HAVE_SELECT
++ #undef HAVE_SELINUX
+ #undef HAVE_SETENV
+ #undef HAVE_SETPGID
+ #undef HAVE_SETSID
+*** ../vim-7.1.295/src/configure.in Wed Feb 20 12:43:05 2008
+--- src/configure.in Wed May 7 18:15:40 2008
+***************
+*** 299,304 ****
+--- 299,317 ----
+ esac
+ fi
+
++ dnl Link with -lselinux for SELinux stuff; if not found
++ AC_MSG_CHECKING(--disable-selinux argument)
++ AC_ARG_ENABLE(selinux,
++ [ --disable-selinux Don't check for SELinux support.],
++ , enable_selinux="yes")
++ if test "$enable_selinux" = "yes"; then
++ AC_MSG_RESULT(no)
++ AC_CHECK_LIB(selinux, is_selinux_enabled,
++ [LIBS="$LIBS -lselinux"
++ AC_DEFINE(HAVE_SELINUX)])
++ else
++ AC_MSG_RESULT(yes)
++ fi
+
+ dnl Check user requested features.
+
+*** ../vim-7.1.295/src/fileio.c Tue Mar 11 22:01:16 2008
+--- src/fileio.c Wed May 7 18:17:45 2008
+***************
+*** 3651,3656 ****
+--- 3660,3668 ----
+ )
+ mch_setperm(backup,
+ (perm & 0707) | ((perm & 07) << 3));
++ # ifdef HAVE_SELINUX
++ mch_copy_sec(fname, backup);
++ # endif
+ #endif
+
+ /*
+***************
+*** 3687,3692 ****
+--- 3699,3707 ----
+ #ifdef HAVE_ACL
+ mch_set_acl(backup, acl);
+ #endif
++ #ifdef HAVE_SELINUX
++ mch_copy_sec(fname, backup);
++ #endif
+ break;
+ }
+ }
+***************
+*** 4309,4314 ****
+--- 4324,4335 ----
+ }
+ #endif
+
++ #ifdef HAVE_SELINUX
++ /* Probably need to set the security context. */
++ if (!backup_copy)
++ mch_copy_sec(backup, wfname);
++ #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. */
+*** ../vim-7.1.295/src/memfile.c Fri May 11 20:15:45 2007
+--- src/memfile.c Wed May 7 18:10:49 2008
+***************
+*** 1346,1350 ****
+--- 1346,1355 ----
+ mfp->mf_ffname = NULL;
+ }
+ else
++ {
++ #ifdef HAVE_SELINUX
++ mch_copy_sec(fname, mfp->mf_fname);
++ #endif
+ mch_hide(mfp->mf_fname); /* try setting the 'hidden' flag */
++ }
+ }
+*** ../vim-7.1.295/src/os_unix.c Wed Mar 12 13:16:37 2008
+--- src/os_unix.c Wed May 7 18:24:46 2008
+***************
+*** 45,50 ****
+--- 45,55 ----
+ # include <X11/SM/SMlib.h>
+ #endif
+
++ #ifdef HAVE_SELINUX
++ # include <selinux/selinux.h>
++ static int selinux_enabled = -1;
++ #endif
++
+ /*
+ * Use this prototype for select, some include files have a wrong prototype
+ */
+***************
+*** 2557,2562 ****
+--- 2562,2623 ----
+ } vim_acl_solaris_T;
+ # endif
+
++ #if defined(HAVE_SELINUX) || defined(PROTO)
++ /*
++ * Copy security info from "from_file" to "to_file".
++ */
++ void
++ mch_copy_sec(from_file, to_file)
++ char_u *from_file;
++ char_u *to_file;
++ {
++ if (from_file == NULL)
++ return;
++
++ if (selinux_enabled == -1)
++ selinux_enabled = is_selinux_enabled();
++
++ if (selinux_enabled > 0)
++ {
++ security_context_t from_context = NULL;
++ security_context_t to_context = NULL;
++
++ if (getfilecon((char *)from_file, &from_context) < 0)
++ {
++ /* If the filesystem doesn't support extended attributes,
++ the original had no special security context and the
++ target cannot have one either. */
++ if (errno == EOPNOTSUPP)
++ return;
++
++ MSG_PUTS(_("\nCould not get security context for "));
++ msg_outtrans(from_file);
++ msg_putchar('\n');
++ return;
++ }
++ if (getfilecon((char *)to_file, &to_context) < 0)
++ {
++ MSG_PUTS(_("\nCould not get security context for "));
++ msg_outtrans(to_file);
++ msg_putchar('\n');
++ freecon (from_context);
++ return ;
++ }
++ if (strcmp(from_context, to_context) != 0)
++ {
++ if (setfilecon((char *)to_file, from_context) < 0)
++ {
++ MSG_PUTS(_("\nCould not set security context for "));
++ msg_outtrans(to_file);
++ msg_putchar('\n');
++ }
++ }
++ freecon(to_context);
++ freecon(from_context);
++ }
++ }
++ #endif /* HAVE_SELINUX */
++
+ /*
+ * Return a pointer to the ACL of file "fname" in allocated memory.
+ * Return NULL if the ACL is not available for whatever reason.
+*** ../vim-7.1.295/src/proto/os_unix.pro Sat May 5 20:23:37 2007
+--- src/proto/os_unix.pro Wed May 7 18:25:14 2008
+***************
+*** 34,39 ****
+--- 34,40 ----
+ void fname_case __ARGS((char_u *name, int len));
+ long mch_getperm __ARGS((char_u *name));
+ int mch_setperm __ARGS((char_u *name, long perm));
++ void mch_copy_sec __ARGS((char_u *from_file, char_u *to_file));
+ vim_acl_T mch_get_acl __ARGS((char_u *fname));
+ void mch_set_acl __ARGS((char_u *fname, vim_acl_T aclent));
+ void mch_free_acl __ARGS((vim_acl_T aclent));
+*** ../vim-7.1.295/src/version.c Wed May 7 17:39:17 2008
+--- src/version.c Wed May 7 18:50:01 2008
+***************
+*** 668,669 ****
+--- 673,676 ----
+ { /* Add new patch number below this line */
++ /**/
++ 296,
+ /**/
+
+--
+Michael: There is no such thing as a dump question.
+Bernard: Sure there is. For example "what is a core dump?"
+
+ /// 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://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.1.297
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.1.297
+Problem: When using the search/replace dialog the parenmatch highlighting
+ can be wrong. (Tim Duncan)
+Solution: In the GUI redraw function invoke the CursorMoved autocmd.
+Files: src/gui.c
+
+
+*** ../vim-7.1.296/src/gui.c Wed Feb 6 17:33:19 2008
+--- src/gui.c Wed May 7 21:36:58 2008
+***************
+*** 4855,4860 ****
+--- 4855,4869 ----
+ {
+ update_topline();
+ validate_cursor();
++ #ifdef FEAT_AUTOCMD
++ /* Trigger CursorMoved if the cursor moved. */
++ if (!finish_op && has_cursormoved()
++ && !equalpos(last_cursormoved, curwin->w_cursor))
++ {
++ apply_autocmds(EVENT_CURSORMOVED, NULL, NULL, FALSE, curbuf);
++ last_cursormoved = curwin->w_cursor;
++ }
++ #endif
+ update_screen(0); /* may need to update the screen */
+ setcursor();
+ out_flush(); /* make sure output has been written */
+*** ../vim-7.1.296/src/version.c Wed May 7 19:05:55 2008
+--- src/version.c Wed May 7 21:44:28 2008
+***************
+*** 668,669 ****
+--- 673,676 ----
+ { /* Add new patch number below this line */
++ /**/
++ 297,
+ /**/
+
+--
+ARTHUR: Did you say shrubberies?
+ROGER: Yes. Shrubberies are my trade. I am a shrubber. My name is Roger
+ the Shrubber. I arrange, design, and sell shrubberies.
+ "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://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.1.298
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.1.298 (after 7.1.295)
+Problem: src/gvimtutor is not distributed.
+Solution: Add it to the list of distributed files.
+Files: Filelist
+
+
+*** ../vim-7.1.297/Filelist Thu May 10 20:35:01 2007
+--- Filelist Sat May 10 21:35:50 2008
+***************
+*** 193,198 ****
+--- 193,199 ----
+ src/vim_icon.xbm \
+ src/vim_mask.xbm \
+ src/vimtutor \
++ src/gvimtutor \
+ src/which.sh \
+ src/workshop.c \
+ src/workshop.h \
+*** ../vim-7.1.297/src/version.c Wed May 7 21:45:35 2008
+--- src/version.c Sat May 10 21:37:01 2008
+***************
+*** 668,669 ****
+--- 673,676 ----
+ { /* Add new patch number below this line */
++ /**/
++ 298,
+ /**/
+
+--
+ARTHUR: Charge!
+ [They all charge with swords drawn towards the RABBIT. A tremendous twenty
+ second fight with Peckinpahish shots and borrowing heavily also on the
+ Kung Fu and karate-type films ensues, in which some four KNIGHTS are
+ comprehensively killed.]
+ARTHUR: Run away! Run away!
+ "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://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.1.299
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.1.299
+Problem: Filetype detection doesn't work properly for file names ending in
+ a part that is ignored and contain a space or other special
+ characters.
+Solution: Escape the special characters using the new fnameescape function.
+Files: runtime/doc/eval.txt, runtime/filetype.vim, src/eval.c,
+ src/ex_getln.c, src/proto/ex_getln.pro, src/vim.h
+
+
+*** ../vim-7.1.298/runtime/doc/eval.txt Wed Feb 20 20:09:44 2008
+--- runtime/doc/eval.txt Wed May 28 16:42:42 2008
+***************
+*** 1,4 ****
+! *eval.txt* For Vim version 7.1. Last change: 2008 Feb 20
+
+
+ VIM REFERENCE MANUAL by Bram Moolenaar
+--- 1,4 ----
+! *eval.txt* For Vim version 7.1. Last change: 2008 May 28
+
+
+ VIM REFERENCE MANUAL by Bram Moolenaar
+***************
+*** 1609,1614 ****
+--- 1652,1658 ----
+ String find directory {name} in {path}
+ findfile( {name}[, {path}[, {count}]])
+ String find file {name} in {path}
++ fnameescape( {fname}) String escape special characters in {fname}
+ fnamemodify( {fname}, {mods}) String modify file name
+ foldclosed( {lnum}) Number first line of fold at {lnum} if closed
+ foldclosedend( {lnum}) Number last line of fold at {lnum} if closed
+***************
+*** 2620,2625 ****
+--- 2669,2687 ----
+ < Searches from the directory of the current file upwards until
+ it finds the file "tags.vim".
+
++ fnameescape({string}) *fnameescape()*
++ Escape {string} for use as file name command argument. All
++ characters that have a special meaning, such as '%' and '|'
++ are escaped with a backslash.
++ For most systems the characters escaped are "". For systems
++ where a backslash appears in a filename, it depends on the
++ value of 'isfname'.
++ Example: >
++ :let fname = 'some str%nge|name'
++ :exe "edit " . fnameescape(fname)
++ < results in executing: >
++ edit some\ str\%nge\|name
++
+ fnamemodify({fname}, {mods}) *fnamemodify()*
+ Modify file name {fname} according to {mods}. {mods} is a
+ string of characters like it is used for file names on the
+*** ../vim-7.1.298/runtime/filetype.vim Tue May 15 09:14:33 2007
+--- runtime/filetype.vim Wed May 28 16:39:09 2008
+***************
+*** 16,35 ****
+ augroup filetypedetect
+
+ " Ignored extensions
+ au BufNewFile,BufRead ?\+.orig,?\+.bak,?\+.old,?\+.new,?\+.rpmsave,?\+.rpmnew
+! \ exe "doau filetypedetect BufRead " . expand("<afile>:r")
+ au BufNewFile,BufRead *~
+ \ let s:name = expand("<afile>") |
+ \ let s:short = substitute(s:name, '\~$', '', '') |
+ \ if s:name != s:short && s:short != "" |
+! \ exe "doau filetypedetect BufRead " . s:short |
+ \ endif |
+! \ unlet s:name |
+! \ unlet s:short
+ au BufNewFile,BufRead ?\+.in
+ \ if expand("<afile>:t") != "configure.in" |
+! \ exe "doau filetypedetect BufRead " . expand("<afile>:r") |
+ \ endif
+
+ " Pattern used to match file names which should not be inspected.
+ " Currently finds compressed files.
+--- 16,38 ----
+ augroup filetypedetect
+
+ " Ignored extensions
++ if exists("*fnameescape")
+ au BufNewFile,BufRead ?\+.orig,?\+.bak,?\+.old,?\+.new,?\+.rpmsave,?\+.rpmnew
+! \ exe "doau filetypedetect BufRead " . fnameescape(expand("<afile>:r"))
+ au BufNewFile,BufRead *~
+ \ let s:name = expand("<afile>") |
+ \ let s:short = substitute(s:name, '\~$', '', '') |
+ \ if s:name != s:short && s:short != "" |
+! \ exe "doau filetypedetect BufRead " . fnameescape(s:short) |
+ \ endif |
+! \ unlet s:name s:short
+ au BufNewFile,BufRead ?\+.in
+ \ if expand("<afile>:t") != "configure.in" |
+! \ exe "doau filetypedetect BufRead " . fnameescape(expand("<afile>:r")) |
+ \ endif
++ elseif &verbose > 0
++ echomsg "Warning: some filetypes will not be recognized because this version of Vim does not have fnameescape()"
++ endif
+
+ " Pattern used to match file names which should not be inspected.
+ " Currently finds compressed files.
+*** ../vim-7.1.298/src/eval.c Tue Apr 1 13:10:45 2008
+--- src/eval.c Wed May 28 16:35:51 2008
+***************
+*** 507,512 ****
+--- 516,522 ----
+ static void f_filter __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_finddir __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_findfile __ARGS((typval_T *argvars, typval_T *rettv));
++ static void f_fnameescape __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_fnamemodify __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_foldclosed __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_foldclosedend __ARGS((typval_T *argvars, typval_T *rettv));
+***************
+*** 7107,7112 ****
+--- 7437,7443 ----
+ {"filter", 2, 2, f_filter},
+ {"finddir", 1, 3, f_finddir},
+ {"findfile", 1, 3, f_findfile},
++ {"fnameescape", 1, 1, f_fnameescape},
+ {"fnamemodify", 2, 2, f_fnamemodify},
+ {"foldclosed", 1, 1, f_foldclosed},
+ {"foldclosedend", 1, 1, f_foldclosedend},
+***************
+*** 9465,9470 ****
+--- 9804,9822 ----
+ }
+
+ /*
++ * "fnameescape({string})" function
++ */
++ static void
++ f_fnameescape(argvars, rettv)
++ typval_T *argvars;
++ typval_T *rettv;
++ {
++ rettv->vval.v_string = vim_strsave_fnameescape(
++ get_tv_string(&argvars[0]), FALSE);
++ rettv->v_type = VAR_STRING;
++ }
++
++ /*
+ * "fnamemodify({fname}, {mods})" function
+ */
+ static void
+*** ../vim-7.1.298/src/ex_getln.c Tue Jan 22 12:44:03 2008
+--- src/ex_getln.c Mon May 26 22:14:51 2008
+***************
+*** 3656,3677 ****
+ #endif
+ }
+ }
+! #ifdef BACKSLASH_IN_FILENAME
+! {
+! char_u buf[20];
+! int j = 0;
+!
+! /* Don't escape '[' and '{' if they are in 'isfname'. */
+! for (p = PATH_ESC_CHARS; *p != NUL; ++p)
+! if ((*p != '[' && *p != '{') || !vim_isfilec(*p))
+! buf[j++] = *p;
+! buf[j] = NUL;
+! p = vim_strsave_escaped(files[i], buf);
+! }
+! #else
+! p = vim_strsave_escaped(files[i],
+! xp->xp_shell ? SHELL_ESC_CHARS : PATH_ESC_CHARS);
+! #endif
+ if (p != NULL)
+ {
+ vim_free(files[i]);
+--- 3656,3662 ----
+ #endif
+ }
+ }
+! p = vim_strsave_fnameescape(files[i], xp->xp_shell);
+ if (p != NULL)
+ {
+ vim_free(files[i]);
+***************
+*** 3710,3715 ****
+--- 3695,3725 ----
+ }
+
+ /*
++ * Escape special characters in "fname" for when used as a file name argument
++ * after a Vim command, or, when "shell" is non-zero, a shell command.
++ * Returns the result in allocated memory.
++ */
++ char_u *
++ vim_strsave_fnameescape(fname, shell)
++ char_u *fname;
++ int shell;
++ {
++ #ifdef BACKSLASH_IN_FILENAME
++ char_u buf[20];
++ int j = 0;
++
++ /* Don't escape '[' and '{' if they are in 'isfname'. */
++ for (p = PATH_ESC_CHARS; *p != NUL; ++p)
++ if ((*p != '[' && *p != '{') || !vim_isfilec(*p))
++ buf[j++] = *p;
++ buf[j] = NUL;
++ return vim_strsave_escaped(fname, buf);
++ #else
++ return vim_strsave_escaped(fname, shell ? SHELL_ESC_CHARS : PATH_ESC_CHARS);
++ #endif
++ }
++
++ /*
+ * Put a backslash before the file name in "pp", which is in allocated memory.
+ */
+ static void
+*** ../vim-7.1.298/src/proto/ex_getln.pro Sat May 5 19:24:48 2007
+--- src/proto/ex_getln.pro Mon May 26 22:14:41 2008
+***************
+*** 24,29 ****
+--- 24,30 ----
+ void ExpandInit __ARGS((expand_T *xp));
+ void ExpandCleanup __ARGS((expand_T *xp));
+ void ExpandEscape __ARGS((expand_T *xp, char_u *str, int numfiles, char_u **files, int options));
++ char_u *vim_strsave_fnameescape __ARGS((char_u *fname, int shell));
+ void tilde_replace __ARGS((char_u *orig_pat, int num_files, char_u **files));
+ char_u *sm_gettail __ARGS((char_u *s));
+ char_u *addstar __ARGS((char_u *fname, int len, int context));
+*** ../vim-7.1.298/src/vim.h Sun Mar 16 16:02:47 2008
+--- src/vim.h Wed May 28 16:37:50 2008
+***************
+*** 336,345 ****
+ # endif
+ #endif
+ #ifdef BACKSLASH_IN_FILENAME
+! # define PATH_ESC_CHARS ((char_u *)" \t*?[{`%#")
+ #else
+! # define PATH_ESC_CHARS ((char_u *)" \t*?[{`$\\%#'\"|")
+! # define SHELL_ESC_CHARS ((char_u *)" \t*?[{`$\\%#'\"|<>();&!")
+ #endif
+
+ #define NUMBUFLEN 30 /* length of a buffer to store a number in ASCII */
+--- 336,345 ----
+ # endif
+ #endif
+ #ifdef BACKSLASH_IN_FILENAME
+! # define PATH_ESC_CHARS ((char_u *)" \t\n*?[{`%#'\"|!<")
+ #else
+! # define PATH_ESC_CHARS ((char_u *)" \t\n*?[{`$\\%#'\"|!<")
+! # define SHELL_ESC_CHARS ((char_u *)" \t\n*?[{`$\\%#'\"|!<>();&")
+ #endif
+
+ #define NUMBUFLEN 30 /* length of a buffer to store a number in ASCII */
+*** ../vim-7.1.298/src/version.c Sat May 10 21:37:56 2008
+--- src/version.c Wed May 28 16:40:11 2008
+***************
+*** 668,669 ****
+--- 673,676 ----
+ { /* Add new patch number below this line */
++ /**/
++ 299,
+ /**/
+
+--
+FIRST SOLDIER: So they wouldn't be able to bring a coconut back anyway.
+SECOND SOLDIER: Wait a minute! Suppose two swallows carried it together?
+FIRST SOLDIER: No, they'd have to have it on a line.
+ "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://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.1.300
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.1.300
+Problem: Value of asmsyntax argument isn't checked for valid characters.
+Solution: Only accepts letters and digits.
+Files: runtime/filetype.vim
+
+
+*** ../vim-7.1.299/runtime/filetype.vim Wed May 28 16:48:00 2008
+--- runtime/filetype.vim Wed May 28 17:11:37 2008
+***************
+*** 190,196 ****
+ let head = " ".getline(1)." ".getline(2)." ".getline(3)." ".getline(4).
+ \" ".getline(5)." "
+ if head =~ '\sasmsyntax=\S\+\s'
+! let b:asmsyntax = substitute(head, '.*\sasmsyntax=\(\S\+\)\s.*','\1', "")
+ elseif ((head =~? '\.title') || (head =~? '\.ident') || (head =~? '\.macro') || (head =~? '\.subtitle') || (head =~? '\.library'))
+ let b:asmsyntax = "vmasm"
+ endif
+--- 190,196 ----
+ let head = " ".getline(1)." ".getline(2)." ".getline(3)." ".getline(4).
+ \" ".getline(5)." "
+ if head =~ '\sasmsyntax=\S\+\s'
+! let b:asmsyntax = substitute(head, '.*\sasmsyntax=\([a-zA-Z0-9]\+\)\s.*','\1', "")
+ elseif ((head =~? '\.title') || (head =~? '\.ident') || (head =~? '\.macro') || (head =~? '\.subtitle') || (head =~? '\.library'))
+ let b:asmsyntax = "vmasm"
+ endif
+*** ../vim-7.1.299/src/version.c Wed May 28 16:48:01 2008
+--- src/version.c Wed May 28 17:28:05 2008
+***************
+*** 668,669 ****
+--- 673,676 ----
+ { /* Add new patch number below this line */
++ /**/
++ 300,
+ /**/
+
+--
+If you don't get everything you want, think of
+everything you didn't get and don't want.
+
+ /// 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://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.1.301
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.1.301
+Problem: When the "File/Save" menu is used in Insert mode, a tab page label
+ is not updated to remove the "+".
+Solution: Call draw_tabline() from showruler(). (Bjorn Winckler)
+Files: src/screen.c
+
+
+*** ../vim-7.1.300/src/screen.c Sun Mar 9 14:30:12 2008
+--- src/screen.c Sat Apr 5 19:26:24 2008
+***************
+*** 9357,9362 ****
+--- 9357,9367 ----
+ )
+ maketitle();
+ #endif
++ #ifdef FEAT_WINDOWS
++ /* Redraw the tab pages line if needed. */
++ if (redraw_tabline)
++ draw_tabline();
++ #endif
+ }
+
+ #ifdef FEAT_CMDL_INFO
+*** ../vim-7.1.300/src/version.c Wed May 28 17:31:37 2008
+--- src/version.c Wed May 28 19:01:16 2008
+***************
+*** 668,669 ****
+--- 673,676 ----
+ { /* Add new patch number below this line */
++ /**/
++ 301,
+ /**/
+
+--
+CART DRIVER: Bring out your dead!
+ There are legs stick out of windows and doors. Two MEN are fighting in the
+ mud - covered from head to foot in it. Another MAN is on his hands in
+ knees shovelling mud into his mouth. We just catch sight of a MAN falling
+ into a well.
+ "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://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.1.302
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.1.302 (after 7.1.299)
+Problem: Compilation error on MS-Windows.
+Solution: Don't use xp_shell when it's not defined.
+Files: src/ex_getln.c
+
+
+*** ../vim-7.1.301/src/ex_getln.c Wed May 28 22:01:46 2008
+--- src/ex_getln.c Wed May 28 22:01:48 2008
+***************
+*** 3656,3662 ****
+--- 3656,3666 ----
+ #endif
+ }
+ }
++ #ifdef BACKSLASH_IN_FILENAME
++ p = vim_strsave_fnameescape(files[i], FALSE);
++ #else
+ p = vim_strsave_fnameescape(files[i], xp->xp_shell);
++ #endif
+ if (p != NULL)
+ {
+ vim_free(files[i]);
+*** ../vim-7.1.301/src/version.c Wed May 28 19:01:53 2008
+--- src/version.c Wed May 28 22:01:07 2008
+***************
+*** 668,669 ****
+--- 673,676 ----
+ { /* Add new patch number below this line */
++ /**/
++ 302,
+ /**/
+
+--
+BODY: I'm not dead!
+CART DRIVER: 'Ere. He says he's not dead.
+LARGE MAN: Yes he is.
+BODY: I'm not!
+ "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://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.1.303
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.1.303 (after 7.1.302)
+Problem: Compilation error on MS-Windows, again.
+Solution: Declare p.
+Files: src/ex_getln.c
+
+
+*** ../vim-7.1.302/src/ex_getln.c Wed May 28 22:02:07 2008
+--- src/ex_getln.c Thu May 29 15:31:45 2008
+***************
+*** 3711,3716 ****
+--- 3711,3717 ----
+ #ifdef BACKSLASH_IN_FILENAME
+ char_u buf[20];
+ int j = 0;
++ char_u *p;
+
+ /* Don't escape '[' and '{' if they are in 'isfname'. */
+ for (p = PATH_ESC_CHARS; *p != NUL; ++p)
+*** ../vim-7.1.302/src/version.c Wed May 28 22:02:07 2008
+--- src/version.c Thu May 29 15:31:51 2008
+***************
+***************
+*** 668,669 ****
+--- 673,676 ----
+ { /* Add new patch number below this line */
++ /**/
++ 303,
+ /**/
+
+--
+If all you have is a hammer, everything looks like a nail.
+When your hammer is C++, everything begins to look like a thumb.
+ -- Steve Hoflich, comp.lang.c++
+
+ /// 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://ICCF-Holland.org ///