Merge commit 'c8d55a4ffc9503371b9738188e056eba33134f47' into f18

Conflicts:
	README.patches
	vim.spec
This commit is contained in:
Karsten Hopp 2012-08-28 15:41:34 +02:00
commit 77fc86d85a
20 changed files with 2414 additions and 11 deletions

92
7.3.623 Normal file
View File

@ -0,0 +1,92 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.623
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
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 ///

52
7.3.624 Normal file
View File

@ -0,0 +1,52 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.624
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
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 ///

140
7.3.625 Normal file
View File

@ -0,0 +1,140 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.625
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
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)), &regmatch) == 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(&regmatch, 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 ///

49
7.3.626 Normal file
View File

@ -0,0 +1,49 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.626
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
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 ///

102
7.3.627 Normal file
View File

@ -0,0 +1,102 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.627
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
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(&regmatch,
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 ///

54
7.3.628 Normal file
View File

@ -0,0 +1,54 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.628
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
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 ///

437
7.3.629 Normal file
View File

@ -0,0 +1,437 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.629
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
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 ///

48
7.3.630 Normal file
View File

@ -0,0 +1,48 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.630
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
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 ///

322
7.3.631 Normal file
View File

@ -0,0 +1,322 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.631
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
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<Tab> will be replaced by user's home
+ * directory i.e. something like ~user<Tab> -> /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 ///

537
7.3.632 Normal file
View File

@ -0,0 +1,537 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.632
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
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 <ESC>[#;#;#M, but we are matching <ESC>[ */
! || key_name[0] == KS_URXVT_MOUSE)
{
/* Check for xterm version string: "<Esc>[>{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 <ESC>[#;#;#M, but we are matching <ESC>[ */
! || key_name[0] == KS_URXVT_MOUSE
! || key_name[0] == KS_SGR_MOUSE)
{
/* Check for xterm version string: "<Esc>[>{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 ///

81
7.3.633 Normal file
View File

@ -0,0 +1,81 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.633
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
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 ///

57
7.3.634 Normal file
View File

@ -0,0 +1,57 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.634
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
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 ///

50
7.3.635 Normal file
View File

@ -0,0 +1,50 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.635
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
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 ///

148
7.3.636 Normal file
View File

@ -0,0 +1,148 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.636
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
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)), &regmatch) == 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(&regmatch, 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, &regmatch) == 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(&regmatch, 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 ///

94
7.3.637 Normal file
View File

@ -0,0 +1,94 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.637
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
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 ///

55
7.3.638 Normal file
View File

@ -0,0 +1,55 @@
To: vim_dev@googlegroups.com
Subject: Patch 7.3.638
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
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 ///

View File

@ -653,3 +653,22 @@ 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
<<<<<<< HEAD
=======
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
>>>>>>> c8d55a4ffc9503371b9738188e056eba33134f47

View File

@ -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!".

View File

@ -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,35 @@ 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
Patch3003: vim-6.1-rh3.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 +1463,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
@ -1464,6 +1497,8 @@ perl -pi -e "s,bin/nawk,bin/awk,g" runtime/tools/mve.awk
%patch3009 -p1
%patch3010 -p1
%patch3011 -p1
%patch3012 -p1
%patch3013 -p1
%build
cp -f %{SOURCE5} .
@ -1699,6 +1734,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 +1907,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 +1938,14 @@ rm -rf $RPM_BUILD_ROOT
%{_datadir}/icons/hicolor/*/apps/*
%changelog
* Tue Aug 28 2012 Karsten Hopp <karsten@redhat.com> 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 <karsten@redhat.com> 7.3.638-1
- patchlevel 638
* Mon Aug 06 2012 Karsten Hopp <karsten@redhat.com> 2:7.3.622-2
- add epoch to spec.vim and automatic changelog entries

2
vimrc
View File

@ -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