diff --git a/7.3.623 b/7.3.623 new file mode 100644 index 0000000..72aea71 --- /dev/null +++ b/7.3.623 @@ -0,0 +1,92 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.623 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.623 +Problem: Perl 5.14 commands crash Vim on MS-Windows. +Solution: Use perl_get_sv() instead of GvSV(). (Raymond Ko) +Files: src/if_perl.xs + + +*** ../vim-7.3.622/src/if_perl.xs 2012-03-16 19:34:43.000000000 +0100 +--- src/if_perl.xs 2012-08-08 13:15:29.000000000 +0200 +*************** +*** 76,81 **** +--- 76,87 ---- + # define EXTERN_C + #endif + ++ #if (PERL_REVISION == 5) && (PERL_VERSION >= 14) && defined(_MSC_VER) ++ /* Using PL_errgv to get the error message after perl_eval_sv() causes a crash ++ * with MSVC and Perl version 5.14. */ ++ # define AVOID_PL_ERRGV ++ #endif ++ + /* Compatibility hacks over */ + + static PerlInterpreter *perl_interp = NULL; +*************** +*** 796,802 **** +--- 802,812 ---- + + SvREFCNT_dec(sv); + ++ #ifdef AVOID_PL_ERRGV ++ err = SvPV(perl_get_sv("@", GV_ADD), length); ++ #else + err = SvPV(GvSV(PL_errgv), length); ++ #endif + + FREETMPS; + LEAVE; +*************** +*** 866,872 **** +--- 876,886 ---- + sv_catpvn(sv, "}", 1); + perl_eval_sv(sv, G_DISCARD | G_NOARGS); + SvREFCNT_dec(sv); ++ #ifdef AVOID_PL_ERRGV ++ str = SvPV(perl_get_sv("@", GV_ADD), length); ++ #else + str = SvPV(GvSV(PL_errgv), length); ++ #endif + if (length) + goto err; + +*************** +*** 880,886 **** +--- 894,904 ---- + sv_setpv(GvSV(PL_defgv), (char *)ml_get(i)); + PUSHMARK(sp); + perl_call_pv("VIM::perldo", G_SCALAR | G_EVAL); ++ #ifdef AVOID_PL_ERRGV ++ str = SvPV(perl_get_sv("@", GV_ADD), length); ++ #else + str = SvPV(GvSV(PL_errgv), length); ++ #endif + if (length) + break; + SPAGAIN; +*** ../vim-7.3.622/src/version.c 2012-08-02 21:48:20.000000000 +0200 +--- src/version.c 2012-08-08 13:08:10.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 623, + /**/ + +-- +Don't be humble ... you're not that great. + -- Golda Meir + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.624 b/7.3.624 new file mode 100644 index 0000000..f1150b6 --- /dev/null +++ b/7.3.624 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.624 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.624 +Problem: When cancelling input() it returns the third argument. That should + only happen for inputdialog(). +Solution: Check if inputdialog() was used. (Hirohito Higashi) +Files: src/eval.c + + +*** ../vim-7.3.623/src/eval.c 2012-07-25 16:46:59.000000000 +0200 +--- src/eval.c 2012-08-08 14:31:48.000000000 +0200 +*************** +*** 12966,12972 **** + rettv->vval.v_string = + getcmdline_prompt(inputsecret_flag ? NUL : '@', p, echo_attr, + xp_type, xp_arg); +! if (rettv->vval.v_string == NULL + && argvars[1].v_type != VAR_UNKNOWN + && argvars[2].v_type != VAR_UNKNOWN) + rettv->vval.v_string = vim_strsave(get_tv_string_buf( +--- 12966,12972 ---- + rettv->vval.v_string = + getcmdline_prompt(inputsecret_flag ? NUL : '@', p, echo_attr, + xp_type, xp_arg); +! if (inputdialog && rettv->vval.v_string == NULL + && argvars[1].v_type != VAR_UNKNOWN + && argvars[2].v_type != VAR_UNKNOWN) + rettv->vval.v_string = vim_strsave(get_tv_string_buf( +*** ../vim-7.3.623/src/version.c 2012-08-08 13:17:26.000000000 +0200 +--- src/version.c 2012-08-08 14:28:46.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 624, + /**/ + +-- +Your fault: core dumped + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.625 b/7.3.625 new file mode 100644 index 0000000..5334bc8 --- /dev/null +++ b/7.3.625 @@ -0,0 +1,140 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.625 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.625 +Problem: "gn" does not handle zero-width matches correctly. +Solution: Handle zero-width patterns specially. (Christian Brabandt) +Files: src/search.c + + +*** ../vim-7.3.624/src/search.c 2012-08-02 21:24:38.000000000 +0200 +--- src/search.c 2012-08-08 15:25:12.000000000 +0200 +*************** +*** 4546,4551 **** +--- 4546,4554 ---- + int visual_active = FALSE; + int flags = 0; + pos_T save_VIsual; ++ regmmatch_T regmatch; ++ int nmatched = 0; ++ int zerowidth = FALSE; + + + /* wrapping should not occur */ +*************** +*** 4581,4603 **** + orig_pos = pos = start_pos = curwin->w_cursor; + + /* + * The trick is to first search backwards and then search forward again, + * so that a match at the current cursor position will be correctly + * captured. + */ + for (i = 0; i < 2; i++) + { +- if (i && count == 1) +- flags = SEARCH_START; +- + if (forward) + dir = i; + else + dir = !i; + result = searchit(curwin, curbuf, &pos, (dir ? FORWARD : BACKWARD), + spats[last_idx].pat, (long) (i ? count : 1), +! SEARCH_KEEP | flags | (dir ? 0 : SEARCH_END), +! RE_SEARCH, 0, NULL); + + /* First search may fail, but then start searching from the + * beginning of the file (cursor might be on the search match) +--- 4584,4625 ---- + orig_pos = pos = start_pos = curwin->w_cursor; + + /* ++ * Check for zero-width pattern. ++ */ ++ if (search_regcomp(spats[last_idx].pat, RE_SEARCH, RE_SEARCH, ++ ((SEARCH_HIS + SEARCH_KEEP)), ®match) == FAIL) ++ return FAIL; ++ ++ /* Zero-width pattern should match somewhere, then we can check if start ++ * and end are in the same position. */ ++ nmatched = vim_regexec_multi(®match, curwin, curbuf, ++ curwin->w_cursor.lnum, (colnr_T)0, NULL); ++ if (called_emsg) ++ return FAIL; ++ if (nmatched && regmatch.startpos[0].lnum == regmatch.endpos[0].lnum ++ && regmatch.endpos[0].col == regmatch.startpos[0].col) ++ zerowidth = TRUE; ++ vim_free(regmatch.regprog); ++ ++ /* + * The trick is to first search backwards and then search forward again, + * so that a match at the current cursor position will be correctly + * captured. + */ + for (i = 0; i < 2; i++) + { + if (forward) + dir = i; + else + dir = !i; ++ ++ flags = 0; ++ if (!dir && !zerowidth) ++ flags = SEARCH_END; ++ + result = searchit(curwin, curbuf, &pos, (dir ? FORWARD : BACKWARD), + spats[last_idx].pat, (long) (i ? count : 1), +! SEARCH_KEEP | flags, RE_SEARCH, 0, NULL); + + /* First search may fail, but then start searching from the + * beginning of the file (cursor might be on the search match) +*************** +*** 4629,4638 **** + } + + start_pos = pos; +! flags = (forward ? SEARCH_END : 0); + +! /* move to match */ +! result = searchit(curwin, curbuf, &pos, (forward ? FORWARD : BACKWARD), + spats[last_idx].pat, 0L, flags | SEARCH_KEEP, RE_SEARCH, 0, NULL); + + if (!VIsual_active) +--- 4651,4662 ---- + } + + start_pos = pos; +! flags = forward ? SEARCH_END : 0; + +! /* move to match, except for zero-width matches, in which case, we are +! * already on the next match */ +! if (!zerowidth) +! result = searchit(curwin, curbuf, &pos, (forward ? FORWARD : BACKWARD), + spats[last_idx].pat, 0L, flags | SEARCH_KEEP, RE_SEARCH, 0, NULL); + + if (!VIsual_active) +*** ../vim-7.3.624/src/version.c 2012-08-08 14:33:16.000000000 +0200 +--- src/version.c 2012-08-08 15:21:53.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 625, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +222. You send more than 20 personal e-mails a day. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.626 b/7.3.626 new file mode 100644 index 0000000..33b1545 --- /dev/null +++ b/7.3.626 @@ -0,0 +1,49 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.626 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.626 +Problem: Python interface doesn't build with Python 2.4 or older. +Solution: Define Py_ssize_t. (Benjamin Bannier) +Files: src/if_py_both.h + + +*** ../vim-7.3.625/src/if_py_both.h 2012-07-25 15:36:00.000000000 +0200 +--- src/if_py_both.h 2012-08-08 15:53:24.000000000 +0200 +*************** +*** 12,17 **** +--- 12,21 ---- + * Common code for if_python.c and if_python3.c. + */ + ++ #if PY_VERSION_HEX < 0x02050000 ++ typedef int Py_ssize_t; /* Python 2.4 and earlier don't have this type. */ ++ #endif ++ + #ifdef FEAT_MBYTE + # define ENC_OPT p_enc + #else +*** ../vim-7.3.625/src/version.c 2012-08-08 15:27:54.000000000 +0200 +--- src/version.c 2012-08-08 15:52:07.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 626, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +224. You set up your own Web page. You set up a Web page for each + of your kids... and your pets. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.627 b/7.3.627 new file mode 100644 index 0000000..97a0298 --- /dev/null +++ b/7.3.627 @@ -0,0 +1,102 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.627 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.627 +Problem: When using the "n" flag with the ":s" command a \= substitution + will not be evaluated. +Solution: Do perform the evaluation, so that a function can be invoked at + every matching position without changing the text. (Christian + Brabandt) +Files: src/ex_cmds.c + + +*** ../vim-7.3.626/src/ex_cmds.c 2012-07-10 15:18:18.000000000 +0200 +--- src/ex_cmds.c 2012-08-08 16:44:16.000000000 +0200 +*************** +*** 4264,4269 **** +--- 4264,4272 ---- + int endcolumn = FALSE; /* cursor in last column when done */ + pos_T old_cursor = curwin->w_cursor; + int start_nsubs; ++ #ifdef FEAT_EVAL ++ int save_ma = 0; ++ #endif + + cmd = eap->arg; + if (!global_busy) +*************** +*** 4668,4674 **** + } + sub_nsubs++; + did_sub = TRUE; +! goto skip; + } + + if (do_ask) +--- 4671,4682 ---- + } + sub_nsubs++; + did_sub = TRUE; +! #ifdef FEAT_EVAL +! /* Skip the substitution, unless an expression is used, +! * then it is evaluated in the sandbox. */ +! if (!(sub[0] == '\\' && sub[1] == '=')) +! #endif +! goto skip; + } + + if (do_ask) +*************** +*** 4840,4849 **** +--- 4848,4874 ---- + /* + * 3. substitute the string. + */ ++ #ifdef FEAT_EVAL ++ if (do_count) ++ { ++ /* prevent accidently changing the buffer by a function */ ++ save_ma = curbuf->b_p_ma; ++ curbuf->b_p_ma = FALSE; ++ sandbox++; ++ } ++ #endif + /* get length of substitution part */ + sublen = vim_regsub_multi(®match, + sub_firstlnum - regmatch.startpos[0].lnum, + sub, sub_firstline, FALSE, p_magic, TRUE); ++ #ifdef FEAT_EVAL ++ if (do_count) ++ { ++ curbuf->b_p_ma = save_ma; ++ sandbox--; ++ goto skip; ++ } ++ #endif + + /* When the match included the "$" of the last line it may + * go beyond the last line of the buffer. */ +*** ../vim-7.3.626/src/version.c 2012-08-08 16:05:03.000000000 +0200 +--- src/version.c 2012-08-08 16:48:45.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 627, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +225. You sign up for free subscriptions for all the computer magazines + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.628 b/7.3.628 new file mode 100644 index 0000000..bab3147 --- /dev/null +++ b/7.3.628 @@ -0,0 +1,54 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.628 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.628 +Problem: ":open" does not allow for a !, which results in a confusing error + message. (Shawn Wilson) +Solution: Allow ! on ":open". (Christian Brabandt) +Files: src/ex_cmds.h + + +*** ../vim-7.3.627/src/ex_cmds.h 2012-07-06 18:27:34.000000000 +0200 +--- src/ex_cmds.h 2012-08-08 17:15:45.000000000 +0200 +*************** +*** 662,668 **** + EX(CMD_nunmenu, "nunmenu", ex_menu, + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_open, "open", ex_open, +! RANGE|EXTRA), + EX(CMD_oldfiles, "oldfiles", ex_oldfiles, + BANG|TRLBAR|SBOXOK|CMDWIN), + EX(CMD_omap, "omap", ex_map, +--- 662,668 ---- + EX(CMD_nunmenu, "nunmenu", ex_menu, + EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_open, "open", ex_open, +! RANGE|BANG|EXTRA), + EX(CMD_oldfiles, "oldfiles", ex_oldfiles, + BANG|TRLBAR|SBOXOK|CMDWIN), + EX(CMD_omap, "omap", ex_map, +*** ../vim-7.3.627/src/version.c 2012-08-08 16:50:40.000000000 +0200 +--- src/version.c 2012-08-08 17:30:14.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 628, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +226. You sit down at the computer right after dinner and your spouse + says "See you in the morning." + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.629 b/7.3.629 new file mode 100644 index 0000000..8e26dd4 --- /dev/null +++ b/7.3.629 @@ -0,0 +1,437 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.629 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.629 +Problem: There is no way to make 'shiftwidth' follow 'tabstop'. +Solution: When 'shiftwidth' is zero use the value of 'tabstop'. (Christian + Brabandt) +Files: src/edit.c, src/ex_getln.c, src/fold.c, src/misc1.c, src/ops.c, + src/option.c, src/proto/option.pro + + +*** ../vim-7.3.628/src/edit.c 2012-07-25 16:46:59.000000000 +0200 +--- src/edit.c 2012-08-08 17:55:37.000000000 +0200 +*************** +*** 8899,8907 **** + + *inserted_space_p = FALSE; + if (p_sta && in_indent) +! ts = curbuf->b_p_sw; + else +! ts = curbuf->b_p_sts; + /* Compute the virtual column where we want to be. Since + * 'showbreak' may get in the way, need to get the last column of + * the previous character. */ +--- 8899,8907 ---- + + *inserted_space_p = FALSE; + if (p_sta && in_indent) +! ts = (int)get_sw_value(); + else +! ts = (int)curbuf->b_p_sts; + /* Compute the virtual column where we want to be. Since + * 'showbreak' may get in the way, need to get the last column of + * the previous character. */ +*************** +*** 9589,9595 **** + * When nothing special, insert TAB like a normal character + */ + if (!curbuf->b_p_et +! && !(p_sta && ind && curbuf->b_p_ts != curbuf->b_p_sw) + && curbuf->b_p_sts == 0) + return TRUE; + +--- 9589,9595 ---- + * When nothing special, insert TAB like a normal character + */ + if (!curbuf->b_p_et +! && !(p_sta && ind && curbuf->b_p_ts != get_sw_value()) + && curbuf->b_p_sts == 0) + return TRUE; + +*************** +*** 9605,9611 **** + AppendToRedobuff((char_u *)"\t"); + + if (p_sta && ind) /* insert tab in indent, use 'shiftwidth' */ +! temp = (int)curbuf->b_p_sw; + else if (curbuf->b_p_sts > 0) /* use 'softtabstop' when set */ + temp = (int)curbuf->b_p_sts; + else /* otherwise use 'tabstop' */ +--- 9605,9611 ---- + AppendToRedobuff((char_u *)"\t"); + + if (p_sta && ind) /* insert tab in indent, use 'shiftwidth' */ +! temp = (int)get_sw_value(); + else if (curbuf->b_p_sts > 0) /* use 'softtabstop' when set */ + temp = (int)curbuf->b_p_sts; + else /* otherwise use 'tabstop' */ +*** ../vim-7.3.628/src/ex_getln.c 2012-06-29 13:44:37.000000000 +0200 +--- src/ex_getln.c 2012-08-08 17:39:40.000000000 +0200 +*************** +*** 2268,2277 **** + + if (c1 == Ctrl_T) + { + p = (char_u *)line_ga.ga_data; + p[line_ga.ga_len] = NUL; + indent = get_indent_str(p, 8); +! indent += curbuf->b_p_sw - indent % curbuf->b_p_sw; + add_indent: + while (get_indent_str(p, 8) < indent) + { +--- 2268,2279 ---- + + if (c1 == Ctrl_T) + { ++ long sw = get_sw_value(); ++ + p = (char_u *)line_ga.ga_data; + p[line_ga.ga_len] = NUL; + indent = get_indent_str(p, 8); +! indent += sw - indent % sw; + add_indent: + while (get_indent_str(p, 8) < indent) + { +*************** +*** 2323,2329 **** + p[line_ga.ga_len] = NUL; + indent = get_indent_str(p, 8); + --indent; +! indent -= indent % curbuf->b_p_sw; + } + while (get_indent_str(p, 8) > indent) + { +--- 2325,2331 ---- + p[line_ga.ga_len] = NUL; + indent = get_indent_str(p, 8); + --indent; +! indent -= indent % get_sw_value(); + } + while (get_indent_str(p, 8) > indent) + { +*** ../vim-7.3.628/src/fold.c 2012-02-29 19:19:57.000000000 +0100 +--- src/fold.c 2012-08-08 17:40:11.000000000 +0200 +*************** +*** 3025,3031 **** + flp->lvl = -1; + } + else +! flp->lvl = get_indent_buf(buf, lnum) / buf->b_p_sw; + if (flp->lvl > flp->wp->w_p_fdn) + { + flp->lvl = flp->wp->w_p_fdn; +--- 3025,3031 ---- + flp->lvl = -1; + } + else +! flp->lvl = get_indent_buf(buf, lnum) / get_sw_value(); + if (flp->lvl > flp->wp->w_p_fdn) + { + flp->lvl = flp->wp->w_p_fdn; +*** ../vim-7.3.628/src/misc1.c 2012-07-25 16:09:59.000000000 +0200 +--- src/misc1.c 2012-08-08 17:43:07.000000000 +0200 +*************** +*** 1389,1397 **** + #ifdef FEAT_SMARTINDENT + if (did_si) + { + if (p_sr) +! newindent -= newindent % (int)curbuf->b_p_sw; +! newindent += (int)curbuf->b_p_sw; + } + #endif + /* Copy the indent */ +--- 1389,1399 ---- + #ifdef FEAT_SMARTINDENT + if (did_si) + { ++ int sw = (int)get_sw_value(); ++ + if (p_sr) +! newindent -= newindent % sw; +! newindent += sw; + } + #endif + /* Copy the indent */ +*************** +*** 6461,6471 **** + int + get_c_indent() + { + /* + * spaces from a block's opening brace the prevailing indent for that + * block should be + */ +! int ind_level = curbuf->b_p_sw; + + /* + * spaces from the edge of the line an open brace that's at the end of a +--- 6463,6476 ---- + int + get_c_indent() + { ++ int sw = (int)get_sw_value(); ++ + /* + * spaces from a block's opening brace the prevailing indent for that + * block should be + */ +! +! int ind_level = sw; + + /* + * spaces from the edge of the line an open brace that's at the end of a +*************** +*** 6512,6523 **** + /* + * spaces from the switch() indent a "case xx" label should be located + */ +! int ind_case = curbuf->b_p_sw; + + /* + * spaces from the "case xx:" code after a switch() should be located + */ +! int ind_case_code = curbuf->b_p_sw; + + /* + * lineup break at end of case in switch() with case label +--- 6517,6528 ---- + /* + * spaces from the switch() indent a "case xx" label should be located + */ +! int ind_case = sw; + + /* + * spaces from the "case xx:" code after a switch() should be located + */ +! int ind_case_code = sw; + + /* + * lineup break at end of case in switch() with case label +*************** +*** 6528,6572 **** + * spaces from the class declaration indent a scope declaration label + * should be located + */ +! int ind_scopedecl = curbuf->b_p_sw; + + /* + * spaces from the scope declaration label code should be located + */ +! int ind_scopedecl_code = curbuf->b_p_sw; + + /* + * amount K&R-style parameters should be indented + */ +! int ind_param = curbuf->b_p_sw; + + /* + * amount a function type spec should be indented + */ +! int ind_func_type = curbuf->b_p_sw; + + /* + * amount a cpp base class declaration or constructor initialization + * should be indented + */ +! int ind_cpp_baseclass = curbuf->b_p_sw; + + /* + * additional spaces beyond the prevailing indent a continuation line + * should be located + */ +! int ind_continuation = curbuf->b_p_sw; + + /* + * spaces from the indent of the line with an unclosed parentheses + */ +! int ind_unclosed = curbuf->b_p_sw * 2; + + /* + * spaces from the indent of the line with an unclosed parentheses, which + * itself is also unclosed + */ +! int ind_unclosed2 = curbuf->b_p_sw; + + /* + * suppress ignoring spaces from the indent of a line starting with an +--- 6533,6577 ---- + * spaces from the class declaration indent a scope declaration label + * should be located + */ +! int ind_scopedecl = sw; + + /* + * spaces from the scope declaration label code should be located + */ +! int ind_scopedecl_code = sw; + + /* + * amount K&R-style parameters should be indented + */ +! int ind_param = sw; + + /* + * amount a function type spec should be indented + */ +! int ind_func_type = sw; + + /* + * amount a cpp base class declaration or constructor initialization + * should be indented + */ +! int ind_cpp_baseclass = sw; + + /* + * additional spaces beyond the prevailing indent a continuation line + * should be located + */ +! int ind_continuation = sw; + + /* + * spaces from the indent of the line with an unclosed parentheses + */ +! int ind_unclosed = sw * 2; + + /* + * spaces from the indent of the line with an unclosed parentheses, which + * itself is also unclosed + */ +! int ind_unclosed2 = sw; + + /* + * suppress ignoring spaces from the indent of a line starting with an +*************** +*** 6719,6730 **** + if (*options == 's') /* "2s" means two times 'shiftwidth' */ + { + if (options == digits) +! n = curbuf->b_p_sw; /* just "s" is one 'shiftwidth' */ + else + { +! n *= curbuf->b_p_sw; + if (divider) +! n += (curbuf->b_p_sw * fraction + divider / 2) / divider; + } + ++options; + } +--- 6724,6735 ---- + if (*options == 's') /* "2s" means two times 'shiftwidth' */ + { + if (options == digits) +! n = sw; /* just "s" is one 'shiftwidth' */ + else + { +! n *= sw; + if (divider) +! n += (sw * fraction + divider / 2) / divider; + } + ++options; + } +*** ../vim-7.3.628/src/ops.c 2012-07-10 16:49:08.000000000 +0200 +--- src/ops.c 2012-08-08 17:34:28.000000000 +0200 +*************** +*** 332,338 **** + { + int count; + int i, j; +! int p_sw = (int)curbuf->b_p_sw; + + count = get_indent(); /* get current indent */ + +--- 332,338 ---- + { + int count; + int i, j; +! int p_sw = (int)get_sw_value(); + + count = get_indent(); /* get current indent */ + +*************** +*** 388,394 **** + int total; + char_u *newp, *oldp; + int oldcol = curwin->w_cursor.col; +! int p_sw = (int)curbuf->b_p_sw; + int p_ts = (int)curbuf->b_p_ts; + struct block_def bd; + int incr; +--- 388,394 ---- + int total; + char_u *newp, *oldp; + int oldcol = curwin->w_cursor.col; +! int p_sw = (int)get_sw_value(); + int p_ts = (int)curbuf->b_p_ts; + struct block_def bd; + int incr; +*** ../vim-7.3.628/src/option.c 2012-07-10 18:31:49.000000000 +0200 +--- src/option.c 2012-08-08 17:45:01.000000000 +0200 +*************** +*** 8125,8131 **** + need_mouse_correct = TRUE; + #endif + +! if (curbuf->b_p_sw <= 0) + { + errmsg = e_positive; + curbuf->b_p_sw = curbuf->b_p_ts; +--- 8125,8131 ---- + need_mouse_correct = TRUE; + #endif + +! if (curbuf->b_p_sw < 0) + { + errmsg = e_positive; + curbuf->b_p_sw = curbuf->b_p_ts; +*************** +*** 11419,11421 **** +--- 11419,11431 ---- + { + return check_opt_strings(p, p_ff_values, FALSE); + } ++ ++ /* ++ * Return the effective shiftwidth value for current buffer, using the ++ * 'tabstop' value when 'shiftwidth' is zero. ++ */ ++ long ++ get_sw_value() ++ { ++ return curbuf->b_p_sw ? curbuf->b_p_sw : curbuf->b_p_ts; ++ } +*** ../vim-7.3.628/src/proto/option.pro 2011-01-22 00:11:42.000000000 +0100 +--- src/proto/option.pro 2012-08-08 17:34:33.000000000 +0200 +*************** +*** 56,59 **** +--- 56,60 ---- + void save_file_ff __ARGS((buf_T *buf)); + int file_ff_differs __ARGS((buf_T *buf, int ignore_empty)); + int check_ff_value __ARGS((char_u *p)); ++ long get_sw_value __ARGS((void)); + /* vim: set ft=c : */ +*** ../vim-7.3.628/src/version.c 2012-08-08 17:31:36.000000000 +0200 +--- src/version.c 2012-08-08 17:57:48.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 629, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +228. You spend Saturday night making the counter on your home page + pass that 2000 mark. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.630 b/7.3.630 new file mode 100644 index 0000000..d89cfbf --- /dev/null +++ b/7.3.630 @@ -0,0 +1,48 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.630 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.630 +Problem: "|" does not behave correctly when 'virtualedit' is set. +Solution: Call validate_virtcol(). (David Bürgin) +Files: src/normal.c + + +*** ../vim-7.3.629/src/normal.c 2012-07-29 12:55:21.000000000 +0200 +--- src/normal.c 2012-08-15 13:20:13.000000000 +0200 +*************** +*** 7786,7792 **** +--- 7786,7795 ---- + * virtualedit. Recalculate curwin->w_cursor to avoid bad hilighting. + */ + if (c == Ctrl_V && (ve_flags & VE_BLOCK) && gchar_cursor() == TAB) ++ { ++ validate_virtcol(); + coladvance(curwin->w_virtcol); ++ } + #endif + VIsual = curwin->w_cursor; + +*** ../vim-7.3.629/src/version.c 2012-08-08 18:01:00.000000000 +0200 +--- src/version.c 2012-08-15 13:30:30.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 630, + /**/ + +-- +"Marriage is when a man and woman become as one; the trouble starts +when they try to decide which one" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.631 b/7.3.631 new file mode 100644 index 0000000..b7bff4f --- /dev/null +++ b/7.3.631 @@ -0,0 +1,322 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.631 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.631 +Problem: Cannot complete user names. +Solution: Add user name completion. (Dominique Pelle) +Files: runtime/doc/map.txt, src/auto/configure, src/config.h.in, + src/configure.in, src/ex_docmd.c, src/ex_getln.c, + src/misc1.c, src/misc2.c, src/proto/misc1.pro, src/vim.h + + +*** ../vim-7.3.630/runtime/doc/map.txt 2012-04-30 18:48:38.000000000 +0200 +--- runtime/doc/map.txt 2012-08-15 13:46:34.000000000 +0200 +*************** +*** 1227,1232 **** +--- 1244,1250 ---- + -complete=syntax syntax file names |'syntax'| + -complete=tag tags + -complete=tag_listfiles tags, file names are shown when CTRL-D is hit ++ -complete=user user names + -complete=var user variables + -complete=custom,{func} custom completion, defined via {func} + -complete=customlist,{func} custom completion, defined via {func} +*** ../vim-7.3.630/src/auto/configure 2012-07-25 16:32:03.000000000 +0200 +--- src/auto/configure 2012-08-15 13:48:06.000000000 +0200 +*************** +*** 10631,10637 **** + fi + + for ac_func in bcmp fchdir fchown fsync getcwd getpseudotty \ +! getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \ + memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \ + setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \ + sigvec strcasecmp strerror strftime stricmp strncasecmp \ +--- 10631,10637 ---- + fi + + for ac_func in bcmp fchdir fchown fsync getcwd getpseudotty \ +! getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \ + memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \ + setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \ + sigvec strcasecmp strerror strftime stricmp strncasecmp \ +*** ../vim-7.3.630/src/config.h.in 2012-02-05 22:51:27.000000000 +0100 +--- src/config.h.in 2012-08-15 13:46:35.000000000 +0200 +*************** +*** 161,166 **** +--- 161,167 ---- + #undef HAVE_FSYNC + #undef HAVE_GETCWD + #undef HAVE_GETPSEUDOTTY ++ #undef HAVE_GETPWENT + #undef HAVE_GETPWNAM + #undef HAVE_GETPWUID + #undef HAVE_GETRLIMIT +*** ../vim-7.3.630/src/configure.in 2012-07-25 16:32:03.000000000 +0200 +--- src/configure.in 2012-08-15 13:46:35.000000000 +0200 +*************** +*** 2994,3000 **** + dnl Check for functions in one big call, to reduce the size of configure. + dnl Can only be used for functions that do not require any include. + AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \ +! getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \ + memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \ + setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \ + sigvec strcasecmp strerror strftime stricmp strncasecmp \ +--- 2994,3000 ---- + dnl Check for functions in one big call, to reduce the size of configure. + dnl Can only be used for functions that do not require any include. + AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \ +! getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \ + memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \ + setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \ + sigvec strcasecmp strerror strftime stricmp strncasecmp \ +*** ../vim-7.3.630/src/ex_docmd.c 2012-08-02 21:24:38.000000000 +0200 +--- src/ex_docmd.c 2012-08-15 13:54:29.000000000 +0200 +*************** +*** 3515,3520 **** +--- 3515,3537 ---- + #endif + } + } ++ #if defined(FEAT_CMDL_COMPL) ++ /* Check for user names */ ++ if (*xp->xp_pattern == '~') ++ { ++ for (p = xp->xp_pattern + 1; *p != NUL && *p != '/'; ++p) ++ ; ++ /* Complete ~user only if it partially matches a user name. ++ * A full match ~user will be replaced by user's home ++ * directory i.e. something like ~user -> /home/user/ */ ++ if (*p == NUL && p > xp->xp_pattern + 1 ++ && match_user(xp->xp_pattern + 1) == 1) ++ { ++ xp->xp_context = EXPAND_USER; ++ ++xp->xp_pattern; ++ } ++ } ++ #endif + } + + /* +*************** +*** 5396,5401 **** +--- 5413,5419 ---- + #endif + {EXPAND_TAGS, "tag"}, + {EXPAND_TAGS_LISTFILES, "tag_listfiles"}, ++ {EXPAND_USER, "user"}, + {EXPAND_USER_VARS, "var"}, + {0, NULL} + }; +*** ../vim-7.3.630/src/ex_getln.c 2012-08-08 18:01:00.000000000 +0200 +--- src/ex_getln.c 2012-08-15 13:46:35.000000000 +0200 +*************** +*** 4336,4341 **** +--- 4336,4342 ---- + * EXPAND_EXPRESSION Complete internal or user defined function/variable + * names in expressions, eg :while s^I + * EXPAND_ENV_VARS Complete environment variable names ++ * EXPAND_USER Complete user names + */ + static void + set_expand_context(xp) +*************** +*** 4681,4686 **** +--- 4682,4688 ---- + {EXPAND_LOCALES, get_locales, TRUE, FALSE}, + #endif + {EXPAND_ENV_VARS, get_env_name, TRUE, TRUE}, ++ {EXPAND_USER, get_users, TRUE, FALSE}, + }; + int i; + +*** ../vim-7.3.630/src/misc1.c 2012-08-08 18:01:00.000000000 +0200 +--- src/misc1.c 2012-08-15 13:57:53.000000000 +0200 +*************** +*** 18,23 **** +--- 18,28 ---- + static char_u *remove_tail __ARGS((char_u *p, char_u *pend, char_u *name)); + static int copy_indent __ARGS((int size, char_u *src)); + ++ /* All user names (for ~user completion as done by shell). */ ++ #if defined(FEAT_CMDL_COMPL) || defined(PROTO) ++ static garray_T ga_users; ++ #endif ++ + /* + * Count the size (in window cells) of the indent in the current line. + */ +*************** +*** 3782,3787 **** +--- 3787,3800 ---- + { + vim_free(homedir); + } ++ ++ # ifdef FEAT_CMDL_COMPL ++ void ++ free_users() ++ { ++ ga_clear_strings(&ga_users); ++ } ++ # endif + #endif + + /* +*************** +*** 4451,4456 **** +--- 4464,4543 ---- + return name; + # endif + } ++ ++ /* ++ * Find all user names for user completion. ++ * Done only once and then cached. ++ */ ++ static void ++ init_users() { ++ static int lazy_init_done = FALSE; ++ ++ if (lazy_init_done) ++ return; ++ ++ lazy_init_done = TRUE; ++ ga_init2(&ga_users, sizeof(char_u *), 20); ++ ++ # if defined(HAVE_GETPWENT) && defined(HAVE_PWD_H) ++ { ++ char_u* user; ++ struct passwd* pw; ++ ++ setpwent(); ++ while ((pw = getpwent()) != NULL) ++ /* pw->pw_name shouldn't be NULL but just in case... */ ++ if (pw->pw_name != NULL) ++ { ++ if (ga_grow(&ga_users, 1) == FAIL) ++ break; ++ user = vim_strsave((char_u*)pw->pw_name); ++ if (user == NULL) ++ break; ++ ((char_u **)(ga_users.ga_data))[ga_users.ga_len++] = user; ++ } ++ endpwent(); ++ } ++ # endif ++ } ++ ++ /* ++ * Function given to ExpandGeneric() to obtain an user names. ++ */ ++ char_u* ++ get_users(xp, idx) ++ expand_T *xp UNUSED; ++ int idx; ++ { ++ init_users(); ++ if (idx < ga_users.ga_len) ++ return ((char_u **)ga_users.ga_data)[idx]; ++ return NULL; ++ } ++ ++ /* ++ * Check whether name matches a user name. Return: ++ * 0 if name does not match any user name. ++ * 1 if name partially matches the beginning of a user name. ++ * 2 is name fully matches a user name. ++ */ ++ int match_user(name) ++ char_u* name; ++ { ++ int i; ++ int n = (int)STRLEN(name); ++ int result = 0; ++ ++ init_users(); ++ for (i = 0; i < ga_users.ga_len; i++) ++ { ++ if (STRCMP(((char_u **)ga_users.ga_data)[i], name) == 0) ++ return 2; /* full match */ ++ if (STRNCMP(((char_u **)ga_users.ga_data)[i], name, n) == 0) ++ result = 1; /* partial match */ ++ } ++ return result; ++ } + #endif + + /* +*** ../vim-7.3.630/src/misc2.c 2012-06-29 15:51:26.000000000 +0200 +--- src/misc2.c 2012-08-15 13:46:35.000000000 +0200 +*************** +*** 1110,1115 **** +--- 1110,1118 ---- + free_all_marks(); + alist_clear(&global_alist); + free_homedir(); ++ # if defined(FEAT_CMDL_COMPL) ++ free_users(); ++ # endif + free_search_patterns(); + free_old_sub(); + free_last_insert(); +*** ../vim-7.3.630/src/proto/misc1.pro 2012-06-06 16:12:54.000000000 +0200 +--- src/proto/misc1.pro 2012-08-15 13:46:35.000000000 +0200 +*************** +*** 50,55 **** +--- 50,56 ---- + void vim_beep __ARGS((void)); + void init_homedir __ARGS((void)); + void free_homedir __ARGS((void)); ++ void free_users __ARGS((void)); + char_u *expand_env_save __ARGS((char_u *src)); + char_u *expand_env_save_opt __ARGS((char_u *src, int one)); + void expand_env __ARGS((char_u *src, char_u *dst, int dstlen)); +*************** +*** 57,62 **** +--- 58,65 ---- + char_u *vim_getenv __ARGS((char_u *name, int *mustfree)); + void vim_setenv __ARGS((char_u *name, char_u *val)); + char_u *get_env_name __ARGS((expand_T *xp, int idx)); ++ char_u *get_users __ARGS((expand_T *xp, int idx)); ++ int match_user __ARGS((char_u* name)); + void home_replace __ARGS((buf_T *buf, char_u *src, char_u *dst, int dstlen, int one)); + char_u *home_replace_save __ARGS((buf_T *buf, char_u *src)); + int fullpathcmp __ARGS((char_u *s1, char_u *s2, int checkname)); +*** ../vim-7.3.630/src/vim.h 2012-07-10 17:14:50.000000000 +0200 +--- src/vim.h 2012-08-15 13:46:35.000000000 +0200 +*************** +*** 782,787 **** +--- 782,788 ---- + #define EXPAND_OWNSYNTAX 39 + #define EXPAND_LOCALES 40 + #define EXPAND_HISTORY 41 ++ #define EXPAND_USER 42 + + /* Values for exmode_active (0 is no exmode) */ + #define EXMODE_NORMAL 1 +*** ../vim-7.3.630/src/version.c 2012-08-15 13:30:55.000000000 +0200 +--- src/version.c 2012-08-15 14:01:12.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 631, + /**/ + +-- +"Marriage is the process of finding out what kind of man your wife +would have preferred" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.632 b/7.3.632 new file mode 100644 index 0000000..9e38969 --- /dev/null +++ b/7.3.632 @@ -0,0 +1,537 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.632 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.632 +Problem: Cannot select beyond 222 columns with the mouse in xterm. +Solution: Add support for SGR mouse tracking. (Hayaki Saito) +Files: runtime/doc/options.txt, src/feature.h, src/keymap.h, src/misc2.c, + src/option.h, src/os_unix.c, src/term.c, src/version.c + + +*** ../vim-7.3.631/runtime/doc/options.txt 2012-07-10 16:49:08.000000000 +0200 +--- runtime/doc/options.txt 2012-08-15 16:04:26.000000000 +0200 +*************** +*** 7383,7388 **** +--- 7424,7435 ---- + jsbterm JSB term mouse handling. + *pterm-mouse* + pterm QNX pterm mouse handling. ++ *urxvt-mouse* ++ urxvt Mouse handling for the urxvt (rxvt-unicode) terminal. ++ *sgr-mouse* ++ sgr Mouse handling for the terminal that emits SGR-styled ++ mouse reporting. Works with xterm version 277 or ++ later. + + The mouse handling must be enabled at compile time |+mouse_xterm| + |+mouse_dec| |+mouse_netterm|. +*************** +*** 7395,7400 **** +--- 7442,7448 ---- + or "xterm2" already. The main use of this option is to set it to + "xterm", when the terminal name doesn't start with "xterm", but it can + handle xterm mouse codes. ++ The "sgr" value will be set if the xterm version is 277 or later. + The "xterm2" value will be set if the xterm version is reported to be + 95 or higher. This only works when compiled with the |+termresponse| + feature and if |t_RV| is set to the escape sequence to request the +*** ../vim-7.3.631/src/feature.h 2012-04-25 16:50:44.000000000 +0200 +--- src/feature.h 2012-08-15 15:46:07.000000000 +0200 +*************** +*** 1056,1061 **** +--- 1056,1064 ---- + # ifdef FEAT_BIG + # define FEAT_MOUSE_URXVT + # endif ++ # ifdef FEAT_BIG ++ # define FEAT_MOUSE_SGR ++ # endif + # if defined(FEAT_NORMAL) && (defined(MSDOS) || defined(WIN3264)) + # define DOS_MOUSE + # endif +*************** +*** 1077,1082 **** +--- 1080,1090 ---- + # define FEAT_MOUSE_XTERM + #endif + ++ /* sgr is a small variation of mouse_xterm, and shares its code */ ++ #if defined(FEAT_MOUSE_SGR) && !defined(FEAT_MOUSE_XTERM) ++ # define FEAT_MOUSE_XTERM ++ #endif ++ + /* Define FEAT_MOUSE when any of the above is defined or FEAT_GUI. */ + #if !defined(FEAT_MOUSE_TTY) \ + && (defined(FEAT_MOUSE_XTERM) \ +*************** +*** 1087,1093 **** + || defined(FEAT_MOUSE_JSB) \ + || defined(FEAT_MOUSE_PTERM) \ + || defined(FEAT_SYSMOUSE) \ +! || defined(FEAT_MOUSE_URXVT)) + # define FEAT_MOUSE_TTY /* include non-GUI mouse support */ + #endif + #if !defined(FEAT_MOUSE) && (defined(FEAT_MOUSE_TTY) || defined(FEAT_GUI)) +--- 1095,1102 ---- + || defined(FEAT_MOUSE_JSB) \ + || defined(FEAT_MOUSE_PTERM) \ + || defined(FEAT_SYSMOUSE) \ +! || defined(FEAT_MOUSE_URXVT) \ +! || defined(FEAT_MOUSE_SGR)) + # define FEAT_MOUSE_TTY /* include non-GUI mouse support */ + #endif + #if !defined(FEAT_MOUSE) && (defined(FEAT_MOUSE_TTY) || defined(FEAT_GUI)) +*** ../vim-7.3.631/src/keymap.h 2012-01-20 17:15:47.000000000 +0100 +--- src/keymap.h 2012-08-15 15:46:07.000000000 +0200 +*************** +*** 110,115 **** +--- 110,118 ---- + /* Used for the urxvt mouse. */ + #define KS_URXVT_MOUSE 238 + ++ /* Used for the sgr mouse. */ ++ #define KS_SGR_MOUSE 237 ++ + /* + * Filler used after KS_SPECIAL and others + */ +*************** +*** 412,417 **** +--- 415,421 ---- + #define K_JSBTERM_MOUSE TERMCAP2KEY(KS_JSBTERM_MOUSE, KE_FILLER) + #define K_PTERM_MOUSE TERMCAP2KEY(KS_PTERM_MOUSE, KE_FILLER) + #define K_URXVT_MOUSE TERMCAP2KEY(KS_URXVT_MOUSE, KE_FILLER) ++ #define K_SGR_MOUSE TERMCAP2KEY(KS_SGR_MOUSE, KE_FILLER) + + #define K_SELECT TERMCAP2KEY(KS_SELECT, KE_FILLER) + #define K_TEAROFF TERMCAP2KEY(KS_TEAROFF, KE_FILLER) +*** ../vim-7.3.631/src/misc2.c 2012-08-15 14:04:50.000000000 +0200 +--- src/misc2.c 2012-08-15 15:46:07.000000000 +0200 +*************** +*** 2433,2438 **** +--- 2433,2441 ---- + #ifdef FEAT_MOUSE_URXVT + {K_URXVT_MOUSE, (char_u *)"UrxvtMouse"}, + #endif ++ #ifdef FEAT_MOUSE_SGR ++ {K_SGR_MOUSE, (char_u *)"SgrMouse"}, ++ #endif + {K_LEFTMOUSE, (char_u *)"LeftMouse"}, + {K_LEFTMOUSE_NM, (char_u *)"LeftMouseNM"}, + {K_LEFTDRAG, (char_u *)"LeftDrag"}, +*** ../vim-7.3.631/src/option.h 2012-07-10 16:49:08.000000000 +0200 +--- src/option.h 2012-08-15 15:46:07.000000000 +0200 +*************** +*** 822,828 **** + EXTERN char_u *p_ttym; /* 'ttymouse' */ + EXTERN unsigned ttym_flags; + # ifdef IN_OPTION_C +! static char *(p_ttym_values[]) = {"xterm", "xterm2", "dec", "netterm", "jsbterm", "pterm", "urxvt", NULL}; + # endif + # define TTYM_XTERM 0x01 + # define TTYM_XTERM2 0x02 +--- 822,828 ---- + EXTERN char_u *p_ttym; /* 'ttymouse' */ + EXTERN unsigned ttym_flags; + # ifdef IN_OPTION_C +! static char *(p_ttym_values[]) = {"xterm", "xterm2", "dec", "netterm", "jsbterm", "pterm", "urxvt", "sgr", NULL}; + # endif + # define TTYM_XTERM 0x01 + # define TTYM_XTERM2 0x02 +*************** +*** 831,836 **** +--- 831,837 ---- + # define TTYM_JSBTERM 0x10 + # define TTYM_PTERM 0x20 + # define TTYM_URXVT 0x40 ++ # define TTYM_SGR 0x80 + #endif + EXTERN char_u *p_udir; /* 'undodir' */ + EXTERN long p_ul; /* 'undolevels' */ +*** ../vim-7.3.631/src/os_unix.c 2012-04-20 15:55:10.000000000 +0200 +--- src/os_unix.c 2012-08-15 16:06:54.000000000 +0200 +*************** +*** 2159,2168 **** +--- 2159,2171 ---- + * Return 1 for "xterm". + * Return 2 for "xterm2". + * Return 3 for "urxvt". ++ * Return 4 for "sgr". + */ + int + use_xterm_mouse() + { ++ if (ttym_flags == TTYM_SGR) ++ return 4; + if (ttym_flags == TTYM_URXVT) + return 3; + if (ttym_flags == TTYM_XTERM2) +*************** +*** 3339,3345 **** + xterm_mouse_vers = use_xterm_mouse(); + + # ifdef FEAT_MOUSE_URXVT +! if (ttym_flags == TTYM_URXVT) { + out_str_nf((char_u *) + (on + ? IF_EB("\033[?1015h", ESC_STR "[?1015h") +--- 3342,3349 ---- + xterm_mouse_vers = use_xterm_mouse(); + + # ifdef FEAT_MOUSE_URXVT +! if (ttym_flags == TTYM_URXVT) +! { + out_str_nf((char_u *) + (on + ? IF_EB("\033[?1015h", ESC_STR "[?1015h") +*************** +*** 3348,3353 **** +--- 3352,3368 ---- + } + # endif + ++ # ifdef FEAT_MOUSE_SGR ++ if (ttym_flags == TTYM_SGR) ++ { ++ out_str_nf((char_u *) ++ (on ++ ? IF_EB("\033[?1006h", ESC_STR "[?1006h") ++ : IF_EB("\033[?1006l", ESC_STR "[?1006l"))); ++ ison = on; ++ } ++ # endif ++ + if (xterm_mouse_vers > 0) + { + if (on) /* enable mouse events, use mouse tracking if available */ +*************** +*** 3577,3582 **** +--- 3592,3618 ---- + else + del_mouse_termcode(KS_URXVT_MOUSE); + # endif ++ # ifdef FEAT_MOUSE_SGR ++ /* same as the dec mouse */ ++ if (use_xterm_mouse() == 4 ++ # ifdef FEAT_GUI ++ && !gui.in_use ++ # endif ++ ) ++ { ++ set_mouse_termcode(KS_SGR_MOUSE, (char_u *)(term_is_8bit(T_NAME) ++ ? IF_EB("\233<", CSI_STR "<") ++ : IF_EB("\033[<", ESC_STR "[<"))); ++ ++ if (*p_mouse != NUL) ++ { ++ mch_setmouse(FALSE); ++ setmouse(); ++ } ++ } ++ else ++ del_mouse_termcode(KS_SGR_MOUSE); ++ # endif + } + #endif + +*** ../vim-7.3.631/src/term.c 2012-02-05 22:05:44.000000000 +0100 +--- src/term.c 2012-08-15 16:14:09.000000000 +0200 +*************** +*** 1997,2002 **** +--- 1997,2003 ---- + # define HMT_JSBTERM 8 + # define HMT_PTERM 16 + # define HMT_URXVT 32 ++ # define HMT_SGR 64 + static int has_mouse_termcode = 0; + # endif + +*************** +*** 2037,2042 **** +--- 2038,2048 ---- + has_mouse_termcode |= HMT_URXVT; + else + # endif ++ # ifdef FEAT_MOUSE_SGR ++ if (n == KS_SGR_MOUSE) ++ has_mouse_termcode |= HMT_SGR; ++ else ++ # endif + has_mouse_termcode |= HMT_NORMAL; + # endif + } +*************** +*** 2079,2084 **** +--- 2085,2095 ---- + has_mouse_termcode &= ~HMT_URXVT; + else + # endif ++ # ifdef FEAT_MOUSE_SGR ++ if (n == KS_SGR_MOUSE) ++ has_mouse_termcode &= ~HMT_SGR; ++ else ++ # endif + has_mouse_termcode &= ~HMT_NORMAL; + # endif + } +*************** +*** 4023,4029 **** + #ifdef FEAT_TERMRESPONSE + if (key_name[0] == NUL + /* URXVT mouse uses [#;#;#M, but we are matching [ */ +! || key_name[0] == KS_URXVT_MOUSE) + { + /* Check for xterm version string: "[>{x};{vers};{y}c". Also + * eat other possible responses to t_RV, rxvt returns +--- 4034,4041 ---- + #ifdef FEAT_TERMRESPONSE + if (key_name[0] == NUL + /* URXVT mouse uses [#;#;#M, but we are matching [ */ +! || key_name[0] == KS_URXVT_MOUSE +! || key_name[0] == KS_SGR_MOUSE) + { + /* Check for xterm version string: "[>{x};{vers};{y}c". Also + * eat other possible responses to t_RV, rxvt returns +*************** +*** 4061,4066 **** +--- 4073,4088 ---- + + if (tp[1 + (tp[0] != CSI)] == '>' && j == 2) + { ++ # ifdef TTYM_SGR ++ if (extra >= 277 ++ # ifdef TTYM_URXVT ++ && ttym_flags != TTYM_URXVT ++ # endif ++ ) ++ set_option_value((char_u *)"ttym", 0L, ++ (char_u *)"sgr", 0); ++ else ++ # endif + /* if xterm version >= 95 use mouse dragging */ + if (extra >= 95 + # ifdef TTYM_URXVT +*************** +*** 4147,4167 **** + /* + * If it is a mouse click, get the coordinates. + */ +! if (key_name[0] == (int)KS_MOUSE + # ifdef FEAT_MOUSE_JSB +! || key_name[0] == (int)KS_JSBTERM_MOUSE + # endif + # ifdef FEAT_MOUSE_NET +! || key_name[0] == (int)KS_NETTERM_MOUSE + # endif + # ifdef FEAT_MOUSE_DEC +! || key_name[0] == (int)KS_DEC_MOUSE + # endif + # ifdef FEAT_MOUSE_PTERM +! || key_name[0] == (int)KS_PTERM_MOUSE + # endif + # ifdef FEAT_MOUSE_URXVT +! || key_name[0] == (int)KS_URXVT_MOUSE + # endif + ) + { +--- 4169,4192 ---- + /* + * If it is a mouse click, get the coordinates. + */ +! if (key_name[0] == KS_MOUSE + # ifdef FEAT_MOUSE_JSB +! || key_name[0] == KS_JSBTERM_MOUSE + # endif + # ifdef FEAT_MOUSE_NET +! || key_name[0] == KS_NETTERM_MOUSE + # endif + # ifdef FEAT_MOUSE_DEC +! || key_name[0] == KS_DEC_MOUSE + # endif + # ifdef FEAT_MOUSE_PTERM +! || key_name[0] == KS_PTERM_MOUSE + # endif + # ifdef FEAT_MOUSE_URXVT +! || key_name[0] == KS_URXVT_MOUSE +! # endif +! # ifdef FEAT_MOUSE_SGR +! || key_name[0] == KS_SGR_MOUSE + # endif + ) + { +*************** +*** 4243,4250 **** + } + } + +! # ifdef FEAT_MOUSE_URXVT +! if (key_name[0] == (int)KS_URXVT_MOUSE) + { + for (;;) + { +--- 4268,4276 ---- + } + } + +! # if defined(FEAT_MOUSE_URXVT) || defined(FEAT_MOUSE_SGR) +! if (key_name[0] == KS_URXVT_MOUSE +! || key_name[0] == KS_SGR_MOUSE) + { + for (;;) + { +*************** +*** 4256,4261 **** +--- 4282,4301 ---- + * ^-- row + * ^----- column + * ^-------- code ++ * ++ * SGR 1006 mouse reporting mode: ++ * Almost identical to xterm mouse mode, except the values ++ * are decimal instead of bytes. ++ * ++ * \033[<%d;%d;%dM ++ * ^-- row ++ * ^----- column ++ * ^-------- code ++ * ++ * \033[<%d;%d;%dm : mouse release event ++ * ^-- row ++ * ^----- column ++ * ^-------- code + */ + p = tp + slen; + +*************** +*** 4263,4294 **** + if (*p++ != ';') + return -1; + + mouse_col = getdigits(&p) - 1; + if (*p++ != ';') + return -1; + + mouse_row = getdigits(&p) - 1; +! if (*p++ != 'M') + return -1; + + slen += (int)(p - (tp + slen)); + + /* skip this one if next one has same code (like xterm + * case) */ + j = termcodes[idx].len; +! if (STRNCMP(tp, tp + slen, (size_t)j) == 0) { +! /* check if the command is complete by looking for the +! * M */ + int slen2; + int cmd_complete = 0; +! for (slen2 = slen; slen2 < len; slen2++) { +! if (tp[slen2] == 'M') { + cmd_complete = 1; + break; + } + } + p += j; +! if (cmd_complete && getdigits(&p) == mouse_code) { + slen += j; /* skip the \033[ */ + continue; + } +--- 4303,4348 ---- + if (*p++ != ';') + return -1; + ++ /* when mouse reporting is SGR, add 32 to mouse code */ ++ if (key_name[0] == KS_SGR_MOUSE) ++ mouse_code += 32; ++ + mouse_col = getdigits(&p) - 1; + if (*p++ != ';') + return -1; + + mouse_row = getdigits(&p) - 1; +! if (key_name[0] == KS_SGR_MOUSE && *p == 'm') +! mouse_code |= MOUSE_RELEASE; +! else if (*p != 'M') + return -1; ++ p++; + + slen += (int)(p - (tp + slen)); + + /* skip this one if next one has same code (like xterm + * case) */ + j = termcodes[idx].len; +! if (STRNCMP(tp, tp + slen, (size_t)j) == 0) +! { + int slen2; + int cmd_complete = 0; +! +! /* check if the command is complete by looking for the +! * 'M' */ +! for (slen2 = slen; slen2 < len; slen2++) +! { +! if (tp[slen2] == 'M' +! || (key_name[0] == KS_SGR_MOUSE +! && tp[slen2] == 'm')) +! { + cmd_complete = 1; + break; + } + } + p += j; +! if (cmd_complete && getdigits(&p) == mouse_code) +! { + slen += j; /* skip the \033[ */ + continue; + } +*************** +*** 4302,4307 **** +--- 4356,4364 ---- + #ifdef FEAT_MOUSE_URXVT + || key_name[0] == (int)KS_URXVT_MOUSE + #endif ++ #ifdef FEAT_MOUSE_SGR ++ || key_name[0] == KS_SGR_MOUSE ++ #endif + ) + { + # if !defined(MSWIN) && !defined(MSDOS) +*** ../vim-7.3.631/src/version.c 2012-08-15 14:04:50.000000000 +0200 +--- src/version.c 2012-08-15 15:47:30.000000000 +0200 +*************** +*** 384,389 **** +--- 384,394 ---- + # else + "-mouse_urxvt", + # endif ++ # ifdef FEAT_MOUSE_SGR ++ "+mouse_sgr", ++ # else ++ "-mouse_sgr", ++ # endif + #endif + #ifdef __QNX__ + # ifdef FEAT_MOUSE_PTERM +*** ../vim-7.3.631/src/version.c 2012-08-15 14:04:50.000000000 +0200 +--- src/version.c 2012-08-15 15:47:30.000000000 +0200 +*************** +*** 716,717 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 632, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +243. You unsuccessfully try to download a pizza from www.dominos.com. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.633 b/7.3.633 new file mode 100644 index 0000000..899ccb3 --- /dev/null +++ b/7.3.633 @@ -0,0 +1,81 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.633 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.633 +Problem: Selection remains displayed as selected after selecting another + text. +Solution: Call xterm_update() before select(). (Andrew Pimlott) +Files: src/os_unix.c + + +*** ../vim-7.3.632/src/os_unix.c 2012-08-15 16:20:59.000000000 +0200 +--- src/os_unix.c 2012-08-15 17:15:58.000000000 +0200 +*************** +*** 5196,5201 **** +--- 5196,5205 ---- + FD_SET(ConnectionNumber(xterm_dpy), &rfds); + if (maxfd < ConnectionNumber(xterm_dpy)) + maxfd = ConnectionNumber(xterm_dpy); ++ ++ /* An event may have already been read but not handled. In ++ * particulary, XFlush may cause this. */ ++ xterm_update(); + } + # endif + # ifdef FEAT_MOUSE_GPM +*************** +*** 5216,5229 **** + maxfd = xsmp_icefd; + } + # endif +! #ifdef FEAT_NETBEANS_INTG + if (nb_fd != -1) + { + FD_SET(nb_fd, &rfds); + if (maxfd < nb_fd) + maxfd = nb_fd; + } +! #endif + + # ifdef OLD_VMS + /* Old VMS as v6.2 and older have broken select(). It waits more than +--- 5220,5233 ---- + maxfd = xsmp_icefd; + } + # endif +! # ifdef FEAT_NETBEANS_INTG + if (nb_fd != -1) + { + FD_SET(nb_fd, &rfds); + if (maxfd < nb_fd) + maxfd = nb_fd; + } +! # endif + + # ifdef OLD_VMS + /* Old VMS as v6.2 and older have broken select(). It waits more than +*** ../vim-7.3.632/src/version.c 2012-08-15 16:20:59.000000000 +0200 +--- src/version.c 2012-08-15 17:22:17.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 633, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +245. You use Real Audio to listen to a radio station from a distant + city rather than turn on your stereo system. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.634 b/7.3.634 new file mode 100644 index 0000000..3262bab --- /dev/null +++ b/7.3.634 @@ -0,0 +1,57 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.634 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.634 +Problem: Month/Day format for undo is confusing. (Marcin Szamotulski) +Solution: Always use Year/Month/Day, should work for everybody. +Files: src/undo.c + + +*** ../vim-7.3.633/src/undo.c 2012-06-01 13:46:06.000000000 +0200 +--- src/undo.c 2012-08-23 12:43:24.000000000 +0200 +*************** +*** 2880,2890 **** + if (time(NULL) - tt < (60L * 60L * 12L)) + /* within 12 hours */ + (void)strftime((char *)buf, buflen, "%H:%M:%S", curtime); +- else if (time(NULL) - tt < (60L * 60L * 24L * 180L)) +- /* within 6 months */ +- (void)strftime((char *)buf, buflen, "%m/%d %H:%M:%S", curtime); + else +! /* long ago */ + (void)strftime((char *)buf, buflen, "%Y/%m/%d %H:%M:%S", curtime); + } + else +--- 2880,2887 ---- + if (time(NULL) - tt < (60L * 60L * 12L)) + /* within 12 hours */ + (void)strftime((char *)buf, buflen, "%H:%M:%S", curtime); + else +! /* longer ago */ + (void)strftime((char *)buf, buflen, "%Y/%m/%d %H:%M:%S", curtime); + } + else +*** ../vim-7.3.633/src/version.c 2012-08-15 17:26:53.000000000 +0200 +--- src/version.c 2012-08-23 12:58:36.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 634, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +10E. You start counting in hex. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.635 b/7.3.635 new file mode 100644 index 0000000..4a67702 --- /dev/null +++ b/7.3.635 @@ -0,0 +1,50 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.635 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.635 +Problem: Issue 21: System call during startup sets 'lines' to a wrong + value. (Karl Yngve) +Solution: Don't set the shell size while the GUI is still starting up. + (Christian Brabandt) +Files: src/ui.c + + +*** ../vim-7.3.634/src/ui.c 2012-07-10 16:49:08.000000000 +0200 +--- src/ui.c 2012-08-23 13:25:26.000000000 +0200 +*************** +*** 298,303 **** +--- 298,306 ---- + int retval; + + #ifdef FEAT_GUI ++ if (gui.starting) ++ /* possibly a system call during startup, check later */ ++ return OK; + if (gui.in_use) + retval = gui_get_shellsize(); + else +*** ../vim-7.3.634/src/version.c 2012-08-23 12:58:56.000000000 +0200 +--- src/version.c 2012-08-23 13:27:00.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 635, + /**/ + +-- +ARTHUR: This new learning amazes me, Sir Bedevere. Explain again how sheep's + bladders may be employed to prevent earthquakes. + "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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.636 b/7.3.636 new file mode 100644 index 0000000..453a7fc --- /dev/null +++ b/7.3.636 @@ -0,0 +1,148 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.636 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.636 (after 7.3.625) +Problem: Not all zero-width matches handled correctly for "gn". +Solution: Move zero-width detection to a separate function. (Christian + Brabandt) +Files: src/search.c + + +*** ../vim-7.3.635/src/search.c 2012-08-08 15:27:54.000000000 +0200 +--- src/search.c 2012-08-23 15:52:50.000000000 +0200 +*************** +*** 4526,4531 **** +--- 4526,4533 ---- + #endif /* FEAT_TEXTOBJ */ + + #if defined(FEAT_VISUAL) || defined(PROTO) ++ static int is_zerowidth __ARGS((char_u *pattern)); ++ + /* + * Find next search match under cursor, cursor at end. + * Used while an operator is pending, and in Visual mode. +*************** +*** 4546,4556 **** + int visual_active = FALSE; + int flags = 0; + pos_T save_VIsual; +- regmmatch_T regmatch; +- int nmatched = 0; + int zerowidth = FALSE; + +- + /* wrapping should not occur */ + p_ws = FALSE; + +--- 4548,4555 ---- +*************** +*** 4583,4606 **** + else + orig_pos = pos = start_pos = curwin->w_cursor; + +! /* +! * Check for zero-width pattern. +! */ +! if (search_regcomp(spats[last_idx].pat, RE_SEARCH, RE_SEARCH, +! ((SEARCH_HIS + SEARCH_KEEP)), ®match) == FAIL) + return FAIL; + +- /* Zero-width pattern should match somewhere, then we can check if start +- * and end are in the same position. */ +- nmatched = vim_regexec_multi(®match, curwin, curbuf, +- curwin->w_cursor.lnum, (colnr_T)0, NULL); +- if (called_emsg) +- return FAIL; +- if (nmatched && regmatch.startpos[0].lnum == regmatch.endpos[0].lnum +- && regmatch.endpos[0].col == regmatch.startpos[0].col) +- zerowidth = TRUE; +- vim_free(regmatch.regprog); +- + /* + * The trick is to first search backwards and then search forward again, + * so that a match at the current cursor position will be correctly +--- 4582,4592 ---- + else + orig_pos = pos = start_pos = curwin->w_cursor; + +! /* Is the pattern is zero-width? */ +! zerowidth = is_zerowidth(spats[last_idx].pat); +! if (zerowidth == -1) + return FAIL; + + /* + * The trick is to first search backwards and then search forward again, + * so that a match at the current cursor position will be correctly +*************** +*** 4693,4698 **** +--- 4679,4721 ---- + + return OK; + } ++ ++ /* ++ * Check if the pattern is zero-width. ++ * Returns TRUE, FALSE or -1 for failure. ++ */ ++ static int ++ is_zerowidth(pattern) ++ char_u *pattern; ++ { ++ regmmatch_T regmatch; ++ int nmatched = 0; ++ int result = -1; ++ pos_T pos; ++ ++ if (search_regcomp(pattern, RE_SEARCH, RE_SEARCH, ++ SEARCH_KEEP, ®match) == FAIL) ++ return -1; ++ ++ /* move to match */ ++ clearpos(&pos); ++ if (searchit(curwin, curbuf, &pos, FORWARD, spats[last_idx].pat, 1, ++ SEARCH_KEEP, RE_SEARCH, 0, NULL) != FAIL) ++ { ++ /* Zero-width pattern should match somewhere, then we can check if ++ * start and end are in the same position. */ ++ nmatched = vim_regexec_multi(®match, curwin, curbuf, ++ pos.lnum, (colnr_T)0, NULL); ++ ++ if (!called_emsg) ++ result = (nmatched != 0 ++ && regmatch.startpos[0].lnum == regmatch.endpos[0].lnum ++ && regmatch.startpos[0].col == regmatch.endpos[0].col); ++ } ++ ++ vim_free(regmatch.regprog); ++ return result; ++ } + #endif /* FEAT_VISUAL */ + + #if defined(FEAT_LISP) || defined(FEAT_CINDENT) || defined(FEAT_TEXTOBJ) \ +*** ../vim-7.3.635/src/version.c 2012-08-23 13:28:50.000000000 +0200 +--- src/version.c 2012-08-23 15:25:23.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 636, + /**/ + +-- +Edison's greatest achievement came in 1879, when he invented the +electric company. Edison's design was a brilliant adaptation of the +simple electrical circuit: the electric company sends electricity +through a wire to a customer, then immediately gets the electricity +back through another wire + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.637 b/7.3.637 new file mode 100644 index 0000000..f7f1d90 --- /dev/null +++ b/7.3.637 @@ -0,0 +1,94 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.637 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.637 +Problem: Cannot catch the error caused by a foldopen when there is no fold. + (ZyX, Issue 48) +Solution: Do not break out of the loop early when inside try/catch. + (Christian Brabandt) Except when there is a syntax error. +Files: src/ex_docmd.c, src/globals.h + + +*** ../vim-7.3.636/src/ex_docmd.c 2012-08-15 14:04:50.000000000 +0200 +--- src/ex_docmd.c 2012-08-23 18:39:08.000000000 +0200 +*************** +*** 1295,1301 **** + && cstack.cs_trylevel == 0 + #endif + ) +! && !(did_emsg && used_getline + && (getline_equal(fgetline, cookie, getexmodeline) + || getline_equal(fgetline, cookie, getexline))) + && (next_cmdline != NULL +--- 1295,1308 ---- + && cstack.cs_trylevel == 0 + #endif + ) +! && !(did_emsg +! #ifdef FEAT_EVAL +! /* Keep going when inside try/catch, so that the error can be +! * dealth with, except when it is a syntax error, it may cause +! * the :endtry to be missed. */ +! && (cstack.cs_trylevel == 0 || did_emsg_syntax) +! #endif +! && used_getline + && (getline_equal(fgetline, cookie, getexmodeline) + || getline_equal(fgetline, cookie, getexline))) + && (next_cmdline != NULL +*************** +*** 1305,1310 **** +--- 1312,1318 ---- + || (flags & DOCMD_REPEAT))); + + vim_free(cmdline_copy); ++ did_emsg_syntax = FALSE; + #ifdef FEAT_EVAL + free_cmdlines(&lines_ga); + ga_clear(&lines_ga); +*************** +*** 2137,2142 **** +--- 2145,2151 ---- + if (!sourcing) + append_command(*cmdlinep); + errormsg = IObuff; ++ did_emsg_syntax = TRUE; + } + goto doend; + } +*** ../vim-7.3.636/src/globals.h 2012-07-10 16:49:08.000000000 +0200 +--- src/globals.h 2012-08-23 18:29:09.000000000 +0200 +*************** +*** 183,188 **** +--- 183,190 ---- + #endif + EXTERN int did_emsg; /* set by emsg() when the message + is displayed or thrown */ ++ EXTERN int did_emsg_syntax; /* did_emsg set because of a ++ syntax error */ + EXTERN int called_emsg; /* always set by emsg() */ + EXTERN int ex_exitval INIT(= 0); /* exit value for ex mode */ + EXTERN int emsg_on_display INIT(= FALSE); /* there is an error message */ +*** ../vim-7.3.636/src/version.c 2012-08-23 15:53:00.000000000 +0200 +--- src/version.c 2012-08-23 17:59:12.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 637, + /**/ + +-- +GOD: That is your purpose Arthur ... the Quest for the Holy Grail ... + "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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.638 b/7.3.638 new file mode 100644 index 0000000..f88a939 --- /dev/null +++ b/7.3.638 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.638 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.638 +Problem: Unecessary redraw of the previous character. +Solution: Check if the character is double-width. (Jon Long) +Files: src/screen.c + + +*** ../vim-7.3.637/src/screen.c 2012-07-10 16:49:08.000000000 +0200 +--- src/screen.c 2012-08-23 18:49:33.000000000 +0200 +*************** +*** 5332,5339 **** + && (ScreenLinesUC[off_from] != ScreenLinesUC[off_to] + || (ScreenLinesUC[off_from] != 0 + && comp_char_differs(off_from, off_to)) +! || (cols > 1 && ScreenLines[off_from + 1] +! != ScreenLines[off_to + 1]))) + #endif + )) + return TRUE; +--- 5332,5340 ---- + && (ScreenLinesUC[off_from] != ScreenLinesUC[off_to] + || (ScreenLinesUC[off_from] != 0 + && comp_char_differs(off_from, off_to)) +! || ((*mb_off2cells)(off_from, off_from + cols) > 1 +! && ScreenLines[off_from + 1] +! != ScreenLines[off_to + 1]))) + #endif + )) + return TRUE; +*** ../vim-7.3.637/src/version.c 2012-08-23 18:43:06.000000000 +0200 +--- src/version.c 2012-08-23 18:47:11.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 638, + /**/ + +-- +There is a fine line between courage and foolishness. +Unfortunately, it's not a fence. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/README.patches b/README.patches index 63d94e6..dfe8b80 100644 --- a/README.patches +++ b/README.patches @@ -653,3 +653,19 @@ Individual patches for Vim 7.3: 4897 7.3.620 building with recent Ruby on Win32 doesn't work 2259 7.3.621 compiler warnings on 64 bit windows 1867 7.3.622 XPM library for Win32 can't be found + 2426 7.3.623 Perl 5.14 commands crash Vim on MS-Windows + 1800 7.3.624 when cancelling input() it returns the third argument + 4327 7.3.625 "gn" does not handle zero-width matches correctly + 1500 7.3.626 Python interface doesn't build with Python 2.4 or older + 2803 7.3.627 expression not evaluated when using "n" flag with ":s" + 1802 7.3.628 ":open!" results in a confusing error message + 12019 7.3.629 there is no way to make 'shiftwidth' follow 'tabstop' + 1487 7.3.630 "|" does not behave correctly when 'virtualedit' is set + 10100 7.3.631 cannot complete user names + 14770 7.3.632 cannot select beyond 222 columns with the mouse in xterm + 2238 7.3.633 selection remains highlighted after selecting another text + 1884 7.3.634 Month/Day format for undo is confusing + 1586 7.3.635 system call during startup sets 'lines' to a wrong value + 4539 7.3.636 (after 7.3.625) "gn" fails for some zero-width matches + 3117 7.3.637 cannot catch error caused by a foldopen when there is no fold + 1783 7.3.638 unecessary redraw of the previous character diff --git a/vim-7.3-manpage-typo-668894-675480.patch b/vim-7.3-manpage-typo-668894-675480.patch new file mode 100644 index 0000000..cb4ccd1 --- /dev/null +++ b/vim-7.3-manpage-typo-668894-675480.patch @@ -0,0 +1,21 @@ +diff -up vim73/runtime/doc/vim.1.668894 vim73/runtime/doc/vim.1 +--- vim73/runtime/doc/vim.1.668894 2010-05-15 13:04:00.000000000 +0200 ++++ vim73/runtime/doc/vim.1 2012-08-28 12:41:36.000000000 +0200 +@@ -73,7 +73,7 @@ To edit a file that starts with a dash, + .TP + \- + The file to edit is read from stdin. Commands are read from stderr, which +-should be a tty. ++should be a TTY. + .TP + \-t {tag} + The file to edit and the initial cursor position depends on a "tag", a sort +@@ -321,7 +321,7 @@ When N is omitted, open one tab page for + \-R + Read-only mode. + The 'readonly' option will be set. +-You can still edit the buffer, but will be prevented from accidently ++You can still edit the buffer, but will be prevented from accidentally + overwriting a file. + If you do want to overwrite a file, add an exclamation mark to the Ex command, + as in ":w!". diff --git a/vim.spec b/vim.spec index 6d569b2..527c445 100644 --- a/vim.spec +++ b/vim.spec @@ -18,7 +18,7 @@ #used for pre-releases: %define beta %{nil} %define vimdir vim73%{?beta} -%define patchlevel 622 +%define patchlevel 638 Summary: The VIM editor URL: http://www.vim.org/ @@ -678,18 +678,34 @@ Patch619: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.619 Patch620: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.620 Patch621: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.621 Patch622: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.622 +Patch623: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.623 +Patch624: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.624 +Patch625: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.625 +Patch626: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.626 +Patch627: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.627 +Patch628: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.628 +Patch629: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.629 +Patch630: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.630 +Patch631: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.631 +Patch632: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.632 +Patch633: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.633 +Patch634: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.634 +Patch635: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.635 +Patch636: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.636 +Patch637: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.637 +Patch638: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.638 Patch3000: vim-7.3-syntax.patch Patch3002: vim-7.1-nowarnings.patch -Patch3003: vim-7.0-rclocation.patch -Patch3004: vim-6.4-checkhl.patch -Patch3005: vim-7.3-fstabsyntax.patch -Patch3006: vim-7.0-warning.patch -Patch3007: vim-7.0-syncolor.patch -Patch3008: vim-7.0-specedit.patch -Patch3009: vim72-rh514717.patch -Patch3010: vim-7.3-bug816848.patch -Patch3011: vim-7.3-spec-epoch.patch +Patch3004: vim-7.0-rclocation.patch +Patch3006: vim-6.4-checkhl.patch +Patch3007: vim-7.3-fstabsyntax.patch +Patch3008: vim-7.0-warning.patch +Patch3009: vim-7.0-syncolor.patch +Patch3010: vim-7.0-specedit.patch +Patch3011: vim72-rh514717.patch +Patch3012: vim-7.3-bug816848.patch +Patch3013: vim-7.3-manpage-typo-668894-675480.patch Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: python-devel ncurses-devel gettext perl-devel @@ -1446,6 +1462,22 @@ perl -pi -e "s,bin/nawk,bin/awk,g" runtime/tools/mve.awk %patch620 -p0 %patch621 -p0 %patch622 -p0 +%patch623 -p0 +%patch624 -p0 +%patch625 -p0 +%patch626 -p0 +%patch627 -p0 +%patch628 -p0 +%patch629 -p0 +%patch630 -p0 +%patch631 -p0 +%patch632 -p0 +%patch633 -p0 +%patch634 -p0 +%patch635 -p0 +%patch636 -p0 +%patch637 -p0 +%patch638 -p0 # install spell files @@ -1455,15 +1487,15 @@ perl -pi -e "s,bin/nawk,bin/awk,g" runtime/tools/mve.awk %patch3000 -p1 %patch3002 -p1 -%patch3003 -p1 %patch3004 -p1 -%patch3005 -p1 %patch3006 -p1 %patch3007 -p1 %patch3008 -p1 %patch3009 -p1 %patch3010 -p1 %patch3011 -p1 +%patch3012 -p1 +%patch3013 -p1 %build cp -f %{SOURCE5} . @@ -1699,6 +1731,7 @@ done for i in rvim.1 gvim.1 gvimdiff.1; do echo ".so man1/vim.1" > $RPM_BUILD_ROOT/%{_mandir}/man1/$i done +touch $RPM_BUILD_ROOT/%{_datadir}/%{name}/vimfiles/doc/tags %post X11 touch --no-create %{_datadir}/icons/hicolor @@ -1871,6 +1904,7 @@ rm -rf $RPM_BUILD_ROOT %dir %{_datadir}/%{name}/vimfiles/colors %dir %{_datadir}/%{name}/vimfiles/compiler %dir %{_datadir}/%{name}/vimfiles/doc +%ghost %{_datadir}/%{name}/vimfiles/doc/tags %dir %{_datadir}/%{name}/vimfiles/ftdetect %dir %{_datadir}/%{name}/vimfiles/ftplugin %dir %{_datadir}/%{name}/vimfiles/indent @@ -1901,6 +1935,14 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/icons/hicolor/*/apps/* %changelog +* Tue Aug 28 2012 Karsten Hopp 7.3.638-2 +- fix some man page typos (#668894, #675480) +- own usr/share/vim/vimfiles/doc/tags (#845564) +- add path to csope database (#844843) + +* Tue Aug 28 2012 Karsten Hopp 7.3.638-1 +- patchlevel 638 + * Mon Aug 06 2012 Karsten Hopp 2:7.3.622-2 - add epoch to spec.vim and automatic changelog entries diff --git a/vimrc b/vimrc index b02134d..6707ae4 100644 --- a/vimrc +++ b/vimrc @@ -36,7 +36,7 @@ if has("cscope") && filereadable("/usr/bin/cscope") set nocsverb " add any database in current directory if filereadable("cscope.out") - cs add cscope.out + cs add $PWD/cscope.out " else add database pointed to by environment elseif $CSCOPE_DB != "" cs add $CSCOPE_DB