--- /dev/null
+To: vim-dev@vim.org
+Subject: patch 7.0.189
+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.0.189
+Problem: Translated message about finding matches is truncated. (Yukihiro
+ Nakadaira)
+Solution: Enlarge the buffer. Also use vim_snprintf().
+Files: src/edit.c
+
+
+*** ../vim-7.0.188/src/edit.c Wed Nov 1 21:24:58 2006
+--- src/edit.c Fri Jan 19 20:22:09 2007
+***************
+*** 4970,4985 ****
+ * just a safety check. */
+ if (compl_curr_match->cp_number != -1)
+ {
+! /* Space for 10 text chars. + 2x10-digit no.s */
+! static char_u match_ref[31];
+
+ if (compl_matches > 0)
+! sprintf((char *)IObuff, _("match %d of %d"),
+ compl_curr_match->cp_number, compl_matches);
+ else
+! sprintf((char *)IObuff, _("match %d"),
+! compl_curr_match->cp_number);
+! vim_strncpy(match_ref, IObuff, 30);
+ edit_submode_extra = match_ref;
+ edit_submode_highl = HLF_R;
+ if (dollar_vcol)
+--- 4970,4987 ----
+ * just a safety check. */
+ if (compl_curr_match->cp_number != -1)
+ {
+! /* Space for 10 text chars. + 2x10-digit no.s = 31.
+! * Translations may need more than twice that. */
+! static char_u match_ref[81];
+
+ if (compl_matches > 0)
+! vim_snprintf((char *)match_ref, sizeof(match_ref),
+! _("match %d of %d"),
+ compl_curr_match->cp_number, compl_matches);
+ else
+! vim_snprintf((char *)match_ref, sizeof(match_ref),
+! _("match %d"),
+! compl_curr_match->cp_number);
+ edit_submode_extra = match_ref;
+ edit_submode_highl = HLF_R;
+ if (dollar_vcol)
+*** ../vim-7.0.188/src/version.c Tue Jan 16 22:13:53 2007
+--- src/version.c Sun Feb 4 02:35:43 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 189,
+ /**/
+
+--
+How many light bulbs does it take to change a person?
+
+ /// 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.0.190
+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.0.190
+Problem: "syntax spell default" results in an error message.
+Solution: Change 4 to 7 for STRNICMP(). (Raul Nunez de Arenas Coronado)
+Files: src/syntax.c
+
+
+*** ../vim-7.0.189/src/syntax.c Wed Nov 1 12:43:07 2006
+--- src/syntax.c Sun Jan 21 13:12:19 2007
+***************
+*** 3206,3212 ****
+ curbuf->b_syn_spell = SYNSPL_TOP;
+ else if (STRNICMP(arg, "notoplevel", 10) == 0 && next - arg == 10)
+ curbuf->b_syn_spell = SYNSPL_NOTOP;
+! else if (STRNICMP(arg, "default", 4) == 0 && next - arg == 4)
+ curbuf->b_syn_spell = SYNSPL_DEFAULT;
+ else
+ EMSG2(_("E390: Illegal argument: %s"), arg);
+--- 3206,3212 ----
+ curbuf->b_syn_spell = SYNSPL_TOP;
+ else if (STRNICMP(arg, "notoplevel", 10) == 0 && next - arg == 10)
+ curbuf->b_syn_spell = SYNSPL_NOTOP;
+! else if (STRNICMP(arg, "default", 7) == 0 && next - arg == 7)
+ curbuf->b_syn_spell = SYNSPL_DEFAULT;
+ else
+ EMSG2(_("E390: Illegal argument: %s"), arg);
+*** ../vim-7.0.189/src/version.c Sun Feb 4 02:37:40 2007
+--- src/version.c Sun Feb 4 02:40:23 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 190,
+ /**/
+
+--
+From "know your smileys":
+ :-)-O Smiling doctor with stethoscope
+
+ /// 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.0.191
+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.0.191
+Problem: The items used by getqflist() and setqflist() don't match.
+Solution: Support the "bufnum" item for setqflist(). (Yegappan Lakshmanan)
+Files: runtime/doc/eval.txt, src/quickfix.c
+
+
+*** ../vim-7.0.190/runtime/doc/eval.txt Wed Nov 1 15:31:02 2006
+--- runtime/doc/eval.txt Sun Feb 4 01:54:35 2007
+***************
+*** 2897,2908 ****
+ vcol non-zero: "col" is visual column
+ zero: "col" is byte index
+ nr error number
+ text description of the error
+ type type of the error, 'E', '1', etc.
+ valid non-zero: recognized error message
+
+ When there is no error list or it's empty an empty list is
+! returned.
+
+ Useful application: Find pattern matches in multiple files and
+ do something with them: >
+--- 2912,2925 ----
+ vcol non-zero: "col" is visual column
+ zero: "col" is byte index
+ nr error number
++ pattern search pattern used to locate the error
+ text description of the error
+ type type of the error, 'E', '1', etc.
+ valid non-zero: recognized error message
+
+ When there is no error list or it's empty an empty list is
+! returned. Quickfix list entries with non-existing buffer
+! number are returned with "bufnr" set to zero.
+
+ Useful application: Find pattern matches in multiple files and
+ do something with them: >
+***************
+*** 4371,4377 ****
+ Non-dictionary items in {list} are ignored. Each dictionary
+ item can contain the following entries:
+
+! filename name of a file
+ lnum line number in the file
+ pattern search pattern used to locate the error
+ col column number
+--- 4401,4410 ----
+ Non-dictionary items in {list} are ignored. Each dictionary
+ item can contain the following entries:
+
+! bufnr buffer number; must be the number of a valid
+! buffer
+! filename name of a file; only used when "bufnr" is not
+! present or it is invalid.
+ lnum line number in the file
+ pattern search pattern used to locate the error
+ col column number
+***************
+*** 4384,4394 ****
+ The "col", "vcol", "nr", "type" and "text" entries are
+ optional. Either "lnum" or "pattern" entry can be used to
+ locate a matching error line.
+! If the "filename" entry is not present or neither the "lnum"
+! or "pattern" entries are present, then the item will not be
+! handled as an error line.
+ If both "pattern" and "lnum" are present then "pattern" will
+ be used.
+
+ If {action} is set to 'a', then the items from {list} are
+ added to the existing quickfix list. If there is no existing
+--- 4417,4429 ----
+ The "col", "vcol", "nr", "type" and "text" entries are
+ optional. Either "lnum" or "pattern" entry can be used to
+ locate a matching error line.
+! If the "filename" and "bufnr" entries are not present or
+! neither the "lnum" or "pattern" entries are present, then the
+! item will not be handled as an error line.
+ If both "pattern" and "lnum" are present then "pattern" will
+ be used.
++ Note that the list is not exactly the same as what
++ |getqflist()| returns.
+
+ If {action} is set to 'a', then the items from {list} are
+ added to the existing quickfix list. If there is no existing
+*** ../vim-7.0.190/src/quickfix.c Fri Oct 20 20:15:05 2006
+--- src/quickfix.c Sun Feb 4 01:50:17 2007
+***************
+*** 106,112 ****
+
+ static int qf_init_ext __ARGS((qf_info_T *qi, char_u *efile, buf_T *buf, typval_T *tv, char_u *errorformat, int newlist, linenr_T lnumfirst, linenr_T lnumlast));
+ static void qf_new_list __ARGS((qf_info_T *qi));
+! static int qf_add_entry __ARGS((qf_info_T *qi, qfline_T **prevp, char_u *dir, char_u *fname, char_u *mesg, long lnum, int col, int vis_col, char_u *pattern, int nr, int type, int valid));
+ static void qf_msg __ARGS((qf_info_T *qi));
+ static void qf_free __ARGS((qf_info_T *qi, int idx));
+ static char_u *qf_types __ARGS((int, int));
+--- 106,112 ----
+
+ static int qf_init_ext __ARGS((qf_info_T *qi, char_u *efile, buf_T *buf, typval_T *tv, char_u *errorformat, int newlist, linenr_T lnumfirst, linenr_T lnumlast));
+ static void qf_new_list __ARGS((qf_info_T *qi));
+! static int qf_add_entry __ARGS((qf_info_T *qi, qfline_T **prevp, char_u *dir, char_u *fname, int bufnum, char_u *mesg, long lnum, int col, int vis_col, char_u *pattern, int nr, int type, int valid));
+ static void qf_msg __ARGS((qf_info_T *qi));
+ static void qf_free __ARGS((qf_info_T *qi, int idx));
+ static char_u *qf_types __ARGS((int, int));
+***************
+*** 791,796 ****
+--- 791,797 ----
+ (*namebuf || directory)
+ ? namebuf
+ : ((currfile && valid) ? currfile : (char_u *)NULL),
++ 0,
+ errmsg,
+ lnum,
+ col,
+***************
+*** 936,947 ****
+ * Returns OK or FAIL.
+ */
+ static int
+! qf_add_entry(qi, prevp, dir, fname, mesg, lnum, col, vis_col, pattern, nr, type,
+! valid)
+ qf_info_T *qi; /* quickfix list */
+ qfline_T **prevp; /* pointer to previously added entry or NULL */
+ char_u *dir; /* optional directory name */
+ char_u *fname; /* file name or NULL */
+ char_u *mesg; /* message */
+ long lnum; /* line number */
+ int col; /* column */
+--- 937,949 ----
+ * Returns OK or FAIL.
+ */
+ static int
+! qf_add_entry(qi, prevp, dir, fname, bufnum, mesg, lnum, col, vis_col, pattern,
+! nr, type, valid)
+ qf_info_T *qi; /* quickfix list */
+ qfline_T **prevp; /* pointer to previously added entry or NULL */
+ char_u *dir; /* optional directory name */
+ char_u *fname; /* file name or NULL */
++ int bufnum; /* buffer number or zero */
+ char_u *mesg; /* message */
+ long lnum; /* line number */
+ int col; /* column */
+***************
+*** 955,961 ****
+
+ if ((qfp = (qfline_T *)alloc((unsigned)sizeof(qfline_T))) == NULL)
+ return FAIL;
+! qfp->qf_fnum = qf_get_fnum(dir, fname);
+ if ((qfp->qf_text = vim_strsave(mesg)) == NULL)
+ {
+ vim_free(qfp);
+--- 957,966 ----
+
+ if ((qfp = (qfline_T *)alloc((unsigned)sizeof(qfline_T))) == NULL)
+ return FAIL;
+! if (bufnum != 0)
+! qfp->qf_fnum = bufnum;
+! else
+! qfp->qf_fnum = qf_get_fnum(dir, fname);
+ if ((qfp->qf_text = vim_strsave(mesg)) == NULL)
+ {
+ vim_free(qfp);
+***************
+*** 1106,1111 ****
+--- 1111,1117 ----
+ if (qf_add_entry(to->w_llist, &prevp,
+ NULL,
+ NULL,
++ 0,
+ from_qfp->qf_text,
+ from_qfp->qf_lnum,
+ from_qfp->qf_col,
+***************
+*** 3134,3139 ****
+--- 3140,3146 ----
+ if (qf_add_entry(qi, &prevp,
+ NULL, /* dir */
+ fnames[fi],
++ 0,
+ ml_get_buf(buf,
+ regmatch.startpos[0].lnum + lnum, FALSE),
+ regmatch.startpos[0].lnum + lnum,
+***************
+*** 3419,3424 ****
+--- 3426,3432 ----
+ char_u buf[2];
+ qfline_T *qfp;
+ int i;
++ int bufnum;
+
+ if (wp != NULL)
+ {
+***************
+*** 3434,3439 ****
+--- 3442,3452 ----
+ qfp = qi->qf_lists[qi->qf_curlist].qf_start;
+ for (i = 1; !got_int && i <= qi->qf_lists[qi->qf_curlist].qf_count; ++i)
+ {
++ /* Handle entries with a non-existing buffer number. */
++ bufnum = qfp->qf_fnum;
++ if (bufnum != 0 && (buflist_findnr(bufnum) == NULL))
++ bufnum = 0;
++
+ if ((dict = dict_alloc()) == NULL)
+ return FAIL;
+ if (list_append_dict(list, dict) == FAIL)
+***************
+*** 3441,3447 ****
+
+ buf[0] = qfp->qf_type;
+ buf[1] = NUL;
+! if ( dict_add_nr_str(dict, "bufnr", (long)qfp->qf_fnum, NULL) == FAIL
+ || dict_add_nr_str(dict, "lnum", (long)qfp->qf_lnum, NULL) == FAIL
+ || dict_add_nr_str(dict, "col", (long)qfp->qf_col, NULL) == FAIL
+ || dict_add_nr_str(dict, "vcol", (long)qfp->qf_viscol, NULL) == FAIL
+--- 3454,3460 ----
+
+ buf[0] = qfp->qf_type;
+ buf[1] = NUL;
+! if ( dict_add_nr_str(dict, "bufnr", (long)bufnum, NULL) == FAIL
+ || dict_add_nr_str(dict, "lnum", (long)qfp->qf_lnum, NULL) == FAIL
+ || dict_add_nr_str(dict, "col", (long)qfp->qf_col, NULL) == FAIL
+ || dict_add_nr_str(dict, "vcol", (long)qfp->qf_viscol, NULL) == FAIL
+***************
+*** 3472,3477 ****
+--- 3485,3491 ----
+ listitem_T *li;
+ dict_T *d;
+ char_u *filename, *pattern, *text, *type;
++ int bufnum;
+ long lnum;
+ int col, nr;
+ int vcol;
+***************
+*** 3479,3484 ****
+--- 3493,3499 ----
+ int valid, status;
+ int retval = OK;
+ qf_info_T *qi = &ql_info;
++ int did_bufnr_emsg = FALSE;
+
+ if (wp != NULL)
+ {
+***************
+*** 3508,3513 ****
+--- 3523,3529 ----
+ continue;
+
+ filename = get_dict_string(d, (char_u *)"filename", TRUE);
++ bufnum = get_dict_number(d, (char_u *)"bufnr");
+ lnum = get_dict_number(d, (char_u *)"lnum");
+ col = get_dict_number(d, (char_u *)"col");
+ vcol = get_dict_number(d, (char_u *)"vcol");
+***************
+*** 3519,3530 ****
+ text = vim_strsave((char_u *)"");
+
+ valid = TRUE;
+! if (filename == NULL || (lnum == 0 && pattern == NULL))
+ valid = FALSE;
+
+ status = qf_add_entry(qi, &prevp,
+ NULL, /* dir */
+ filename,
+ text,
+ lnum,
+ col,
+--- 3535,3560 ----
+ text = vim_strsave((char_u *)"");
+
+ valid = TRUE;
+! if ((filename == NULL && bufnum == 0) || (lnum == 0 && pattern == NULL))
+ valid = FALSE;
+
++ /* Mark entries with non-existing buffer number as not valid. Give the
++ * error message only once. */
++ if (bufnum != 0 && (buflist_findnr(bufnum) == NULL))
++ {
++ if (!did_bufnr_emsg)
++ {
++ did_bufnr_emsg = TRUE;
++ EMSGN(_("E92: Buffer %ld not found"), bufnum);
++ }
++ valid = FALSE;
++ bufnum = 0;
++ }
++
+ status = qf_add_entry(qi, &prevp,
+ NULL, /* dir */
+ filename,
++ bufnum,
+ text,
+ lnum,
+ col,
+***************
+*** 3757,3762 ****
+--- 3787,3793 ----
+ if (qf_add_entry(qi, &prevp,
+ NULL, /* dir */
+ fnames[fi],
++ 0,
+ IObuff,
+ lnum,
+ (int)(regmatch.startp[0] - IObuff)
+*** ../vim-7.0.190/src/version.c Sun Feb 4 02:49:03 2007
+--- src/version.c Sun Feb 4 02:50:49 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 191,
+ /**/
+
+--
+From "know your smileys":
+ |-P Reaction to unusually ugly C code
+
+ /// 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.0.192
+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.0.192
+Problem: When 'swapfile' is switched off in an empty file it is possible
+ that not all blocks are loaded into memory, causing ml_get errors
+ later.
+Solution: Rename "dont_release" to "mf_dont_release" and also use it to
+ avoid using the cached line and locked block.
+Files: src/globals.h, src/memfile.c, src/memline.c
+
+
+*** ../vim-7.0.191/src/globals.h Tue Jan 9 15:15:36 2007
+--- src/globals.h Wed Feb 7 03:29:52 2007
+***************
+*** 554,559 ****
+--- 554,563 ----
+ EXTERN buf_T *firstbuf INIT(= NULL); /* first buffer */
+ EXTERN buf_T *lastbuf INIT(= NULL); /* last buffer */
+ EXTERN buf_T *curbuf INIT(= NULL); /* currently active buffer */
++
++ /* Flag that is set when switching off 'swapfile'. It means that all blocks
++ * are to be loaded into memory. Shouldn't be global... */
++ EXTERN int mf_dont_release INIT(= FALSE); /* don't release blocks */
+
+ /*
+ * List of files being edited (global argument list). curwin->w_alist points
+*** ../vim-7.0.191/src/memfile.c Tue Nov 7 18:02:19 2006
+--- src/memfile.c Wed Feb 7 03:22:11 2007
+***************
+*** 76,82 ****
+ #define MEMFILE_PAGE_SIZE 4096 /* default page size */
+
+ static long_u total_mem_used = 0; /* total memory used for memfiles */
+- static int dont_release = FALSE; /* don't release blocks */
+
+ static void mf_ins_hash __ARGS((memfile_T *, bhdr_T *));
+ static void mf_rem_hash __ARGS((memfile_T *, bhdr_T *));
+--- 76,81 ----
+***************
+*** 279,288 ****
+ if (getlines)
+ {
+ /* get all blocks in memory by accessing all lines (clumsy!) */
+! dont_release = TRUE;
+ for (lnum = 1; lnum <= buf->b_ml.ml_line_count; ++lnum)
+ (void)ml_get_buf(buf, lnum, FALSE);
+! dont_release = FALSE;
+ /* TODO: should check if all blocks are really in core */
+ }
+
+--- 278,287 ----
+ if (getlines)
+ {
+ /* get all blocks in memory by accessing all lines (clumsy!) */
+! mf_dont_release = TRUE;
+ for (lnum = 1; lnum <= buf->b_ml.ml_line_count; ++lnum)
+ (void)ml_get_buf(buf, lnum, FALSE);
+! mf_dont_release = FALSE;
+ /* TODO: should check if all blocks are really in core */
+ }
+
+***************
+*** 830,836 ****
+ buf_T *buf;
+
+ /* don't release while in mf_close_file() */
+! if (dont_release)
+ return NULL;
+
+ /*
+--- 829,835 ----
+ buf_T *buf;
+
+ /* don't release while in mf_close_file() */
+! if (mf_dont_release)
+ return NULL;
+
+ /*
+*** ../vim-7.0.191/src/memline.c Tue Jan 9 15:15:36 2007
+--- src/memline.c Wed Feb 7 03:29:31 2007
+***************
+*** 2074,2081 ****
+ /*
+ * See if it is the same line as requested last time.
+ * Otherwise may need to flush last used line.
+ */
+! if (buf->b_ml.ml_line_lnum != lnum)
+ {
+ ml_flush_line(buf);
+
+--- 2074,2083 ----
+ /*
+ * See if it is the same line as requested last time.
+ * Otherwise may need to flush last used line.
++ * Don't use the last used line when 'swapfile' is reset, need to load all
++ * blocks.
+ */
+! if (buf->b_ml.ml_line_lnum != lnum || mf_dont_release)
+ {
+ ml_flush_line(buf);
+
+***************
+*** 3200,3212 ****
+ * If not, flush and release the locked block.
+ * Don't do this for ML_INSERT_SAME, because the stack need to be updated.
+ * Don't do this for ML_FLUSH, because we want to flush the locked block.
+ */
+ if (buf->b_ml.ml_locked)
+ {
+! if (ML_SIMPLE(action) && buf->b_ml.ml_locked_low <= lnum
+! && buf->b_ml.ml_locked_high >= lnum)
+ {
+! /* remember to update pointer blocks and stack later */
+ if (action == ML_INSERT)
+ {
+ ++(buf->b_ml.ml_locked_lineadd);
+--- 3202,3217 ----
+ * If not, flush and release the locked block.
+ * Don't do this for ML_INSERT_SAME, because the stack need to be updated.
+ * Don't do this for ML_FLUSH, because we want to flush the locked block.
++ * Don't do this when 'swapfile' is reset, we want to load all the blocks.
+ */
+ if (buf->b_ml.ml_locked)
+ {
+! if (ML_SIMPLE(action)
+! && buf->b_ml.ml_locked_low <= lnum
+! && buf->b_ml.ml_locked_high >= lnum
+! && !mf_dont_release)
+ {
+! /* remember to update pointer blocks and stack later */
+ if (action == ML_INSERT)
+ {
+ ++(buf->b_ml.ml_locked_lineadd);
+*** ../vim-7.0.191/src/version.c Sun Feb 4 02:59:04 2007
+--- src/version.c Wed Feb 7 03:40:28 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 192,
+ /**/
+
+--
+From "know your smileys":
+ %-) After staring at screen for 15 hours
+
+ /// 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.0.193
+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.0.193
+Problem: Using --remote or --remote-tab with an argument that matches
+ 'wildignore' causes a crash.
+Solution: Check the argument count before using ARGLIST[0].
+Files: src/ex_cmds.c
+
+
+*** ../vim-7.0.192/src/ex_cmds.c Tue Sep 5 18:28:45 2006
+--- src/ex_cmds.c Tue Feb 13 03:47:52 2007
+***************
+*** 6967,6972 ****
+--- 6967,6980 ----
+ */
+ set_arglist(eap->arg);
+
++ /*
++ * Expanding wildcards may result in an empty argument list. E.g. when
++ * editing "foo.pyc" and ".pyc" is in 'wildignore'. Assume that we
++ * already did an error message for this.
++ */
++ if (ARGCOUNT == 0)
++ return;
++
+ # ifdef FEAT_WINDOWS
+ if (cmdmod.tab)
+ {
+*** ../vim-7.0.192/src/version.c Wed Feb 7 03:42:37 2007
+--- src/version.c Tue Feb 13 03:47:08 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 193,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+113. You are asked about a bus schedule, you wonder if it is 16 or 32 bits.
+
+ /// 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.0.194
+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.0.194
+Problem: Once an ml_get error is given redrawing part of the screen may
+ cause it again, resulting in an endless loop.
+Solution: Don't give the error message for a recursive call.
+Files: src/memline.c
+
+
+*** ../vim-7.0.193/src/memline.c Wed Feb 7 03:42:37 2007
+--- src/memline.c Tue Feb 13 03:56:00 2007
+***************
+*** 2054,2066 ****
+ linenr_T lnum;
+ int will_change; /* line will be changed */
+ {
+! bhdr_T *hp;
+! DATA_BL *dp;
+! char_u *ptr;
+
+ if (lnum > buf->b_ml.ml_line_count) /* invalid line number */
+ {
+! EMSGN(_("E315: ml_get: invalid lnum: %ld"), lnum);
+ errorret:
+ STRCPY(IObuff, "???");
+ return IObuff;
+--- 2054,2074 ----
+ linenr_T lnum;
+ int will_change; /* line will be changed */
+ {
+! bhdr_T *hp;
+! DATA_BL *dp;
+! char_u *ptr;
+! static int recursive = 0;
+
+ if (lnum > buf->b_ml.ml_line_count) /* invalid line number */
+ {
+! if (recursive == 0)
+! {
+! /* Avoid giving this message for a recursive call, may happen when
+! * the GUI redraws part of the text. */
+! ++recursive;
+! EMSGN(_("E315: ml_get: invalid lnum: %ld"), lnum);
+! --recursive;
+! }
+ errorret:
+ STRCPY(IObuff, "???");
+ return IObuff;
+***************
+*** 2088,2094 ****
+ */
+ if ((hp = ml_find_line(buf, lnum, ML_FIND)) == NULL)
+ {
+! EMSGN(_("E316: ml_get: cannot find line %ld"), lnum);
+ goto errorret;
+ }
+
+--- 2096,2109 ----
+ */
+ if ((hp = ml_find_line(buf, lnum, ML_FIND)) == NULL)
+ {
+! if (recursive == 0)
+! {
+! /* Avoid giving this message for a recursive call, may happen
+! * when the GUI redraws part of the text. */
+! ++recursive;
+! EMSGN(_("E316: ml_get: cannot find line %ld"), lnum);
+! --recursive;
+! }
+ goto errorret;
+ }
+
+*** ../vim-7.0.193/src/version.c Tue Feb 13 03:49:01 2007
+--- src/version.c Tue Feb 13 03:59:22 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 194,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+114. You are counting items, you go "0,1,2,3,4,5,6,7,8,9,A,B,C,D...".
+
+ /// 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.0.195
+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.0.195
+Problem: When a buffer is modified and 'autowriteall' is set, ":quit"
+ results in an endless loop when there is a conversion error while
+ writing. (Nikolai Weibull)
+Solution: Make autowrite() return FAIL if the buffer is still changed after
+ writing it.
+Files: src/ex_cmds2.c
+
+
+*** ../vim-7.0.194/src/ex_cmds2.c Tue Jan 16 21:31:38 2007
+--- src/ex_cmds2.c Tue Feb 13 06:11:28 2007
+***************
+*** 1242,1255 ****
+ buf_T *buf;
+ int forceit;
+ {
+ if (!(p_aw || p_awa) || !p_write
+ #ifdef FEAT_QUICKFIX
+! /* never autowrite a "nofile" or "nowrite" buffer */
+! || bt_dontwrite(buf)
+ #endif
+! || (!forceit && buf->b_p_ro) || buf->b_ffname == NULL)
+ return FAIL;
+! return buf_write_all(buf, forceit);
+ }
+
+ /*
+--- 1242,1263 ----
+ buf_T *buf;
+ int forceit;
+ {
++ int r;
++
+ if (!(p_aw || p_awa) || !p_write
+ #ifdef FEAT_QUICKFIX
+! /* never autowrite a "nofile" or "nowrite" buffer */
+! || bt_dontwrite(buf)
+ #endif
+! || (!forceit && buf->b_p_ro) || buf->b_ffname == NULL)
+ return FAIL;
+! r = buf_write_all(buf, forceit);
+!
+! /* Writing may succeed but the buffer still changed, e.g., when there is a
+! * conversion error. We do want to return FAIL then. */
+! if (buf_valid(buf) && bufIsChanged(buf))
+! r = FAIL;
+! return r;
+ }
+
+ /*
+***************
+*** 1472,1477 ****
+--- 1480,1487 ----
+ if (buf == NULL) /* No buffers changed */
+ return FALSE;
+
++ /* Try auto-writing the buffer. If this fails but the buffer no
++ * longer exists it's not changed, that's OK. */
+ if (check_changed(buf, p_awa, TRUE, FALSE, TRUE) && buf_valid(buf))
+ break; /* didn't save - still changes */
+ }
+*** ../vim-7.0.194/src/version.c Tue Feb 13 04:03:05 2007
+--- src/version.c Tue Feb 13 06:18:28 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 195,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+115. You are late picking up your kid from school and try to explain
+ to the teacher you were stuck in Web traffic.
+
+ /// 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.0.196
+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.0.196
+Problem: When using ":vert ball" the computation of the mouse pointer
+ position may be off by one column. (Stefan Karlsson)
+Solution: Recompute the frame width when moving the vertical separator from
+ one window to another.
+Files: src/window.c
+
+
+*** ../vim-7.0.195/src/window.c Tue Nov 21 20:57:21 2006
+--- src/window.c Tue Feb 20 00:16:35 2007
+***************
+*** 1541,1548 ****
+ win1->w_prev->w_status_height = win1->w_status_height;
+ win1->w_status_height = height;
+ #ifdef FEAT_VERTSPLIT
+! win1->w_prev->w_vsep_width = 0;
+! win1->w_vsep_width = 1;
+ #endif
+ }
+ else if (win2 == lastwin)
+--- 1541,1555 ----
+ win1->w_prev->w_status_height = win1->w_status_height;
+ win1->w_status_height = height;
+ #ifdef FEAT_VERTSPLIT
+! if (win1->w_prev->w_vsep_width == 1)
+! {
+! /* Remove the vertical separator from the last-but-one window,
+! * add it to the last window. Adjust the frame widths. */
+! win1->w_prev->w_vsep_width = 0;
+! win1->w_prev->w_frame->fr_width -= 1;
+! win1->w_vsep_width = 1;
+! win1->w_frame->fr_width += 1;
+! }
+ #endif
+ }
+ else if (win2 == lastwin)
+***************
+*** 1551,1558 ****
+ win1->w_status_height = win2->w_status_height;
+ win2->w_status_height = height;
+ #ifdef FEAT_VERTSPLIT
+! win2->w_vsep_width = 1;
+! win1->w_vsep_width = 0;
+ #endif
+ }
+ win_remove(win1, NULL);
+--- 1558,1572 ----
+ win1->w_status_height = win2->w_status_height;
+ win2->w_status_height = height;
+ #ifdef FEAT_VERTSPLIT
+! if (win1->w_vsep_width == 1)
+! {
+! /* Remove the vertical separator from win1, add it to the last
+! * window, win2. Adjust the frame widths. */
+! win2->w_vsep_width = 1;
+! win2->w_frame->fr_width += 1;
+! win1->w_vsep_width = 0;
+! win1->w_frame->fr_width -= 1;
+! }
+ #endif
+ }
+ win_remove(win1, NULL);
+*** ../vim-7.0.195/src/version.c Tue Feb 13 06:21:24 2007
+--- src/version.c Tue Feb 20 00:14:00 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 196,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+150. You find yourself counting emoticons to get to sleep.
+
+ /// 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.0.199
+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.0.199
+Problem: When using multi-byte characters the combination of completion and
+ formatting may result in a wrong cursor position.
+Solution: Don't decrement the cursor column, use dec_cursor(). (Yukihiro
+ Nakadaira) Also check for the column to be zero.
+Files: src/edit.c
+
+
+*** ../vim-7.0.198/src/edit.c Sun Feb 4 02:37:40 2007
+--- src/edit.c Fri Feb 16 01:15:49 2007
+***************
+*** 3448,3458 ****
+ }
+ else
+ {
+ /* put the cursor on the last char, for 'tw' formatting */
+! curwin->w_cursor.col--;
+ if (stop_arrow() == OK)
+ insertchar(NUL, 0, -1);
+! curwin->w_cursor.col++;
+ }
+
+ auto_format(FALSE, TRUE);
+--- 3449,3464 ----
+ }
+ else
+ {
++ int prev_col = curwin->w_cursor.col;
++
+ /* put the cursor on the last char, for 'tw' formatting */
+! if (prev_col > 0)
+! dec_cursor();
+ if (stop_arrow() == OK)
+ insertchar(NUL, 0, -1);
+! if (prev_col > 0
+! && ml_get_curline()[curwin->w_cursor.col] != NUL)
+! inc_cursor();
+ }
+
+ auto_format(FALSE, TRUE);
+*** ../vim-7.0.198/src/version.c Tue Feb 20 03:18:20 2007
+--- src/version.c Tue Feb 20 03:32:12 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 199,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+156. You forget your friend's name but not her e-mail address.
+
+ /// 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.0.200
+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.0.200
+Problem: Memory leaks when out of memory.
+Solution: Free the memory.
+Files: src/edit.c, src/diff.c
+
+
+*** ../vim-7.0.199/src/edit.c Tue Feb 20 03:33:51 2007
+--- src/edit.c Fri Feb 16 01:15:49 2007
+***************
+*** 2698,2703 ****
+--- 2698,2704 ----
+ buf = alloc(LSIZE);
+ if (buf == NULL)
+ return;
++ regmatch.regprog = NULL; /* so that we can goto theend */
+
+ /* If 'infercase' is set, don't use 'smartcase' here */
+ save_p_scs = p_scs;
+***************
+*** 2712,2724 ****
+ char_u *pat_esc = vim_strsave_escaped(pat, (char_u *)"\\");
+
+ if (pat_esc == NULL)
+! return ;
+ i = (int)STRLEN(pat_esc) + 10;
+ ptr = alloc(i);
+ if (ptr == NULL)
+ {
+ vim_free(pat_esc);
+! return;
+ }
+ vim_snprintf((char *)ptr, i, "^\\s*\\zs\\V%s", pat_esc);
+ regmatch.regprog = vim_regcomp(ptr, RE_MAGIC);
+--- 2713,2725 ----
+ char_u *pat_esc = vim_strsave_escaped(pat, (char_u *)"\\");
+
+ if (pat_esc == NULL)
+! goto theend ;
+ i = (int)STRLEN(pat_esc) + 10;
+ ptr = alloc(i);
+ if (ptr == NULL)
+ {
+ vim_free(pat_esc);
+! goto theend;
+ }
+ vim_snprintf((char *)ptr, i, "^\\s*\\zs\\V%s", pat_esc);
+ regmatch.regprog = vim_regcomp(ptr, RE_MAGIC);
+*** ../vim-7.0.199/src/diff.c Sun Apr 23 00:23:34 2006
+--- src/diff.c Fri Feb 16 01:18:41 2007
+***************
+*** 1822,1835 ****
+--- 1822,1841 ----
+
+ idx = diff_buf_idx(wp->w_buffer);
+ if (idx == DB_COUNT) /* cannot happen */
++ {
++ vim_free(line_org);
+ return FALSE;
++ }
+
+ /* search for a change that includes "lnum" in the list of diffblocks. */
+ for (dp = curtab->tp_first_diff; dp != NULL; dp = dp->df_next)
+ if (lnum <= dp->df_lnum[idx] + dp->df_count[idx])
+ break;
+ if (dp == NULL || diff_check_sanity(curtab, dp) == FAIL)
++ {
++ vim_free(line_org);
+ return FALSE;
++ }
+
+ off = lnum - dp->df_lnum[idx];
+
+*** ../vim-7.0.199/src/version.c Tue Feb 20 03:33:51 2007
+--- src/version.c Tue Feb 20 03:48:16 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 200,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+157. You fum through a magazine, you first check to see if it has a web
+ address.
+
+ /// 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.0.201
+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.0.201
+Problem: Message for ":diffput" about buffer not being in diff mode may be
+ wrong.
+Solution: Check for buffer in diff mode but not modifiable.
+Files: src/diff.c
+
+
+*** ../vim-7.0.200/src/diff.c Tue Feb 20 03:52:04 2007
+--- src/diff.c Fri Feb 16 01:18:41 2007
+***************
+*** 2014,2019 ****
+--- 2014,2020 ----
+ int start_skip, end_skip;
+ int new_count;
+ int buf_empty;
++ int found_not_ma = FALSE;
+
+ /* Find the current buffer in the list of diff buffers. */
+ idx_cur = diff_buf_idx(curbuf);
+***************
+*** 2028,2040 ****
+ /* No argument: Find the other buffer in the list of diff buffers. */
+ for (idx_other = 0; idx_other < DB_COUNT; ++idx_other)
+ if (curtab->tp_diffbuf[idx_other] != curbuf
+! && curtab->tp_diffbuf[idx_other] != NULL
+! && (eap->cmdidx != CMD_diffput
+! || curtab->tp_diffbuf[idx_other]->b_p_ma))
+! break;
+ if (idx_other == DB_COUNT)
+ {
+! EMSG(_("E100: No other buffer in diff mode"));
+ return;
+ }
+
+--- 2029,2047 ----
+ /* No argument: Find the other buffer in the list of diff buffers. */
+ for (idx_other = 0; idx_other < DB_COUNT; ++idx_other)
+ if (curtab->tp_diffbuf[idx_other] != curbuf
+! && curtab->tp_diffbuf[idx_other] != NULL)
+! {
+! if (eap->cmdidx != CMD_diffput
+! || curtab->tp_diffbuf[idx_other]->b_p_ma)
+! break;
+! found_not_ma = TRUE;
+! }
+ if (idx_other == DB_COUNT)
+ {
+! if (found_not_ma)
+! EMSG(_("E793: No other buffer in diff mode is modifiable"));
+! else
+! EMSG(_("E100: No other buffer in diff mode"));
+ return;
+ }
+
+*** ../vim-7.0.200/src/version.c Tue Feb 20 03:52:04 2007
+--- src/version.c Tue Feb 20 04:46:00 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 201,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+159. You get excited whenever discussing your hard drive.
+
+ /// 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.0.202
+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.0.202
+Problem: Problems on Tandem systems while compiling and at runtime.
+Solution: Recognize root uid is 65535. Check select() return value for it
+ not being supported. Avoid wrong function prototypes. Mention
+ use of -lfloss. (Matthew Woehlke)
+Files: src/Makefile, src/ex_cmds.c, src/fileio.c, src/main.c,
+ src/osdef1.h.in, src/osdef2.h.in, src/os_unix.c, src/pty.c,
+ src/vim.h
+
+
+*** ../vim-7.0.201/src/Makefile Tue Feb 20 04:46:41 2007
+--- src/Makefile Tue Feb 27 10:24:05 2007
+***************
+*** 201,206 ****
+--- 201,207 ----
+ #SunOS 4.1.x +X11 -GUI 5.1b (J) Bram Moolenaar
+ #SunOS 4.1.3_U1 (sun4c) gcc +X11 +GUI Athena 5.0w (J) Darren Hiebert
+ #SUPER-UX 6.2 (NEC SX-4) cc +X11R6 Motif,Athena4.6b (P) Lennart Schultz
++ #Tandem/NSK (c) Matthew Woehlke
+ #Unisys 6035 cc +X11 Motif 5.3 (8) Glauber Ribeiro
+ #ESIX V4.2 cc +X11 6.0 (a) Reinhard Wobst
+ #Mac OS X 10.[23] gcc Carbon 6.2 (x) Bram Moolenaar
+***************
+*** 251,256 ****
+--- 252,258 ----
+ # (a) See line with EXTRA_LIBS below.
+ # (b) When using gcc with the Solaris linker, make sure you don't use GNU
+ # strip, otherwise the binary may not run: "Cannot find ELF".
++ # (c) Add -lfloss to EXTRA_LIBS, see below.
+ # (x) When you get warnings for precompiled header files, run
+ # "sudo fixPrecomps". Also see CONF_OPT_DARWIN below.
+ # }}}
+***************
+*** 793,798 ****
+--- 796,804 ----
+
+ ### (a) ESIX V4.2 (Reinhard Wobst)
+ #EXTRA_LIBS = -lnsl -lsocket -lgen -lXIM -lXmu -lXext
++
++ ### (c) Tandem/NSK (Matthew Woehlke)
++ #EXTRA_LIBS = -lfloss
+
+ ### If you want to use ncurses library instead of the automatically found one
+ ### after changing this, you need to do "make reconfig".
+*** ../vim-7.0.201/src/ex_cmds.c Tue Feb 13 03:49:01 2007
+--- src/ex_cmds.c Tue Feb 20 05:20:55 2007
+***************
+*** 1772,1778 ****
+ */
+ st_old.st_dev = st_old.st_ino = 0;
+ st_old.st_mode = 0600;
+! if (mch_stat((char *)fname, &st_old) == 0 && getuid()
+ && !(st_old.st_uid == getuid()
+ ? (st_old.st_mode & 0200)
+ : (st_old.st_gid == getgid()
+--- 1772,1779 ----
+ */
+ st_old.st_dev = st_old.st_ino = 0;
+ st_old.st_mode = 0600;
+! if (mch_stat((char *)fname, &st_old) == 0
+! && getuid() != ROOT_UID
+ && !(st_old.st_uid == getuid()
+ ? (st_old.st_mode & 0200)
+ : (st_old.st_gid == getgid()
+*** ../vim-7.0.201/src/fileio.c Tue Jan 16 21:31:38 2007
+--- src/fileio.c Wed Feb 21 06:04:39 2007
+***************
+*** 1122,1128 ****
+ if (!skip_read)
+ {
+ #if SIZEOF_INT > 2
+! # ifdef __TANDEM
+ size = SSIZE_MAX; /* use max I/O size, 52K */
+ # else
+ size = 0x10000L; /* use buffer >= 64K */
+--- 1122,1128 ----
+ if (!skip_read)
+ {
+ #if SIZEOF_INT > 2
+! # if defined(SSIZE_MAX) && (SSIZE_MAX < 0x10000L)
+ size = SSIZE_MAX; /* use max I/O size, 52K */
+ # else
+ size = 0x10000L; /* use buffer >= 64K */
+*** ../vim-7.0.201/src/main.c Tue Nov 7 22:41:37 2006
+--- src/main.c Tue Feb 20 05:22:33 2007
+***************
+*** 3280,3286 ****
+ # ifdef FEAT_GUI
+ (gui.in_use
+ # ifdef UNIX
+! && getuid() != 0
+ # endif
+ ) ||
+ # endif
+--- 3280,3286 ----
+ # ifdef FEAT_GUI
+ (gui.in_use
+ # ifdef UNIX
+! && getuid() != ROOT_UID
+ # endif
+ ) ||
+ # endif
+*** ../vim-7.0.201/src/osdef1.h.in Sun Jun 13 21:14:18 2004
+--- src/osdef1.h.in Tue Feb 20 05:13:23 2007
+***************
+*** 98,104 ****
+--- 98,106 ----
+
+ #ifndef USE_SYSTEM
+ extern int fork __ARGS((void));
++ # ifndef __TANDEM
+ extern int execvp __ARGS((const char *, const char **));
++ # endif
+ extern int wait __ARGS((int *)); /* will this break things ...? */
+ extern int waitpid __ARGS((pid_t, int *, int));
+ #endif
+***************
+*** 123,132 ****
+
+ extern int kill __ARGS((int, int));
+
+ extern int access __ARGS((char *, int));
+ extern int fsync __ARGS((int));
+ extern int fchown __ARGS((int, int, int));
+! #if defined(HAVE_GETCWD) && !defined(sun)
+ extern char *getcwd __ARGS((char *, int));
+ #else
+ extern char *getwd __ARGS((char *));
+--- 125,136 ----
+
+ extern int kill __ARGS((int, int));
+
++ #ifndef __TANDEM
+ extern int access __ARGS((char *, int));
++ #endif
+ extern int fsync __ARGS((int));
+ extern int fchown __ARGS((int, int, int));
+! #if defined(HAVE_GETCWD) && !defined(sun) && !defined(__TANDEM)
+ extern char *getcwd __ARGS((char *, int));
+ #else
+ extern char *getwd __ARGS((char *));
+*** ../vim-7.0.201/src/osdef2.h.in Sun Jun 13 17:19:40 2004
+--- src/osdef2.h.in Tue Feb 20 05:14:50 2007
+***************
+*** 11,23 ****
+--- 11,29 ----
+ extern int setenv __ARGS((char *, char *, int));
+ extern int putenv __ARGS((const char *));
+
++ #ifndef __TANDEM
+ extern int gethostname __ARGS((char *, int));
++ #endif
+ extern void perror __ARGS((char *));
+
++ #ifndef __TANDEM
+ extern int sleep __ARGS((int));
++ #endif
+ extern int usleep __ARGS((unsigned int));
+ extern unsigned int alarm __ARGS((unsigned int));
++ #ifndef __TANDEM
+ extern int chdir __ARGS((char *));
++ #endif
+ extern int fchdir __ARGS((int));
+ #ifndef stat /* could be redefined to stat64() */
+ extern int stat __ARGS((const char *, struct stat *));
+***************
+*** 28,35 ****
+--- 34,43 ----
+ extern int fstat __ARGS((int, struct stat *));
+ extern int open __ARGS((const char *, int, ...));
+ extern int close __ARGS((int));
++ #ifndef __TANDEM
+ extern int read __ARGS((int, char *, size_t));
+ extern int write __ARGS((int, char *, size_t));
++ #endif
+ extern int pipe __ARGS((int *));
+ extern off_t lseek __ARGS((int, off_t, int));
+ extern void sync __ARGS((void));
+*** ../vim-7.0.201/src/os_unix.c Tue Jan 9 15:15:36 2007
+--- src/os_unix.c Tue Feb 20 05:17:23 2007
+***************
+*** 25,31 ****
+ * Don't use it for the Mac, it causes a warning for precompiled headers.
+ * TODO: use a configure check for precompiled headers?
+ */
+! #ifndef __APPLE__
+ # define select select_declared_wrong
+ #endif
+
+--- 25,31 ----
+ * Don't use it for the Mac, it causes a warning for precompiled headers.
+ * TODO: use a configure check for precompiled headers?
+ */
+! #if !defined(__APPLE__) && !defined(__TANDEM)
+ # define select select_declared_wrong
+ #endif
+
+***************
+*** 48,56 ****
+ /*
+ * Use this prototype for select, some include files have a wrong prototype
+ */
+! #undef select
+! #ifdef __BEOS__
+! # define select beos_select
+ #endif
+
+ #if defined(HAVE_SELECT)
+--- 48,58 ----
+ /*
+ * Use this prototype for select, some include files have a wrong prototype
+ */
+! #ifndef __TANDEM
+! # undef select
+! # ifdef __BEOS__
+! # define select beos_select
+! # endif
+ #endif
+
+ #if defined(HAVE_SELECT)
+***************
+*** 4770,4775 ****
+--- 4772,4785 ----
+ # else
+ ret = select(maxfd + 1, &rfds, NULL, &efds, tvp);
+ # endif
++ # ifdef __TANDEM
++ if (ret == -1 && errno == ENOTSUP)
++ {
++ FD_ZERO(&rfds);
++ FD_ZERO(&efds);
++ ret = 0;
++ }
++ #endif
+ # ifdef FEAT_MZSCHEME
+ if (ret == 0 && mzquantum_used)
+ /* loop if MzThreads must be scheduled and timeout occured */
+*** ../vim-7.0.201/src/pty.c Wed Nov 1 18:12:46 2006
+--- src/pty.c Tue Feb 20 05:21:22 2007
+***************
+*** 330,336 ****
+ if ((f = open("/dev/ptc", O_RDWR | O_NOCTTY | O_EXTRA)) < 0)
+ return -1;
+ strncpy(TtyName, ttyname(f), sizeof(TtyName));
+! if (geteuid() && mch_access(TtyName, R_OK | W_OK))
+ {
+ close(f);
+ return -1;
+--- 330,336 ----
+ if ((f = open("/dev/ptc", O_RDWR | O_NOCTTY | O_EXTRA)) < 0)
+ return -1;
+ strncpy(TtyName, ttyname(f), sizeof(TtyName));
+! if (geteuid() != ROOT_UID && mch_access(TtyName, R_OK | W_OK))
+ {
+ close(f);
+ return -1;
+***************
+*** 394,400 ****
+ q[0] = *l;
+ q[1] = *d;
+ #ifndef MACOS
+! if (geteuid() && mch_access(TtyName, R_OK | W_OK))
+ {
+ close(f);
+ continue;
+--- 394,400 ----
+ q[0] = *l;
+ q[1] = *d;
+ #ifndef MACOS
+! if (geteuid() != ROOT_UID && mch_access(TtyName, R_OK | W_OK))
+ {
+ close(f);
+ continue;
+*** ../vim-7.0.201/src/vim.h Tue Jan 16 21:31:38 2007
+--- src/vim.h Tue Feb 20 05:23:47 2007
+***************
+*** 50,55 ****
+--- 50,64 ----
+ # endif
+ #endif
+
++ /* user ID of root is usually zero, but not for everybody */
++ #ifdef __TANDEM
++ # define _TANDEM_SOURCE
++ # include <floss.h>
++ # define ROOT_UID 65535
++ #else
++ # define ROOT_UID 0
++ #endif
++
+ #ifdef __EMX__ /* hand-edited config.h for OS/2 with EMX */
+ # include "os_os2_cfg.h"
+ #endif
+*** ../vim-7.0.201/src/version.c Tue Feb 20 04:46:32 2007
+--- src/version.c Tue Feb 27 16:44:14 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 202,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+214. Your MCI "Circle of Friends" are all Hayes-compatible.
+
+ /// 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.0.203
+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.0.203
+Problem: 0x80 characters in a register are not handled correctly for the
+ "@" command.
+Solution: Escape CSI and 0x80 characters. (Yukihiro Nakadaira)
+Files: src/ops.c
+
+
+*** ../vim-7.0.202/src/ops.c Tue Nov 7 18:43:10 2006
+--- src/ops.c Tue Feb 27 17:24:02 2007
+***************
+*** 96,102 ****
+ #endif
+ static int stuff_yank __ARGS((int, char_u *));
+ static void put_reedit_in_typebuf __ARGS((int silent));
+! static int put_in_typebuf __ARGS((char_u *s, int colon, int silent));
+ static void stuffescaped __ARGS((char_u *arg, int literally));
+ #ifdef FEAT_MBYTE
+ static void mb_adjust_opend __ARGS((oparg_T *oap));
+--- 96,103 ----
+ #endif
+ static int stuff_yank __ARGS((int, char_u *));
+ static void put_reedit_in_typebuf __ARGS((int silent));
+! static int put_in_typebuf __ARGS((char_u *s, int esc, int colon,
+! int silent));
+ static void stuffescaped __ARGS((char_u *arg, int literally));
+ #ifdef FEAT_MBYTE
+ static void mb_adjust_opend __ARGS((oparg_T *oap));
+***************
+*** 1174,1182 ****
+ /* When in Visual mode "'<,'>" will be prepended to the command.
+ * Remove it when it's already there. */
+ if (VIsual_active && STRNCMP(p, "'<,'>", 5) == 0)
+! retval = put_in_typebuf(p + 5, TRUE, silent);
+ else
+! retval = put_in_typebuf(p, TRUE, silent);
+ }
+ vim_free(p);
+ }
+--- 1175,1183 ----
+ /* When in Visual mode "'<,'>" will be prepended to the command.
+ * Remove it when it's already there. */
+ if (VIsual_active && STRNCMP(p, "'<,'>", 5) == 0)
+! retval = put_in_typebuf(p + 5, TRUE, TRUE, silent);
+ else
+! retval = put_in_typebuf(p, TRUE, TRUE, silent);
+ }
+ vim_free(p);
+ }
+***************
+*** 1187,1193 ****
+ p = get_expr_line();
+ if (p == NULL)
+ return FAIL;
+! retval = put_in_typebuf(p, colon, silent);
+ vim_free(p);
+ }
+ #endif
+--- 1188,1194 ----
+ p = get_expr_line();
+ if (p == NULL)
+ return FAIL;
+! retval = put_in_typebuf(p, TRUE, colon, silent);
+ vim_free(p);
+ }
+ #endif
+***************
+*** 1199,1205 ****
+ EMSG(_(e_noinstext));
+ return FAIL;
+ }
+! retval = put_in_typebuf(p, colon, silent);
+ vim_free(p);
+ }
+ else
+--- 1200,1206 ----
+ EMSG(_(e_noinstext));
+ return FAIL;
+ }
+! retval = put_in_typebuf(p, FALSE, colon, silent);
+ vim_free(p);
+ }
+ else
+***************
+*** 1217,1222 ****
+--- 1218,1225 ----
+ put_reedit_in_typebuf(silent);
+ for (i = y_current->y_size; --i >= 0; )
+ {
++ char_u *escaped;
++
+ /* insert NL between lines and after last line if type is MLINE */
+ if (y_current->y_type == MLINE || i < y_current->y_size - 1
+ || addcr)
+***************
+*** 1224,1231 ****
+ if (ins_typebuf((char_u *)"\n", remap, 0, TRUE, silent) == FAIL)
+ return FAIL;
+ }
+! if (ins_typebuf(y_current->y_array[i], remap, 0, TRUE, silent)
+! == FAIL)
+ return FAIL;
+ if (colon && ins_typebuf((char_u *)":", remap, 0, TRUE, silent)
+ == FAIL)
+--- 1227,1238 ----
+ if (ins_typebuf((char_u *)"\n", remap, 0, TRUE, silent) == FAIL)
+ return FAIL;
+ }
+! escaped = vim_strsave_escape_csi(y_current->y_array[i]);
+! if (escaped == NULL)
+! return FAIL;
+! retval = ins_typebuf(escaped, remap, 0, TRUE, silent);
+! vim_free(escaped);
+! if (retval == FAIL)
+ return FAIL;
+ if (colon && ins_typebuf((char_u *)":", remap, 0, TRUE, silent)
+ == FAIL)
+***************
+*** 1265,1272 ****
+ }
+
+ static int
+! put_in_typebuf(s, colon, silent)
+ char_u *s;
+ int colon; /* add ':' before the line */
+ int silent;
+ {
+--- 1272,1280 ----
+ }
+
+ static int
+! put_in_typebuf(s, esc, colon, silent)
+ char_u *s;
++ int esc; /* Escape CSI characters */
+ int colon; /* add ':' before the line */
+ int silent;
+ {
+***************
+*** 1276,1282 ****
+ if (colon)
+ retval = ins_typebuf((char_u *)"\n", REMAP_YES, 0, TRUE, silent);
+ if (retval == OK)
+! retval = ins_typebuf(s, REMAP_YES, 0, TRUE, silent);
+ if (colon && retval == OK)
+ retval = ins_typebuf((char_u *)":", REMAP_YES, 0, TRUE, silent);
+ return retval;
+--- 1284,1303 ----
+ if (colon)
+ retval = ins_typebuf((char_u *)"\n", REMAP_YES, 0, TRUE, silent);
+ if (retval == OK)
+! {
+! char_u *p;
+!
+! if (esc)
+! p = vim_strsave_escape_csi(s);
+! else
+! p = s;
+! if (p == NULL)
+! retval = FAIL;
+! else
+! retval = ins_typebuf(p, REMAP_YES, 0, TRUE, silent);
+! if (esc)
+! vim_free(p);
+! }
+ if (colon && retval == OK)
+ retval = ins_typebuf((char_u *)":", REMAP_YES, 0, TRUE, silent);
+ return retval;
+*** ../vim-7.0.202/src/version.c Tue Feb 27 16:51:07 2007
+--- src/version.c Tue Feb 27 17:22:13 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 203,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+215. Your mouse-clicking forearm rivals Popeye's.
+
+ /// 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.0.204
+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.0.204
+Problem: Cscope: Parsing matches for listing isn't done properly.
+Solution: Check for line number being found. (Yu Zhao)
+Files: src/if_cscope.c
+
+
+*** ../vim-7.0.203/src/if_cscope.c Tue Jan 16 15:17:43 2007
+--- src/if_cscope.c Tue Feb 27 17:56:49 2007
+***************
+*** 1932,1945 ****
+ if ((fname = strtok(NULL, (const char *)"\t")) == NULL)
+ continue;
+ if ((lno = strtok(NULL, (const char *)"\t")) == NULL)
+! {
+! /* if NULL, then no "extra", although in cscope's case, there
+! * should always be "extra".
+! */
+! extra = NULL;
+! }
+!
+! extra = lno + strlen(lno) + 1;
+
+ lno[strlen(lno)-2] = '\0'; /* ignore ;" at the end */
+
+--- 1932,1939 ----
+ if ((fname = strtok(NULL, (const char *)"\t")) == NULL)
+ continue;
+ if ((lno = strtok(NULL, (const char *)"\t")) == NULL)
+! continue;
+! extra = strtok(NULL, (const char *)"\t");
+
+ lno[strlen(lno)-2] = '\0'; /* ignore ;" at the end */
+
+*** ../vim-7.0.203/src/version.c Tue Feb 27 17:25:28 2007
+--- src/version.c Tue Feb 27 18:03:48 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 204,
+ /**/
+
+--
+I noticed my daughter's Disney-net password on a sticky note:
+"MickeyMinnieGoofyPluto". I asked her why it was so long.
+"Because they say it has to have at least four characters."
+
+ /// 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.0.205
+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.0.205 (after 7.0.203)
+Problem: Can't compile.
+Solution: Always include the vim_strsave_escape_csi function.
+Files: src/getchar.c
+
+
+*** ../vim-7.0.204/src/getchar.c Tue Dec 5 21:45:20 2006
+--- src/getchar.c Tue Feb 27 23:04:38 2007
+***************
+*** 4401,4407 ****
+ }
+ #endif
+
+- #if defined(FEAT_EVAL) || defined(PROTO)
+ /*
+ * Copy "p" to allocated memory, escaping K_SPECIAL and CSI so that the result
+ * can be put in the typeahead buffer.
+--- 4405,4410 ----
+***************
+*** 4440,4446 ****
+ }
+ return res;
+ }
+- #endif
+
+ /*
+ * Write map commands for the current mappings to an .exrc file.
+--- 4443,4448 ----
+*** ../vim-7.0.204/src/version.c Tue Feb 27 18:11:55 2007
+--- src/version.c Tue Feb 27 23:05:15 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 205,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+218. Your spouse hands you a gift wrapped magnet with your PC's name
+ on it and you accuse him or her of genocide.
+
+ /// 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.0.206
+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.0.206 (after 7.0.058)
+Problem: Some characters of the "gb18030" encoding are not handled
+ properly.
+Solution: Do not use "cp936" as an alias for "gb18030" encoding. Instead
+ initialize 'encoding' to "cp936".
+Files: src/mbyte.c, src/option.c
+
+
+*** ../vim-7.0.205/src/mbyte.c Tue Dec 5 22:09:02 2006
+--- src/mbyte.c Tue Feb 27 16:27:44 2007
+***************
+*** 364,370 ****
+ {"949", IDX_CP949},
+ {"936", IDX_CP936},
+ {"gbk", IDX_CP936},
+- {"gb18030", IDX_CP936}, /* only 99% the same */
+ {"950", IDX_CP950},
+ {"eucjp", IDX_EUC_JP},
+ {"unix-jis", IDX_EUC_JP},
+--- 364,369 ----
+*** ../vim-7.0.205/src/option.c Tue Oct 17 18:36:03 2006
+--- src/option.c Thu Mar 1 21:02:06 2007
+***************
+*** 3290,3295 ****
+--- 3290,3303 ----
+ * If not, go back to the default "latin1". */
+ save_enc = p_enc;
+ p_enc = p;
++ if (STRCMP(p_enc, "gb18030") == 0)
++ {
++ /* We don't support "gb18030", but "cp936" is a good substitute
++ * for practical purposes, thus use that. It's not an alias to
++ * still support conversion between gb18030 and utf-8. */
++ p_enc = vim_strsave((char_u *)"cp936");
++ vim_free(p);
++ }
+ if (mb_init() == NULL)
+ {
+ opt_idx = findoption((char_u *)"encoding");
+*** ../vim-7.0.205/src/version.c Tue Feb 27 23:06:44 2007
+--- src/version.c Fri Mar 2 19:58:04 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 206,
+ /**/
+
+--
+You can tune a file system, but you can't tuna fish
+ -- man tunefs
+
+ /// 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.0.207
+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.0.207
+Problem: After patch 2.0.203 CSI and K_SPECIAL characters are escaped when
+ recorded and then again when the register is executed.
+Solution: Remove escaping before putting the recorded characters in a
+ register. (Yukihiro Nakadaira)
+Files: src/getchar.c, src/ops.c, src/proto/getchar.pro
+
+
+*** ../vim-7.0.206/src/getchar.c Tue Feb 27 23:06:44 2007
+--- src/getchar.c Sun Mar 4 21:19:50 2007
+***************
+*** 4438,4443 ****
+--- 4442,4476 ----
+ *d = NUL;
+ }
+ return res;
++ }
++
++ /*
++ * Remove escaping from CSI and K_SPECIAL characters. Reverse of
++ * vim_strsave_escape_csi(). Works in-place.
++ */
++ void
++ vim_unescape_csi(p)
++ char_u *p;
++ {
++ char_u *s = p, *d = p;
++
++ while (*s != NUL)
++ {
++ if (s[0] == K_SPECIAL && s[1] == KS_SPECIAL && s[2] == KE_FILLER)
++ {
++ *d++ = K_SPECIAL;
++ s += 3;
++ }
++ else if ((s[0] == K_SPECIAL || s[0] == CSI)
++ && s[1] == KS_EXTRA && s[2] == (int)KE_CSI)
++ {
++ *d++ = CSI;
++ s += 3;
++ }
++ else
++ *d++ = *s++;
++ }
++ *d = NUL;
+ }
+
+ /*
+*** ../vim-7.0.206/src/ops.c Tue Feb 27 17:25:28 2007
+--- src/ops.c Sun Mar 4 21:23:47 2007
+***************
+*** 1042,1047 ****
+--- 1042,1050 ----
+ retval = FAIL;
+ else
+ {
++ /* Remove escaping for CSI and K_SPECIAL in multi-byte chars. */
++ vim_unescape_csi(p);
++
+ /*
+ * We don't want to change the default register here, so save and
+ * restore the current register name.
+*** ../vim-7.0.206/src/proto/getchar.pro Sun Apr 30 20:38:15 2006
+--- src/proto/getchar.pro Sun Mar 4 21:19:41 2007
+***************
+*** 56,61 ****
+--- 56,62 ----
+ extern int ExpandMappings __ARGS((regmatch_T *regmatch, int *num_file, char_u ***file));
+ extern int check_abbr __ARGS((int c, char_u *ptr, int col, int mincol));
+ extern char_u *vim_strsave_escape_csi __ARGS((char_u *p));
++ extern void vim_unescape_csi __ARGS((char_u *p));
+ extern int makemap __ARGS((FILE *fd, buf_T *buf));
+ extern int put_escstr __ARGS((FILE *fd, char_u *strstart, int what));
+ extern void check_map_keycodes __ARGS((void));
+*** ../vim-7.0.206/src/version.c Fri Mar 2 20:00:06 2007
+--- src/version.c Sun Mar 4 21:24:26 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 207,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+251. You've never seen your closest friends who usually live WAY too far away.
+
+ /// 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.0.208
+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.0.208 (after 7.0.171 and 7.0.180)
+Problem: VMS: changes to path handling cause more trouble than they solve.
+Solution: Revert changes.
+Files: src/buffer.c, src/memline.c, src/os_unix.c
+
+
+*** ../vim-7.0.207/src/buffer.c Tue Nov 28 17:44:51 2006
+--- src/buffer.c Mon Mar 5 21:34:41 2007
+***************
+*** 4145,4157 ****
+ /*
+ * Force expanding the path always for Unix, because symbolic links may
+ * mess up the full path name, even though it starts with a '/'.
+- * Also expand always for VMS, it may have alternate paths that need to be
+- * resolved.
+ * Also expand when there is ".." in the file name, try to remove it,
+ * because "c:/src/../README" is equal to "c:/README".
+ * For MS-Windows also expand names like "longna~1" to "longname".
+ */
+! #if defined(UNIX) || defined(VMS)
+ return FullName_save(fname, TRUE);
+ #else
+ if (!vim_isAbsName(fname) || strstr((char *)fname, "..") != NULL
+--- 4145,4155 ----
+ /*
+ * Force expanding the path always for Unix, because symbolic links may
+ * mess up the full path name, even though it starts with a '/'.
+ * Also expand when there is ".." in the file name, try to remove it,
+ * because "c:/src/../README" is equal to "c:/README".
+ * For MS-Windows also expand names like "longna~1" to "longname".
+ */
+! #ifdef UNIX
+ return FullName_save(fname, TRUE);
+ #else
+ if (!vim_isAbsName(fname) || strstr((char *)fname, "..") != NULL
+*** ../vim-7.0.207/src/memline.c Tue Feb 13 04:03:05 2007
+--- src/memline.c Mon Mar 5 21:34:41 2007
+***************
+*** 3592,3600 ****
+ #else
+ (buf->b_p_sn || buf->b_shortname),
+ #endif
+! #if defined(VMS) || defined(RISCOS)
+! /* Avoid problems if fname has special chars, eg <Wimp$Scrap>.
+! * For VMS always use full path for swapfile. */
+ ffname,
+ #else
+ # ifdef HAVE_READLINK
+--- 3592,3599 ----
+ #else
+ (buf->b_p_sn || buf->b_shortname),
+ #endif
+! #ifdef RISCOS
+! /* Avoid problems if fname has special chars, eg <Wimp$Scrap> */
+ ffname,
+ #else
+ # ifdef HAVE_READLINK
+*** ../vim-7.0.207/src/os_unix.c Tue Feb 27 16:51:07 2007
+--- src/os_unix.c Mon Mar 5 21:40:31 2007
+***************
+*** 2214,2262 ****
+ int len;
+ int force; /* also expand when already absolute path */
+ {
+- #ifdef VMS
+- /*
+- * VMS does this in a completely different way.
+- *
+- * By default a file found in a complex path is written to the first
+- * directory in the path and not to the original directory. This
+- * behaviour should be avoided for the existing files and we need to find
+- * the exact path of the edited file.
+- */
+- {
+- char_u *fixed_fname = vms_fixfilename(fname);
+- int fd = mch_open((char *)fixed_fname, O_RDONLY | O_EXTRA, 0);
+-
+- if (fd > 0)
+- {
+- char nbuf[MAXNAMLEN];
+-
+- /* File exists, use getname() to get the real name. */
+- if (getname(fd, nbuf))
+- vim_strncpy(fixed_fname, (char_u *)nbuf, (size_t)(len - 1));
+- close(fd);
+- }
+-
+- if (STRLEN(fixed_fname) >= len)
+- return FAIL;
+-
+- STRCPY(buf, fixed_fname);
+- }
+-
+- #else /* not VMS */
+-
+ int l;
+! # ifdef OS2
+ int only_drive; /* file name is only a drive letter */
+! # endif
+! # ifdef HAVE_FCHDIR
+ int fd = -1;
+ static int dont_fchdir = FALSE; /* TRUE when fchdir() doesn't work */
+! # endif
+ char_u olddir[MAXPATHL];
+ char_u *p;
+ int retval = OK;
+
+ /* expand it if forced or not an absolute path */
+ if (force || !mch_isFullName(fname))
+ {
+--- 2214,2235 ----
+ int len;
+ int force; /* also expand when already absolute path */
+ {
+ int l;
+! #ifdef OS2
+ int only_drive; /* file name is only a drive letter */
+! #endif
+! #ifdef HAVE_FCHDIR
+ int fd = -1;
+ static int dont_fchdir = FALSE; /* TRUE when fchdir() doesn't work */
+! #endif
+ char_u olddir[MAXPATHL];
+ char_u *p;
+ int retval = OK;
+
++ #ifdef VMS
++ fname = vms_fixfilename(fname);
++ #endif
++
+ /* expand it if forced or not an absolute path */
+ if (force || !mch_isFullName(fname))
+ {
+***************
+*** 2265,2280 ****
+ * and then do the getwd() (and get back to where we were).
+ * This will get the correct path name with "../" things.
+ */
+! # ifdef OS2
+ only_drive = 0;
+ if (((p = vim_strrchr(fname, '/')) != NULL)
+ || ((p = vim_strrchr(fname, '\\')) != NULL)
+ || (((p = vim_strchr(fname, ':')) != NULL) && ++only_drive))
+! # else
+ if ((p = vim_strrchr(fname, '/')) != NULL)
+! # endif
+ {
+! # ifdef HAVE_FCHDIR
+ /*
+ * Use fchdir() if possible, it's said to be faster and more
+ * reliable. But on SunOS 4 it might not work. Check this by
+--- 2238,2253 ----
+ * and then do the getwd() (and get back to where we were).
+ * This will get the correct path name with "../" things.
+ */
+! #ifdef OS2
+ only_drive = 0;
+ if (((p = vim_strrchr(fname, '/')) != NULL)
+ || ((p = vim_strrchr(fname, '\\')) != NULL)
+ || (((p = vim_strchr(fname, ':')) != NULL) && ++only_drive))
+! #else
+ if ((p = vim_strrchr(fname, '/')) != NULL)
+! #endif
+ {
+! #ifdef HAVE_FCHDIR
+ /*
+ * Use fchdir() if possible, it's said to be faster and more
+ * reliable. But on SunOS 4 it might not work. Check this by
+***************
+*** 2290,2303 ****
+ dont_fchdir = TRUE; /* don't try again */
+ }
+ }
+! # endif
+
+ /* Only change directory when we are sure we can return to where
+ * we are now. After doing "su" chdir(".") might not work. */
+ if (
+! # ifdef HAVE_FCHDIR
+ fd < 0 &&
+! # endif
+ (mch_dirname(olddir, MAXPATHL) == FAIL
+ || mch_chdir((char *)olddir) != 0))
+ {
+--- 2263,2276 ----
+ dont_fchdir = TRUE; /* don't try again */
+ }
+ }
+! #endif
+
+ /* Only change directory when we are sure we can return to where
+ * we are now. After doing "su" chdir(".") might not work. */
+ if (
+! #ifdef HAVE_FCHDIR
+ fd < 0 &&
+! #endif
+ (mch_dirname(olddir, MAXPATHL) == FAIL
+ || mch_chdir((char *)olddir) != 0))
+ {
+***************
+*** 2306,2312 ****
+ }
+ else
+ {
+! # ifdef OS2
+ /*
+ * compensate for case where ':' from "D:" was the only
+ * path separator detected in the file name; the _next_
+--- 2279,2285 ----
+ }
+ else
+ {
+! #ifdef OS2
+ /*
+ * compensate for case where ':' from "D:" was the only
+ * path separator detected in the file name; the _next_
+***************
+*** 2314,2320 ****
+ */
+ if (only_drive)
+ p++;
+! # endif
+ /* The directory is copied into buf[], to be able to remove
+ * the file name without changing it (could be a string in
+ * read-only memory) */
+--- 2287,2293 ----
+ */
+ if (only_drive)
+ p++;
+! #endif
+ /* The directory is copied into buf[], to be able to remove
+ * the file name without changing it (could be a string in
+ * read-only memory) */
+***************
+*** 2329,2342 ****
+ fname = p + 1;
+ *buf = NUL;
+ }
+! # ifdef OS2
+ if (only_drive)
+ {
+ p--;
+ if (retval != FAIL)
+ fname--;
+ }
+! # endif
+ }
+ }
+ if (mch_dirname(buf, len) == FAIL)
+--- 2302,2315 ----
+ fname = p + 1;
+ *buf = NUL;
+ }
+! #ifdef OS2
+ if (only_drive)
+ {
+ p--;
+ if (retval != FAIL)
+ fname--;
+ }
+! #endif
+ }
+ }
+ if (mch_dirname(buf, len) == FAIL)
+***************
+*** 2346,2359 ****
+ }
+ if (p != NULL)
+ {
+! # ifdef HAVE_FCHDIR
+ if (fd >= 0)
+ {
+ l = fchdir(fd);
+ close(fd);
+ }
+ else
+! # endif
+ l = mch_chdir((char *)olddir);
+ if (l != 0)
+ EMSG(_(e_prev_dir));
+--- 2319,2332 ----
+ }
+ if (p != NULL)
+ {
+! #ifdef HAVE_FCHDIR
+ if (fd >= 0)
+ {
+ l = fchdir(fd);
+ close(fd);
+ }
+ else
+! #endif
+ l = mch_chdir((char *)olddir);
+ if (l != 0)
+ EMSG(_(e_prev_dir));
+***************
+*** 2362,2373 ****
+--- 2335,2348 ----
+ l = STRLEN(buf);
+ if (l >= len)
+ retval = FAIL;
++ #ifndef VMS
+ else
+ {
+ if (l > 0 && buf[l - 1] != '/' && *fname != NUL
+ && STRCMP(fname, ".") != 0)
+ STRCAT(buf, "/");
+ }
++ #endif
+ }
+
+ /* Catch file names which are too long. */
+***************
+*** 2377,2384 ****
+ /* Do not append ".", "/dir/." is equal to "/dir". */
+ if (STRCMP(fname, ".") != 0)
+ STRCAT(buf, fname);
+-
+- #endif /* VMS */
+
+ return OK;
+ }
+--- 2352,2357 ----
+*** ../vim-7.0.207/src/version.c Sun Mar 4 21:25:44 2007
+--- src/version.c Tue Mar 6 20:22:52 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 208,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+262. Your computer has it's own phone line - but your daughter doesn't.
+
+ /// 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.0.209
+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.0.209
+Problem: When replacing a line through Python the cursor may end up beyond
+ the end of the line.
+Solution: Check the cursor column after replacing the line.
+Files: src/if_python.c
+
+
+*** ../vim-7.0.208/src/if_python.c Tue Oct 3 15:02:11 2006
+--- src/if_python.c Tue Mar 6 23:00:53 2007
+***************
+*** 2410,2415 ****
+--- 2410,2417 ----
+ curwin->w_cursor.lnum = lo;
+ check_cursor();
+ }
++ else
++ check_cursor_col();
+ changed_cline_bef_curs();
+ }
+ invalidate_botline();
+***************
+*** 2486,2491 ****
+--- 2488,2497 ----
+ changed_bytes((linenr_T)n, 0);
+
+ curbuf = savebuf;
++
++ /* Check that the cursor is not beyond the end of the line now. */
++ if (buf == curwin->w_buffer)
++ check_cursor_col();
+
+ if (PyErr_Occurred() || VimErrorCheck())
+ return FAIL;
+*** ../vim-7.0.208/src/version.c Tue Mar 6 20:27:03 2007
+--- src/version.c Thu Mar 8 10:16:23 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 209,
+ /**/
+
+--
+In his lifetime van Gogh painted 486 oil paintings. Oddly enough, 8975
+of them are to be found in the United States.
+
+ /// 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.0.210
+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.0.210
+Problem: ":cbuffer" and ":lbuffer" always fail when the buffer is modified.
+ (Gary Johnson)
+Solution: Support adding a !. (Yegappan Lakshmanan)
+Files: runtime/doc/quickfix.txt, src/ex_cmds.h
+
+
+*** ../vim-7.0.209/runtime/doc/quickfix.txt Sun May 7 17:15:46 2006
+--- runtime/doc/quickfix.txt Thu Mar 8 10:14:54 2007
+***************
+*** 1,4 ****
+! *quickfix.txt* For Vim version 7.0. Last change: 2006 Apr 30
+
+
+ VIM REFERENCE MANUAL by Bram Moolenaar
+--- 1,4 ----
+! *quickfix.txt* For Vim version 7.0. Last change: 2006 Jul 18
+
+
+ VIM REFERENCE MANUAL by Bram Moolenaar
+***************
+*** 178,192 ****
+ current window is used instead of the quickfix list.
+
+ *:cb* *:cbuffer* *E681*
+! :cb[uffer] [bufnr] Read the error list from the current buffer.
+ When [bufnr] is given it must be the number of a
+ loaded buffer. That buffer will then be used instead
+ of the current buffer.
+ A range can be specified for the lines to be used.
+ Otherwise all lines in the buffer are used.
+
+ *:lb* *:lbuffer*
+! :lb[uffer] [bufnr] Same as ":cbuffer", except the location list for the
+ current window is used instead of the quickfix list.
+
+ *:cgetb* *:cgetbuffer*
+--- 178,193 ----
+ current window is used instead of the quickfix list.
+
+ *:cb* *:cbuffer* *E681*
+! :cb[uffer][!] [bufnr] Read the error list from the current buffer.
+ When [bufnr] is given it must be the number of a
+ loaded buffer. That buffer will then be used instead
+ of the current buffer.
+ A range can be specified for the lines to be used.
+ Otherwise all lines in the buffer are used.
++ See |:cc| for [!].
+
+ *:lb* *:lbuffer*
+! :lb[uffer][!] [bufnr] Same as ":cbuffer", except the location list for the
+ current window is used instead of the quickfix list.
+
+ *:cgetb* *:cgetbuffer*
+*** ../vim-7.0.209/src/ex_cmds.h Thu Jun 22 21:15:46 2006
+--- src/ex_cmds.h Wed Mar 7 21:53:27 2007
+***************
+*** 198,204 ****
+ EX(CMD_catch, "catch", ex_catch,
+ EXTRA|SBOXOK|CMDWIN),
+ EX(CMD_cbuffer, "cbuffer", ex_cbuffer,
+! RANGE|NOTADR|WORD1|TRLBAR),
+ EX(CMD_cc, "cc", ex_cc,
+ RANGE|NOTADR|COUNT|TRLBAR|BANG),
+ EX(CMD_cclose, "cclose", ex_cclose,
+--- 198,204 ----
+ EX(CMD_catch, "catch", ex_catch,
+ EXTRA|SBOXOK|CMDWIN),
+ EX(CMD_cbuffer, "cbuffer", ex_cbuffer,
+! BANG|RANGE|NOTADR|WORD1|TRLBAR),
+ EX(CMD_cc, "cc", ex_cc,
+ RANGE|NOTADR|COUNT|TRLBAR|BANG),
+ EX(CMD_cclose, "cclose", ex_cclose,
+***************
+*** 498,504 ****
+ EX(CMD_later, "later", ex_later,
+ TRLBAR|EXTRA|NOSPC|CMDWIN),
+ EX(CMD_lbuffer, "lbuffer", ex_cbuffer,
+! RANGE|NOTADR|WORD1|TRLBAR),
+ EX(CMD_lcd, "lcd", ex_cd,
+ BANG|FILE1|TRLBAR|CMDWIN),
+ EX(CMD_lchdir, "lchdir", ex_cd,
+--- 498,504 ----
+ EX(CMD_later, "later", ex_later,
+ TRLBAR|EXTRA|NOSPC|CMDWIN),
+ EX(CMD_lbuffer, "lbuffer", ex_cbuffer,
+! BANG|RANGE|NOTADR|WORD1|TRLBAR),
+ EX(CMD_lcd, "lcd", ex_cd,
+ BANG|FILE1|TRLBAR|CMDWIN),
+ EX(CMD_lchdir, "lchdir", ex_cd,
+*** ../vim-7.0.209/src/version.c Thu Mar 8 10:25:03 2007
+--- src/version.c Thu Mar 8 11:04:35 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 210,
+ /**/
+
+--
+press CTRL-ALT-DEL for more information
+
+ /// 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.0.211
+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.0.211
+Problem: With ":set cindent noai bs=0" using CTRL-U in Insert mode will
+ delete auto-indent. After ":set ai" it doesn't.
+Solution: Also check 'cindent' being set. (Ryan Lortie)
+Files: src/edit.c
+
+
+*** ../vim-7.0.210/src/edit.c Tue Feb 20 03:52:04 2007
+--- src/edit.c Thu Mar 8 13:10:42 2007
+***************
+*** 8250,8256 ****
+ #endif
+ mincol = 0;
+ /* keep indent */
+! if (mode == BACKSPACE_LINE && curbuf->b_p_ai
+ #ifdef FEAT_RIGHTLEFT
+ && !revins_on
+ #endif
+--- 8250,8261 ----
+ #endif
+ mincol = 0;
+ /* keep indent */
+! if (mode == BACKSPACE_LINE
+! && (curbuf->b_p_ai
+! #ifdef FEAT_CINDENT
+! || cindent_on()
+! #endif
+! )
+ #ifdef FEAT_RIGHTLEFT
+ && !revins_on
+ #endif
+*** ../vim-7.0.210/src/version.c Thu Mar 8 11:05:32 2007
+--- src/version.c Thu Mar 8 13:14:13 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 211,
+ /**/
+
+--
+Microsoft: "Windows NT 4.0 now has the same user-interface as Windows 95"
+ Windows 95: "Press CTRL-ALT-DEL to reboot"
+Windows NT 4.0: "Press CTRL-ALT-DEL to login"
+
+ /// 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.0.212
+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.0.212
+Problem: The GUI can't be terminated with SIGTERM. (Mark Logan)
+Solution: Use the signal protection in the GUI as in the console, allow
+ signals when waiting for 100 msec or longer.
+Files: src/ui.c
+
+
+*** ../vim-7.0.211/src/ui.c Tue Aug 29 17:28:56 2006
+--- src/ui.c Thu Mar 8 13:24:17 2007
+***************
+*** 166,175 ****
+ }
+ #endif
+
+! /* When doing a blocking wait there is no need for CTRL-C to interrupt
+! * something, don't let it set got_int when it was mapped. */
+! if (mapped_ctrl_c && (wtime == -1 || wtime > 100L))
+! ctrl_c_interrupts = FALSE;
+
+ #ifdef FEAT_GUI
+ if (gui.in_use)
+--- 166,182 ----
+ }
+ #endif
+
+! /* If we are going to wait for some time or block... */
+! if (wtime == -1 || wtime > 100L)
+! {
+! /* ... allow signals to kill us. */
+! (void)vim_handle_signal(SIGNAL_UNBLOCK);
+!
+! /* ... there is no need for CTRL-C to interrupt something, don't let
+! * it set got_int when it was mapped. */
+! if (mapped_ctrl_c)
+! ctrl_c_interrupts = FALSE;
+! }
+
+ #ifdef FEAT_GUI
+ if (gui.in_use)
+***************
+*** 183,198 ****
+ else
+ # endif
+ {
+- if (wtime == -1 || wtime > 100L)
+- /* allow signals to kill us */
+- (void)vim_handle_signal(SIGNAL_UNBLOCK);
+ retval = mch_inchar(buf, maxlen, wtime, tb_change_cnt);
+- if (wtime == -1 || wtime > 100L)
+- /* block SIGHUP et al. */
+- (void)vim_handle_signal(SIGNAL_BLOCK);
+ }
+ #endif
+
+ ctrl_c_interrupts = TRUE;
+
+ #ifdef NO_CONSOLE_INPUT
+--- 190,203 ----
+ else
+ # endif
+ {
+ retval = mch_inchar(buf, maxlen, wtime, tb_change_cnt);
+ }
+ #endif
+
++ if (wtime == -1 || wtime > 100L)
++ /* block SIGHUP et al. */
++ (void)vim_handle_signal(SIGNAL_BLOCK);
++
+ ctrl_c_interrupts = TRUE;
+
+ #ifdef NO_CONSOLE_INPUT
+*** ../vim-7.0.211/src/version.c Thu Mar 8 13:15:08 2007
+--- src/version.c Thu Mar 8 13:37:06 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 212,
+ /**/
+
+--
+This is an airconditioned room, do not open Windows.
+
+ /// 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.0.213
+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.0.213
+Problem: When 'spellfile' has two regions that use the same sound folding
+ using "z=" will cause memory to be freed twice. (Mark Woodward)
+Solution: Clear the hashtable properly so that the items are only freed once.
+Files: src/spell.c
+
+
+*** ../vim-7.0.212/src/spell.c Thu Sep 14 10:48:00 2006
+--- src/spell.c Thu Mar 8 14:54:46 2007
+***************
+*** 13094,13100 ****
+--- 13094,13103 ----
+ vim_free(HI2SFT(hi));
+ --todo;
+ }
++
++ /* Clear the hashtable, it may also be used by another region. */
+ hash_clear(&slang->sl_sounddone);
++ hash_init(&slang->sl_sounddone);
+ }
+ }
+ }
+*** ../vim-7.0.212/src/version.c Thu Mar 8 13:41:25 2007
+--- src/version.c Thu Mar 8 14:53:40 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 213,
+ /**/
+
+--
+The software said it requires Windows 95 or better, so I installed Linux.
+
+ /// 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.0.214
+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.0.214
+Problem: When using <f-args> in a user command it's not possible to have an
+ argument end in '\ '.
+Solution: Change the handling of backslashes. (Yakov Lerner)
+Files: runtime/doc/map.txt, src/ex_docmd.c
+
+
+*** ../vim-7.0.213/runtime/doc/map.txt Sun May 7 16:57:11 2006
+--- runtime/doc/map.txt Thu Mar 8 18:00:26 2007
+***************
+*** 1,4 ****
+! *map.txt* For Vim version 7.0. Last change: 2006 May 03
+
+
+ VIM REFERENCE MANUAL by Bram Moolenaar
+--- 1,4 ----
+! *map.txt* For Vim version 7.0. Last change: 2007 Mar 08
+
+
+ VIM REFERENCE MANUAL by Bram Moolenaar
+***************
+*** 1303,1314 ****
+ <q-args>) then the value is quoted in such a way as to make it a valid value
+ for use in an expression. This uses the argument as one single value.
+ When there is no argument <q-args> is an empty string.
+!
+ To allow commands to pass their arguments on to a user-defined function, there
+ is a special form <f-args> ("function args"). This splits the command
+ arguments at spaces and Tabs, quotes each argument individually, and the
+ <f-args> sequence is replaced by the comma-separated list of quoted arguments.
+ See the Mycmd example below. If no arguments are given <f-args> is removed.
+
+ Examples >
+
+--- 1319,1346 ----
+ <q-args>) then the value is quoted in such a way as to make it a valid value
+ for use in an expression. This uses the argument as one single value.
+ When there is no argument <q-args> is an empty string.
+! *<f-args>*
+ To allow commands to pass their arguments on to a user-defined function, there
+ is a special form <f-args> ("function args"). This splits the command
+ arguments at spaces and Tabs, quotes each argument individually, and the
+ <f-args> sequence is replaced by the comma-separated list of quoted arguments.
+ See the Mycmd example below. If no arguments are given <f-args> is removed.
++ To embed whitespace into an argument of <f-args>, prepend a backslash.
++ <f-args> replaces every pair of backslashes (\\) with one backslash. A
++ backslash followed by a character other than white space or a backslash
++ remains unmodified. Overview:
++
++ command <f-args> ~
++ XX ab 'ab'
++ XX a\b 'a\b'
++ XX a\ b 'a b'
++ XX a\ b 'a ', 'b'
++ XX a\\b 'a\b'
++ XX a\\ b 'a\', 'b'
++ XX a\\\b 'a\\b'
++ XX a\\\ b 'a\ b'
++ XX a\\\\b 'a\\b'
++ XX a\\\\ b 'a\\', 'b'
+
+ Examples >
+
+*** ../vim-7.0.213/src/ex_docmd.c Tue Nov 28 21:41:19 2006
+--- src/ex_docmd.c Thu Mar 8 17:49:11 2007
+***************
+*** 5551,5556 ****
+--- 5551,5559 ----
+ mch_memmove(cmd, cmd + 1, (gap->ga_len - i) * sizeof(ucmd_T));
+ }
+
++ /*
++ * split and quote args for <f-args>
++ */
+ static char_u *
+ uc_split_args(arg, lenp)
+ char_u *arg;
+***************
+*** 5567,5573 ****
+
+ while (*p)
+ {
+! if (p[0] == '\\' && vim_iswhite(p[1]))
+ {
+ len += 1;
+ p += 2;
+--- 5570,5581 ----
+
+ while (*p)
+ {
+! if (p[0] == '\\' && p[1] == '\\')
+! {
+! len += 2;
+! p += 2;
+! }
+! else if (p[0] == '\\' && vim_iswhite(p[1]))
+ {
+ len += 1;
+ p += 2;
+***************
+*** 5603,5609 ****
+ *q++ = '"';
+ while (*p)
+ {
+! if (p[0] == '\\' && vim_iswhite(p[1]))
+ {
+ *q++ = p[1];
+ p += 2;
+--- 5611,5623 ----
+ *q++ = '"';
+ while (*p)
+ {
+! if (p[0] == '\\' && p[1] == '\\')
+! {
+! *q++ = '\\';
+! *q++ = '\\';
+! p += 2;
+! }
+! else if (p[0] == '\\' && vim_iswhite(p[1]))
+ {
+ *q++ = p[1];
+ p += 2;
+***************
+*** 5735,5741 ****
+ }
+
+ break;
+! case 2: /* Quote and split */
+ /* This is hard, so only do it once, and cache the result */
+ if (*split_buf == NULL)
+ *split_buf = uc_split_args(eap->arg, split_len);
+--- 5749,5755 ----
+ }
+
+ break;
+! case 2: /* Quote and split (<f-args>) */
+ /* This is hard, so only do it once, and cache the result */
+ if (*split_buf == NULL)
+ *split_buf = uc_split_args(eap->arg, split_len);
+*** ../vim-7.0.213/src/version.c Thu Mar 8 14:54:52 2007
+--- src/version.c Thu Mar 8 18:11:47 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 214,
+ /**/
+
+--
+Microsoft's definition of a boolean: TRUE, FALSE, MAYBE
+"Embrace and extend"...?
+
+ /// 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.0.216
+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.0.216
+Problem: ":tab wincmd ]" does not open a tab page. (Tony Mechelynck)
+Solution: Copy the cmdmod.tab value to postponed_split_tab and use it.
+Files: src/globals.h, src/ex_docmd.c, src/if_cscope.c, src/window.c
+
+
+*** ../vim-7.0.215/src/globals.h Wed Feb 7 03:42:37 2007
+--- src/globals.h Sun Mar 11 15:27:12 2007
+***************
+*** 1030,1035 ****
+--- 1030,1036 ----
+ #ifdef FEAT_WINDOWS
+ EXTERN int postponed_split INIT(= 0); /* for CTRL-W CTRL-] command */
+ EXTERN int postponed_split_flags INIT(= 0); /* args for win_split() */
++ EXTERN int postponed_split_tab INIT(= 0); /* cmdmod.tab */
+ # ifdef FEAT_QUICKFIX
+ EXTERN int g_do_tagpreview INIT(= 0); /* for tag preview commands:
+ height of preview window */
+*** ../vim-7.0.215/src/ex_docmd.c Thu Mar 8 18:16:54 2007
+--- src/ex_docmd.c Sun Mar 11 15:29:06 2007
+***************
+*** 7980,7987 ****
+--- 7980,7989 ----
+ {
+ /* Pass flags on for ":vertical wincmd ]". */
+ postponed_split_flags = cmdmod.split;
++ postponed_split_tab = cmdmod.tab;
+ do_window(*eap->arg, eap->addr_count > 0 ? eap->line2 : 0L, xchar);
+ postponed_split_flags = 0;
++ postponed_split_tab = 0;
+ }
+ }
+ #endif
+***************
+*** 9189,9196 ****
+--- 9191,9200 ----
+ {
+ postponed_split = -1;
+ postponed_split_flags = cmdmod.split;
++ postponed_split_tab = cmdmod.tab;
+ ex_tag_cmd(eap, cmdnames[eap->cmdidx].cmd_name + 1);
+ postponed_split_flags = 0;
++ postponed_split_tab = 0;
+ }
+ #endif
+
+*** ../vim-7.0.215/src/if_cscope.c Tue Feb 27 18:11:55 2007
+--- src/if_cscope.c Sun Mar 11 15:29:57 2007
+***************
+*** 128,133 ****
+--- 128,134 ----
+ }
+ postponed_split = -1;
+ postponed_split_flags = cmdmod.split;
++ postponed_split_tab = cmdmod.tab;
+ }
+ #endif
+
+***************
+*** 135,140 ****
+--- 136,142 ----
+
+ #ifdef FEAT_WINDOWS
+ postponed_split_flags = 0;
++ postponed_split_tab = 0;
+ #endif
+ }
+
+*** ../vim-7.0.215/src/window.c Tue Feb 20 00:17:01 2007
+--- src/window.c Sun Mar 11 15:31:57 2007
+***************
+*** 3290,3300 ****
+ int
+ may_open_tabpage()
+ {
+! int n = cmdmod.tab;
+
+! if (cmdmod.tab != 0)
+ {
+ cmdmod.tab = 0; /* reset it to avoid doing it twice */
+ return win_new_tabpage(n);
+ }
+ return FAIL;
+--- 3290,3301 ----
+ int
+ may_open_tabpage()
+ {
+! int n = (cmdmod.tab == 0) ? postponed_split_tab : cmdmod.tab;
+
+! if (n != 0)
+ {
+ cmdmod.tab = 0; /* reset it to avoid doing it twice */
++ postponed_split_tab = 0;
+ return win_new_tabpage(n);
+ }
+ return FAIL;
+*** ../vim-7.0.215/src/version.c Thu Mar 8 20:39:02 2007
+--- src/version.c Sun Mar 11 15:50:04 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 216,
+ /**/
+
+--
+You were lucky to have a LAKE! There were a hundred and sixty of
+us living in a small shoebox in the middle of the road.
+
+ /// 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 ///