patchlevel 009
This commit is contained in:
commit
edf2433d23
489
7.4.001
Normal file
489
7.4.001
Normal file
@ -0,0 +1,489 @@
|
||||
To: vim_dev@googlegroups.com
|
||||
Subject: Patch 7.4.001
|
||||
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.4.001
|
||||
Problem: Character classes such as [a-z] to not react to 'ignorecase'.
|
||||
Breaks man page highlighting. (Mario Grgic)
|
||||
Solution: Add separate items for classes that react to 'ignorecase'. Clean
|
||||
up logic handling character classes. Add more tests.
|
||||
Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok
|
||||
|
||||
|
||||
*** ../vim-7.4.000/src/regexp_nfa.c 2013-08-01 18:27:51.000000000 +0200
|
||||
--- src/regexp_nfa.c 2013-08-14 11:49:50.000000000 +0200
|
||||
***************
|
||||
*** 29,34 ****
|
||||
--- 29,37 ----
|
||||
# define NFA_REGEXP_DEBUG_LOG "nfa_regexp_debug.log"
|
||||
#endif
|
||||
|
||||
+ /* Added to NFA_ANY - NFA_NUPPER_IC to include a NL. */
|
||||
+ #define NFA_ADD_NL 31
|
||||
+
|
||||
enum
|
||||
{
|
||||
NFA_SPLIT = -1024,
|
||||
***************
|
||||
*** 183,188 ****
|
||||
--- 186,198 ----
|
||||
NFA_NLOWER, /* Match non-lowercase char */
|
||||
NFA_UPPER, /* Match uppercase char */
|
||||
NFA_NUPPER, /* Match non-uppercase char */
|
||||
+ NFA_LOWER_IC, /* Match [a-z] */
|
||||
+ NFA_NLOWER_IC, /* Match [^a-z] */
|
||||
+ NFA_UPPER_IC, /* Match [A-Z] */
|
||||
+ NFA_NUPPER_IC, /* Match [^A-Z] */
|
||||
+
|
||||
+ NFA_FIRST_NL = NFA_ANY + NFA_ADD_NL,
|
||||
+ NFA_LAST_NL = NFA_NUPPER_IC + NFA_ADD_NL,
|
||||
|
||||
NFA_CURSOR, /* Match cursor pos */
|
||||
NFA_LNUM, /* Match line number */
|
||||
***************
|
||||
*** 199,207 ****
|
||||
NFA_MARK_LT, /* Match < mark */
|
||||
NFA_VISUAL, /* Match Visual area */
|
||||
|
||||
- NFA_FIRST_NL = NFA_ANY + ADD_NL,
|
||||
- NFA_LAST_NL = NFA_NUPPER + ADD_NL,
|
||||
-
|
||||
/* Character classes [:alnum:] etc */
|
||||
NFA_CLASS_ALNUM,
|
||||
NFA_CLASS_ALPHA,
|
||||
--- 209,214 ----
|
||||
***************
|
||||
*** 578,583 ****
|
||||
--- 585,592 ----
|
||||
* On failure, return 0 (=FAIL)
|
||||
* Start points to the first char of the range, while end should point
|
||||
* to the closing brace.
|
||||
+ * Keep in mind that 'ignorecase' applies at execution time, thus [a-z] may
|
||||
+ * need to be interpreted as [a-zA-Z].
|
||||
*/
|
||||
static int
|
||||
nfa_recognize_char_class(start, end, extra_newl)
|
||||
***************
|
||||
*** 681,687 ****
|
||||
return FAIL;
|
||||
|
||||
if (newl == TRUE)
|
||||
! extra_newl = ADD_NL;
|
||||
|
||||
switch (config)
|
||||
{
|
||||
--- 690,696 ----
|
||||
return FAIL;
|
||||
|
||||
if (newl == TRUE)
|
||||
! extra_newl = NFA_ADD_NL;
|
||||
|
||||
switch (config)
|
||||
{
|
||||
***************
|
||||
*** 710,722 ****
|
||||
case CLASS_not | CLASS_az | CLASS_AZ:
|
||||
return extra_newl + NFA_NALPHA;
|
||||
case CLASS_az:
|
||||
! return extra_newl + NFA_LOWER;
|
||||
case CLASS_not | CLASS_az:
|
||||
! return extra_newl + NFA_NLOWER;
|
||||
case CLASS_AZ:
|
||||
! return extra_newl + NFA_UPPER;
|
||||
case CLASS_not | CLASS_AZ:
|
||||
! return extra_newl + NFA_NUPPER;
|
||||
}
|
||||
return FAIL;
|
||||
}
|
||||
--- 719,731 ----
|
||||
case CLASS_not | CLASS_az | CLASS_AZ:
|
||||
return extra_newl + NFA_NALPHA;
|
||||
case CLASS_az:
|
||||
! return extra_newl + NFA_LOWER_IC;
|
||||
case CLASS_not | CLASS_az:
|
||||
! return extra_newl + NFA_NLOWER_IC;
|
||||
case CLASS_AZ:
|
||||
! return extra_newl + NFA_UPPER_IC;
|
||||
case CLASS_not | CLASS_AZ:
|
||||
! return extra_newl + NFA_NUPPER_IC;
|
||||
}
|
||||
return FAIL;
|
||||
}
|
||||
***************
|
||||
*** 914,920 ****
|
||||
break;
|
||||
}
|
||||
|
||||
! extra = ADD_NL;
|
||||
|
||||
/* "\_[" is collection plus newline */
|
||||
if (c == '[')
|
||||
--- 923,929 ----
|
||||
break;
|
||||
}
|
||||
|
||||
! extra = NFA_ADD_NL;
|
||||
|
||||
/* "\_[" is collection plus newline */
|
||||
if (c == '[')
|
||||
***************
|
||||
*** 970,976 ****
|
||||
}
|
||||
#endif
|
||||
EMIT(nfa_classcodes[p - classchars]);
|
||||
! if (extra == ADD_NL)
|
||||
{
|
||||
EMIT(NFA_NEWL);
|
||||
EMIT(NFA_OR);
|
||||
--- 979,985 ----
|
||||
}
|
||||
#endif
|
||||
EMIT(nfa_classcodes[p - classchars]);
|
||||
! if (extra == NFA_ADD_NL)
|
||||
{
|
||||
EMIT(NFA_NEWL);
|
||||
EMIT(NFA_OR);
|
||||
***************
|
||||
*** 1240,1260 ****
|
||||
{
|
||||
/*
|
||||
* Try to reverse engineer character classes. For example,
|
||||
! * recognize that [0-9] stands for \d and [A-Za-z_] with \h,
|
||||
* and perform the necessary substitutions in the NFA.
|
||||
*/
|
||||
result = nfa_recognize_char_class(regparse, endp,
|
||||
! extra == ADD_NL);
|
||||
if (result != FAIL)
|
||||
{
|
||||
! if (result >= NFA_DIGIT && result <= NFA_NUPPER)
|
||||
! EMIT(result);
|
||||
! else /* must be char class + newline */
|
||||
{
|
||||
! EMIT(result - ADD_NL);
|
||||
EMIT(NFA_NEWL);
|
||||
EMIT(NFA_OR);
|
||||
}
|
||||
regparse = endp;
|
||||
mb_ptr_adv(regparse);
|
||||
return OK;
|
||||
--- 1249,1269 ----
|
||||
{
|
||||
/*
|
||||
* Try to reverse engineer character classes. For example,
|
||||
! * recognize that [0-9] stands for \d and [A-Za-z_] for \h,
|
||||
* and perform the necessary substitutions in the NFA.
|
||||
*/
|
||||
result = nfa_recognize_char_class(regparse, endp,
|
||||
! extra == NFA_ADD_NL);
|
||||
if (result != FAIL)
|
||||
{
|
||||
! if (result >= NFA_FIRST_NL && result <= NFA_LAST_NL)
|
||||
{
|
||||
! EMIT(result - NFA_ADD_NL);
|
||||
EMIT(NFA_NEWL);
|
||||
EMIT(NFA_OR);
|
||||
}
|
||||
+ else
|
||||
+ EMIT(result);
|
||||
regparse = endp;
|
||||
mb_ptr_adv(regparse);
|
||||
return OK;
|
||||
***************
|
||||
*** 1504,1510 ****
|
||||
* collection, add an OR below. But not for negated
|
||||
* range. */
|
||||
if (!negated)
|
||||
! extra = ADD_NL;
|
||||
}
|
||||
else
|
||||
{
|
||||
--- 1513,1519 ----
|
||||
* collection, add an OR below. But not for negated
|
||||
* range. */
|
||||
if (!negated)
|
||||
! extra = NFA_ADD_NL;
|
||||
}
|
||||
else
|
||||
{
|
||||
***************
|
||||
*** 1537,1543 ****
|
||||
EMIT(NFA_END_COLL);
|
||||
|
||||
/* \_[] also matches \n but it's not negated */
|
||||
! if (extra == ADD_NL)
|
||||
{
|
||||
EMIT(reg_string ? NL : NFA_NEWL);
|
||||
EMIT(NFA_OR);
|
||||
--- 1546,1552 ----
|
||||
EMIT(NFA_END_COLL);
|
||||
|
||||
/* \_[] also matches \n but it's not negated */
|
||||
! if (extra == NFA_ADD_NL)
|
||||
{
|
||||
EMIT(reg_string ? NL : NFA_NEWL);
|
||||
EMIT(NFA_OR);
|
||||
***************
|
||||
*** 2011,2017 ****
|
||||
if (c >= NFA_FIRST_NL && c <= NFA_LAST_NL)
|
||||
{
|
||||
addnl = TRUE;
|
||||
! c -= ADD_NL;
|
||||
}
|
||||
|
||||
STRCPY(code, "");
|
||||
--- 2020,2026 ----
|
||||
if (c >= NFA_FIRST_NL && c <= NFA_LAST_NL)
|
||||
{
|
||||
addnl = TRUE;
|
||||
! c -= NFA_ADD_NL;
|
||||
}
|
||||
|
||||
STRCPY(code, "");
|
||||
***************
|
||||
*** 2217,2222 ****
|
||||
--- 2226,2235 ----
|
||||
case NFA_NLOWER:STRCPY(code, "NFA_NLOWER"); break;
|
||||
case NFA_UPPER: STRCPY(code, "NFA_UPPER"); break;
|
||||
case NFA_NUPPER:STRCPY(code, "NFA_NUPPER"); break;
|
||||
+ case NFA_LOWER_IC: STRCPY(code, "NFA_LOWER_IC"); break;
|
||||
+ case NFA_NLOWER_IC: STRCPY(code, "NFA_NLOWER_IC"); break;
|
||||
+ case NFA_UPPER_IC: STRCPY(code, "NFA_UPPER_IC"); break;
|
||||
+ case NFA_NUPPER_IC: STRCPY(code, "NFA_NUPPER_IC"); break;
|
||||
|
||||
default:
|
||||
STRCPY(code, "CHAR(x)");
|
||||
***************
|
||||
*** 2687,2692 ****
|
||||
--- 2700,2709 ----
|
||||
case NFA_NLOWER:
|
||||
case NFA_UPPER:
|
||||
case NFA_NUPPER:
|
||||
+ case NFA_LOWER_IC:
|
||||
+ case NFA_NLOWER_IC:
|
||||
+ case NFA_UPPER_IC:
|
||||
+ case NFA_NUPPER_IC:
|
||||
/* possibly non-ascii */
|
||||
#ifdef FEAT_MBYTE
|
||||
if (has_mbyte)
|
||||
***************
|
||||
*** 3841,3846 ****
|
||||
--- 3858,3867 ----
|
||||
case NFA_NLOWER:
|
||||
case NFA_UPPER:
|
||||
case NFA_NUPPER:
|
||||
+ case NFA_LOWER_IC:
|
||||
+ case NFA_NLOWER_IC:
|
||||
+ case NFA_UPPER_IC:
|
||||
+ case NFA_NUPPER_IC:
|
||||
case NFA_START_COLL:
|
||||
case NFA_START_NEG_COLL:
|
||||
case NFA_NEWL:
|
||||
***************
|
||||
*** 5872,5877 ****
|
||||
--- 5893,5920 ----
|
||||
ADD_STATE_IF_MATCH(t->state);
|
||||
break;
|
||||
|
||||
+ case NFA_LOWER_IC: /* [a-z] */
|
||||
+ result = ri_lower(curc) || (ireg_ic && ri_upper(curc));
|
||||
+ ADD_STATE_IF_MATCH(t->state);
|
||||
+ break;
|
||||
+
|
||||
+ case NFA_NLOWER_IC: /* [^a-z] */
|
||||
+ result = curc != NUL
|
||||
+ && !(ri_lower(curc) || (ireg_ic && ri_upper(curc)));
|
||||
+ ADD_STATE_IF_MATCH(t->state);
|
||||
+ break;
|
||||
+
|
||||
+ case NFA_UPPER_IC: /* [A-Z] */
|
||||
+ result = ri_upper(curc) || (ireg_ic && ri_lower(curc));
|
||||
+ ADD_STATE_IF_MATCH(t->state);
|
||||
+ break;
|
||||
+
|
||||
+ case NFA_NUPPER_IC: /* ^[A-Z] */
|
||||
+ result = curc != NUL
|
||||
+ && !(ri_upper(curc) || (ireg_ic && ri_lower(curc)));
|
||||
+ ADD_STATE_IF_MATCH(t->state);
|
||||
+ break;
|
||||
+
|
||||
case NFA_BACKREF1:
|
||||
case NFA_BACKREF2:
|
||||
case NFA_BACKREF3:
|
||||
*** ../vim-7.4.000/src/testdir/test64.in 2013-08-01 17:45:33.000000000 +0200
|
||||
--- src/testdir/test64.in 2013-08-14 11:50:11.000000000 +0200
|
||||
***************
|
||||
*** 289,303 ****
|
||||
:call add(tl, [2, '.a\%$', " a\n "])
|
||||
:call add(tl, [2, '.a\%$', " a\n_a", "_a"])
|
||||
:"
|
||||
! :"""" Test recognition of some character classes
|
||||
! :call add(tl, [2, '[0-9]', '8', '8'])
|
||||
! :call add(tl, [2, '[^0-9]', '8'])
|
||||
! :call add(tl, [2, '[0-9a-fA-F]*', '0a7', '0a7'])
|
||||
! :call add(tl, [2, '[^0-9A-Fa-f]\+', '0a7'])
|
||||
! :call add(tl, [2, '[a-z_A-Z0-9]\+', 'aso_sfoij', 'aso_sfoij'])
|
||||
! :call add(tl, [2, '[a-z]', 'a', 'a'])
|
||||
! :call add(tl, [2, '[a-zA-Z]', 'a', 'a'])
|
||||
! :call add(tl, [2, '[A-Z]', 'a'])
|
||||
:call add(tl, [2, '\C[^A-Z]\+', 'ABCOIJDEOIFNSD jsfoij sa', ' jsfoij sa'])
|
||||
:"
|
||||
:"""" Tests for \z features
|
||||
--- 289,317 ----
|
||||
:call add(tl, [2, '.a\%$', " a\n "])
|
||||
:call add(tl, [2, '.a\%$', " a\n_a", "_a"])
|
||||
:"
|
||||
! :"""" Test recognition of character classes
|
||||
! :call add(tl, [2, '[0-7]\+', 'x0123456789x', '01234567'])
|
||||
! :call add(tl, [2, '[^0-7]\+', '0a;X+% 897', 'a;X+% 89'])
|
||||
! :call add(tl, [2, '[0-9]\+', 'x0123456789x', '0123456789'])
|
||||
! :call add(tl, [2, '[^0-9]\+', '0a;X+% 9', 'a;X+% '])
|
||||
! :call add(tl, [2, '[0-9a-fA-F]\+', 'x0189abcdefg', '0189abcdef'])
|
||||
! :call add(tl, [2, '[^0-9A-Fa-f]\+', '0189g;X+% ab', 'g;X+% '])
|
||||
! :call add(tl, [2, '[a-z_A-Z0-9]\+', ';+aso_SfOij ', 'aso_SfOij'])
|
||||
! :call add(tl, [2, '[^a-z_A-Z0-9]\+', 'aSo_;+% sfOij', ';+% '])
|
||||
! :call add(tl, [2, '[a-z_A-Z]\+', '0abyz_ABYZ;', 'abyz_ABYZ'])
|
||||
! :call add(tl, [2, '[^a-z_A-Z]\+', 'abAB_09;+% yzYZ', '09;+% '])
|
||||
! :call add(tl, [2, '[a-z]\+', '0abcxyz1', 'abcxyz'])
|
||||
! :call add(tl, [2, '[a-z]\+', 'AabxyzZ', 'abxyz'])
|
||||
! :call add(tl, [2, '[^a-z]\+', 'a;X09+% x', ';X09+% '])
|
||||
! :call add(tl, [2, '[^a-z]\+', 'abX0;%yz', 'X0;%'])
|
||||
! :call add(tl, [2, '[a-zA-Z]\+', '0abABxzXZ9', 'abABxzXZ'])
|
||||
! :call add(tl, [2, '[^a-zA-Z]\+', 'ab09_;+ XZ', '09_;+ '])
|
||||
! :call add(tl, [2, '[A-Z]\+', 'aABXYZz', 'ABXYZ'])
|
||||
! :call add(tl, [2, '[^A-Z]\+', 'ABx0;%YZ', 'x0;%'])
|
||||
! :call add(tl, [2, '[a-z]\+\c', '0abxyzABXYZ;', 'abxyzABXYZ'])
|
||||
! :call add(tl, [2, '[A-Z]\+\c', '0abABxzXZ9', 'abABxzXZ'])
|
||||
! :call add(tl, [2, '\c[^a-z]\+', 'ab09_;+ XZ', '09_;+ '])
|
||||
! :call add(tl, [2, '\c[^A-Z]\+', 'ab09_;+ XZ', '09_;+ '])
|
||||
:call add(tl, [2, '\C[^A-Z]\+', 'ABCOIJDEOIFNSD jsfoij sa', ' jsfoij sa'])
|
||||
:"
|
||||
:"""" Tests for \z features
|
||||
*** ../vim-7.4.000/src/testdir/test64.ok 2013-08-01 18:28:56.000000000 +0200
|
||||
--- src/testdir/test64.ok 2013-08-14 11:50:37.000000000 +0200
|
||||
***************
|
||||
*** 650,679 ****
|
||||
OK 0 - .a\%$
|
||||
OK 1 - .a\%$
|
||||
OK 2 - .a\%$
|
||||
! OK 0 - [0-9]
|
||||
! OK 1 - [0-9]
|
||||
! OK 2 - [0-9]
|
||||
! OK 0 - [^0-9]
|
||||
! OK 1 - [^0-9]
|
||||
! OK 2 - [^0-9]
|
||||
! OK 0 - [0-9a-fA-F]*
|
||||
! OK 1 - [0-9a-fA-F]*
|
||||
! OK 2 - [0-9a-fA-F]*
|
||||
OK 0 - [^0-9A-Fa-f]\+
|
||||
OK 1 - [^0-9A-Fa-f]\+
|
||||
OK 2 - [^0-9A-Fa-f]\+
|
||||
OK 0 - [a-z_A-Z0-9]\+
|
||||
OK 1 - [a-z_A-Z0-9]\+
|
||||
OK 2 - [a-z_A-Z0-9]\+
|
||||
! OK 0 - [a-z]
|
||||
! OK 1 - [a-z]
|
||||
! OK 2 - [a-z]
|
||||
! OK 0 - [a-zA-Z]
|
||||
! OK 1 - [a-zA-Z]
|
||||
! OK 2 - [a-zA-Z]
|
||||
! OK 0 - [A-Z]
|
||||
! OK 1 - [A-Z]
|
||||
! OK 2 - [A-Z]
|
||||
OK 0 - \C[^A-Z]\+
|
||||
OK 1 - \C[^A-Z]\+
|
||||
OK 2 - \C[^A-Z]\+
|
||||
--- 650,721 ----
|
||||
OK 0 - .a\%$
|
||||
OK 1 - .a\%$
|
||||
OK 2 - .a\%$
|
||||
! OK 0 - [0-7]\+
|
||||
! OK 1 - [0-7]\+
|
||||
! OK 2 - [0-7]\+
|
||||
! OK 0 - [^0-7]\+
|
||||
! OK 1 - [^0-7]\+
|
||||
! OK 2 - [^0-7]\+
|
||||
! OK 0 - [0-9]\+
|
||||
! OK 1 - [0-9]\+
|
||||
! OK 2 - [0-9]\+
|
||||
! OK 0 - [^0-9]\+
|
||||
! OK 1 - [^0-9]\+
|
||||
! OK 2 - [^0-9]\+
|
||||
! OK 0 - [0-9a-fA-F]\+
|
||||
! OK 1 - [0-9a-fA-F]\+
|
||||
! OK 2 - [0-9a-fA-F]\+
|
||||
OK 0 - [^0-9A-Fa-f]\+
|
||||
OK 1 - [^0-9A-Fa-f]\+
|
||||
OK 2 - [^0-9A-Fa-f]\+
|
||||
OK 0 - [a-z_A-Z0-9]\+
|
||||
OK 1 - [a-z_A-Z0-9]\+
|
||||
OK 2 - [a-z_A-Z0-9]\+
|
||||
! OK 0 - [^a-z_A-Z0-9]\+
|
||||
! OK 1 - [^a-z_A-Z0-9]\+
|
||||
! OK 2 - [^a-z_A-Z0-9]\+
|
||||
! OK 0 - [a-z_A-Z]\+
|
||||
! OK 1 - [a-z_A-Z]\+
|
||||
! OK 2 - [a-z_A-Z]\+
|
||||
! OK 0 - [^a-z_A-Z]\+
|
||||
! OK 1 - [^a-z_A-Z]\+
|
||||
! OK 2 - [^a-z_A-Z]\+
|
||||
! OK 0 - [a-z]\+
|
||||
! OK 1 - [a-z]\+
|
||||
! OK 2 - [a-z]\+
|
||||
! OK 0 - [a-z]\+
|
||||
! OK 1 - [a-z]\+
|
||||
! OK 2 - [a-z]\+
|
||||
! OK 0 - [^a-z]\+
|
||||
! OK 1 - [^a-z]\+
|
||||
! OK 2 - [^a-z]\+
|
||||
! OK 0 - [^a-z]\+
|
||||
! OK 1 - [^a-z]\+
|
||||
! OK 2 - [^a-z]\+
|
||||
! OK 0 - [a-zA-Z]\+
|
||||
! OK 1 - [a-zA-Z]\+
|
||||
! OK 2 - [a-zA-Z]\+
|
||||
! OK 0 - [^a-zA-Z]\+
|
||||
! OK 1 - [^a-zA-Z]\+
|
||||
! OK 2 - [^a-zA-Z]\+
|
||||
! OK 0 - [A-Z]\+
|
||||
! OK 1 - [A-Z]\+
|
||||
! OK 2 - [A-Z]\+
|
||||
! OK 0 - [^A-Z]\+
|
||||
! OK 1 - [^A-Z]\+
|
||||
! OK 2 - [^A-Z]\+
|
||||
! OK 0 - [a-z]\+\c
|
||||
! OK 1 - [a-z]\+\c
|
||||
! OK 2 - [a-z]\+\c
|
||||
! OK 0 - [A-Z]\+\c
|
||||
! OK 1 - [A-Z]\+\c
|
||||
! OK 2 - [A-Z]\+\c
|
||||
! OK 0 - \c[^a-z]\+
|
||||
! OK 1 - \c[^a-z]\+
|
||||
! OK 2 - \c[^a-z]\+
|
||||
! OK 0 - \c[^A-Z]\+
|
||||
! OK 1 - \c[^A-Z]\+
|
||||
! OK 2 - \c[^A-Z]\+
|
||||
OK 0 - \C[^A-Z]\+
|
||||
OK 1 - \C[^A-Z]\+
|
||||
OK 2 - \C[^A-Z]\+
|
||||
*** ../vim-7.4.000/src/version.c 2013-08-10 13:29:20.000000000 +0200
|
||||
--- src/version.c 2013-08-14 11:54:57.000000000 +0200
|
||||
***************
|
||||
*** 729,730 ****
|
||||
--- 729,732 ----
|
||||
{ /* Add new patch number below this line */
|
||||
+ /**/
|
||||
+ 1,
|
||||
/**/
|
||||
|
||||
--
|
||||
How many light bulbs does it take to change a person?
|
||||
|
||||
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
|
||||
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
|
||||
\\\ an exciting new programming language -- http://www.Zimbu.org ///
|
||||
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
|
77
7.4.002
Normal file
77
7.4.002
Normal file
@ -0,0 +1,77 @@
|
||||
To: vim_dev@googlegroups.com
|
||||
Subject: Patch 7.4.002
|
||||
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.4b.002
|
||||
Problem: Pattern with two alternative look-behind matches does not match.
|
||||
(Amadeus Demarzi)
|
||||
Solution: When comparing PIMs also compare their state ID to see if they are
|
||||
different.
|
||||
Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok
|
||||
|
||||
|
||||
*** ../vim-7.4.001/src/regexp_nfa.c 2013-08-14 12:05:54.000000000 +0200
|
||||
--- src/regexp_nfa.c 2013-08-14 13:12:09.000000000 +0200
|
||||
***************
|
||||
*** 3782,3787 ****
|
||||
--- 3782,3790 ----
|
||||
if (two_unused)
|
||||
/* one is used and two is not: not equal */
|
||||
return FALSE;
|
||||
+ /* compare the state id */
|
||||
+ if (one->state->id != two->state->id)
|
||||
+ return FALSE;
|
||||
/* compare the position */
|
||||
if (REG_MULTI)
|
||||
return one->end.pos.lnum == two->end.pos.lnum
|
||||
*** ../vim-7.4.001/src/testdir/test64.in 2013-08-14 12:05:54.000000000 +0200
|
||||
--- src/testdir/test64.in 2013-08-14 12:58:38.000000000 +0200
|
||||
***************
|
||||
*** 421,426 ****
|
||||
--- 421,429 ----
|
||||
:call add(tl, [2, '\(foo\)\@<=\>', 'barfoo', '', 'foo'])
|
||||
:call add(tl, [2, '\(foo\)\@<=.*', 'foobar', 'bar', 'foo'])
|
||||
:"
|
||||
+ :" complicated look-behind match
|
||||
+ :call add(tl, [2, '\(r\@<=\|\w\@<!\)\/', 'x = /word/;', '/'])
|
||||
+ :"
|
||||
:""""" \@>
|
||||
:call add(tl, [2, '\(a*\)\@>a', 'aaaa'])
|
||||
:call add(tl, [2, '\(a*\)\@>b', 'aaab', 'aaab', 'aaa'])
|
||||
*** ../vim-7.4.001/src/testdir/test64.ok 2013-08-14 12:05:54.000000000 +0200
|
||||
--- src/testdir/test64.ok 2013-08-14 13:14:09.000000000 +0200
|
||||
***************
|
||||
*** 974,979 ****
|
||||
--- 974,982 ----
|
||||
OK 0 - \(foo\)\@<=.*
|
||||
OK 1 - \(foo\)\@<=.*
|
||||
OK 2 - \(foo\)\@<=.*
|
||||
+ OK 0 - \(r\@<=\|\w\@<!\)\/
|
||||
+ OK 1 - \(r\@<=\|\w\@<!\)\/
|
||||
+ OK 2 - \(r\@<=\|\w\@<!\)\/
|
||||
OK 0 - \(a*\)\@>a
|
||||
OK 1 - \(a*\)\@>a
|
||||
OK 2 - \(a*\)\@>a
|
||||
*** ../vim-7.4.001/src/version.c 2013-08-14 12:05:54.000000000 +0200
|
||||
--- src/version.c 2013-08-14 13:13:45.000000000 +0200
|
||||
***************
|
||||
*** 729,730 ****
|
||||
--- 729,732 ----
|
||||
{ /* Add new patch number below this line */
|
||||
+ /**/
|
||||
+ 2,
|
||||
/**/
|
||||
|
||||
--
|
||||
From "know your smileys":
|
||||
:-)-O Smiling doctor with stethoscope
|
||||
|
||||
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
|
||||
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
|
||||
\\\ an exciting new programming language -- http://www.Zimbu.org ///
|
||||
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
|
100
7.4.003
Normal file
100
7.4.003
Normal file
@ -0,0 +1,100 @@
|
||||
To: vim_dev@googlegroups.com
|
||||
Subject: Patch 7.4.003
|
||||
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.4.003
|
||||
Problem: Memory access error in Ruby syntax highlighting. (Christopher Chow)
|
||||
Solution: Refresh stale pointer. (James McCoy)
|
||||
Files: src/regexp_nfa.c
|
||||
|
||||
|
||||
*** ../vim-7.4.002/src/regexp_nfa.c 2013-08-14 13:31:03.000000000 +0200
|
||||
--- src/regexp_nfa.c 2013-08-14 14:02:06.000000000 +0200
|
||||
***************
|
||||
*** 4120,4126 ****
|
||||
sub = &subs->norm;
|
||||
}
|
||||
#ifdef FEAT_SYN_HL
|
||||
! else if (state->c >= NFA_ZOPEN)
|
||||
{
|
||||
subidx = state->c - NFA_ZOPEN;
|
||||
sub = &subs->synt;
|
||||
--- 4120,4126 ----
|
||||
sub = &subs->norm;
|
||||
}
|
||||
#ifdef FEAT_SYN_HL
|
||||
! else if (state->c >= NFA_ZOPEN && state->c <= NFA_ZOPEN9)
|
||||
{
|
||||
subidx = state->c - NFA_ZOPEN;
|
||||
sub = &subs->synt;
|
||||
***************
|
||||
*** 4189,4194 ****
|
||||
--- 4189,4201 ----
|
||||
}
|
||||
|
||||
subs = addstate(l, state->out, subs, pim, off);
|
||||
+ /* "subs" may have changed, need to set "sub" again */
|
||||
+ #ifdef FEAT_SYN_HL
|
||||
+ if (state->c >= NFA_ZOPEN && state->c <= NFA_ZOPEN9)
|
||||
+ sub = &subs->synt;
|
||||
+ else
|
||||
+ #endif
|
||||
+ sub = &subs->norm;
|
||||
|
||||
if (save_in_use == -1)
|
||||
{
|
||||
***************
|
||||
*** 4237,4243 ****
|
||||
sub = &subs->norm;
|
||||
}
|
||||
#ifdef FEAT_SYN_HL
|
||||
! else if (state->c >= NFA_ZCLOSE)
|
||||
{
|
||||
subidx = state->c - NFA_ZCLOSE;
|
||||
sub = &subs->synt;
|
||||
--- 4244,4250 ----
|
||||
sub = &subs->norm;
|
||||
}
|
||||
#ifdef FEAT_SYN_HL
|
||||
! else if (state->c >= NFA_ZCLOSE && state->c <= NFA_ZCLOSE9)
|
||||
{
|
||||
subidx = state->c - NFA_ZCLOSE;
|
||||
sub = &subs->synt;
|
||||
***************
|
||||
*** 4281,4286 ****
|
||||
--- 4288,4300 ----
|
||||
}
|
||||
|
||||
subs = addstate(l, state->out, subs, pim, off);
|
||||
+ /* "subs" may have changed, need to set "sub" again */
|
||||
+ #ifdef FEAT_SYN_HL
|
||||
+ if (state->c >= NFA_ZCLOSE && state->c <= NFA_ZCLOSE9)
|
||||
+ sub = &subs->synt;
|
||||
+ else
|
||||
+ #endif
|
||||
+ sub = &subs->norm;
|
||||
|
||||
if (REG_MULTI)
|
||||
sub->list.multi[subidx].end = save_lpos;
|
||||
*** ../vim-7.4.002/src/version.c 2013-08-14 13:31:03.000000000 +0200
|
||||
--- src/version.c 2013-08-14 14:03:51.000000000 +0200
|
||||
***************
|
||||
*** 729,730 ****
|
||||
--- 729,732 ----
|
||||
{ /* Add new patch number below this line */
|
||||
+ /**/
|
||||
+ 3,
|
||||
/**/
|
||||
|
||||
--
|
||||
Where do you want to crash today?
|
||||
|
||||
/// 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 ///
|
232
7.4.004
Normal file
232
7.4.004
Normal file
@ -0,0 +1,232 @@
|
||||
To: vim_dev@googlegroups.com
|
||||
Subject: Patch 7.4.004
|
||||
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.4.004
|
||||
Problem: When closing a window fails ":bwipe" may hang.
|
||||
Solution: Let win_close() return FAIL and break out of the loop.
|
||||
Files: src/window.c, src/proto/window.pro, src/buffer.c
|
||||
|
||||
|
||||
*** ../vim-7.4.003/src/window.c 2013-07-24 17:38:29.000000000 +0200
|
||||
--- src/window.c 2013-08-14 16:52:44.000000000 +0200
|
||||
***************
|
||||
*** 2172,2179 ****
|
||||
* If "free_buf" is TRUE related buffer may be unloaded.
|
||||
*
|
||||
* Called by :quit, :close, :xit, :wq and findtag().
|
||||
*/
|
||||
! void
|
||||
win_close(win, free_buf)
|
||||
win_T *win;
|
||||
int free_buf;
|
||||
--- 2172,2180 ----
|
||||
* If "free_buf" is TRUE related buffer may be unloaded.
|
||||
*
|
||||
* Called by :quit, :close, :xit, :wq and findtag().
|
||||
+ * Returns FAIL when the window was not closed.
|
||||
*/
|
||||
! int
|
||||
win_close(win, free_buf)
|
||||
win_T *win;
|
||||
int free_buf;
|
||||
***************
|
||||
*** 2190,2210 ****
|
||||
if (last_window())
|
||||
{
|
||||
EMSG(_("E444: Cannot close last window"));
|
||||
! return;
|
||||
}
|
||||
|
||||
#ifdef FEAT_AUTOCMD
|
||||
if (win->w_closing || (win->w_buffer != NULL && win->w_buffer->b_closing))
|
||||
! return; /* window is already being closed */
|
||||
if (win == aucmd_win)
|
||||
{
|
||||
EMSG(_("E813: Cannot close autocmd window"));
|
||||
! return;
|
||||
}
|
||||
if ((firstwin == aucmd_win || lastwin == aucmd_win) && one_window())
|
||||
{
|
||||
EMSG(_("E814: Cannot close window, only autocmd window would remain"));
|
||||
! return;
|
||||
}
|
||||
#endif
|
||||
|
||||
--- 2191,2211 ----
|
||||
if (last_window())
|
||||
{
|
||||
EMSG(_("E444: Cannot close last window"));
|
||||
! return FAIL;
|
||||
}
|
||||
|
||||
#ifdef FEAT_AUTOCMD
|
||||
if (win->w_closing || (win->w_buffer != NULL && win->w_buffer->b_closing))
|
||||
! return FAIL; /* window is already being closed */
|
||||
if (win == aucmd_win)
|
||||
{
|
||||
EMSG(_("E813: Cannot close autocmd window"));
|
||||
! return FAIL;
|
||||
}
|
||||
if ((firstwin == aucmd_win || lastwin == aucmd_win) && one_window())
|
||||
{
|
||||
EMSG(_("E814: Cannot close window, only autocmd window would remain"));
|
||||
! return FAIL;
|
||||
}
|
||||
#endif
|
||||
|
||||
***************
|
||||
*** 2212,2218 ****
|
||||
* and then close the window and the tab page to avoid that curwin and
|
||||
* curtab are invalid while we are freeing memory. */
|
||||
if (close_last_window_tabpage(win, free_buf, prev_curtab))
|
||||
! return;
|
||||
|
||||
/* When closing the help window, try restoring a snapshot after closing
|
||||
* the window. Otherwise clear the snapshot, it's now invalid. */
|
||||
--- 2213,2219 ----
|
||||
* and then close the window and the tab page to avoid that curwin and
|
||||
* curtab are invalid while we are freeing memory. */
|
||||
if (close_last_window_tabpage(win, free_buf, prev_curtab))
|
||||
! return FAIL;
|
||||
|
||||
/* When closing the help window, try restoring a snapshot after closing
|
||||
* the window. Otherwise clear the snapshot, it's now invalid. */
|
||||
***************
|
||||
*** 2240,2261 ****
|
||||
win->w_closing = TRUE;
|
||||
apply_autocmds(EVENT_BUFLEAVE, NULL, NULL, FALSE, curbuf);
|
||||
if (!win_valid(win))
|
||||
! return;
|
||||
win->w_closing = FALSE;
|
||||
if (last_window())
|
||||
! return;
|
||||
}
|
||||
win->w_closing = TRUE;
|
||||
apply_autocmds(EVENT_WINLEAVE, NULL, NULL, FALSE, curbuf);
|
||||
if (!win_valid(win))
|
||||
! return;
|
||||
win->w_closing = FALSE;
|
||||
if (last_window())
|
||||
! return;
|
||||
# ifdef FEAT_EVAL
|
||||
/* autocmds may abort script processing */
|
||||
if (aborting())
|
||||
! return;
|
||||
# endif
|
||||
}
|
||||
#endif
|
||||
--- 2241,2262 ----
|
||||
win->w_closing = TRUE;
|
||||
apply_autocmds(EVENT_BUFLEAVE, NULL, NULL, FALSE, curbuf);
|
||||
if (!win_valid(win))
|
||||
! return FAIL;
|
||||
win->w_closing = FALSE;
|
||||
if (last_window())
|
||||
! return FAIL;
|
||||
}
|
||||
win->w_closing = TRUE;
|
||||
apply_autocmds(EVENT_WINLEAVE, NULL, NULL, FALSE, curbuf);
|
||||
if (!win_valid(win))
|
||||
! return FAIL;
|
||||
win->w_closing = FALSE;
|
||||
if (last_window())
|
||||
! return FAIL;
|
||||
# ifdef FEAT_EVAL
|
||||
/* autocmds may abort script processing */
|
||||
if (aborting())
|
||||
! return FAIL;
|
||||
# endif
|
||||
}
|
||||
#endif
|
||||
***************
|
||||
*** 2303,2309 ****
|
||||
* other window or moved to another tab page. */
|
||||
else if (!win_valid(win) || last_window() || curtab != prev_curtab
|
||||
|| close_last_window_tabpage(win, free_buf, prev_curtab))
|
||||
! return;
|
||||
|
||||
/* Free the memory used for the window and get the window that received
|
||||
* the screen space. */
|
||||
--- 2304,2310 ----
|
||||
* other window or moved to another tab page. */
|
||||
else if (!win_valid(win) || last_window() || curtab != prev_curtab
|
||||
|| close_last_window_tabpage(win, free_buf, prev_curtab))
|
||||
! return FAIL;
|
||||
|
||||
/* Free the memory used for the window and get the window that received
|
||||
* the screen space. */
|
||||
***************
|
||||
*** 2383,2388 ****
|
||||
--- 2384,2390 ----
|
||||
#endif
|
||||
|
||||
redraw_all_later(NOT_VALID);
|
||||
+ return OK;
|
||||
}
|
||||
|
||||
/*
|
||||
*** ../vim-7.4.003/src/proto/window.pro 2013-08-10 13:37:30.000000000 +0200
|
||||
--- src/proto/window.pro 2013-08-14 16:52:50.000000000 +0200
|
||||
***************
|
||||
*** 9,15 ****
|
||||
void win_equal __ARGS((win_T *next_curwin, int current, int dir));
|
||||
void close_windows __ARGS((buf_T *buf, int keep_curwin));
|
||||
int one_window __ARGS((void));
|
||||
! void win_close __ARGS((win_T *win, int free_buf));
|
||||
void win_close_othertab __ARGS((win_T *win, int free_buf, tabpage_T *tp));
|
||||
void win_free_all __ARGS((void));
|
||||
win_T *winframe_remove __ARGS((win_T *win, int *dirp, tabpage_T *tp));
|
||||
--- 9,15 ----
|
||||
void win_equal __ARGS((win_T *next_curwin, int current, int dir));
|
||||
void close_windows __ARGS((buf_T *buf, int keep_curwin));
|
||||
int one_window __ARGS((void));
|
||||
! int win_close __ARGS((win_T *win, int free_buf));
|
||||
void win_close_othertab __ARGS((win_T *win, int free_buf, tabpage_T *tp));
|
||||
void win_free_all __ARGS((void));
|
||||
win_T *winframe_remove __ARGS((win_T *win, int *dirp, tabpage_T *tp));
|
||||
*** ../vim-7.4.003/src/buffer.c 2013-07-17 16:39:00.000000000 +0200
|
||||
--- src/buffer.c 2013-08-14 16:54:34.000000000 +0200
|
||||
***************
|
||||
*** 1186,1192 ****
|
||||
&& !(curwin->w_closing || curwin->w_buffer->b_closing)
|
||||
# endif
|
||||
&& (firstwin != lastwin || first_tabpage->tp_next != NULL))
|
||||
! win_close(curwin, FALSE);
|
||||
#endif
|
||||
|
||||
/*
|
||||
--- 1186,1195 ----
|
||||
&& !(curwin->w_closing || curwin->w_buffer->b_closing)
|
||||
# endif
|
||||
&& (firstwin != lastwin || first_tabpage->tp_next != NULL))
|
||||
! {
|
||||
! if (win_close(curwin, FALSE) == FAIL)
|
||||
! break;
|
||||
! }
|
||||
#endif
|
||||
|
||||
/*
|
||||
*** ../vim-7.4.003/src/version.c 2013-08-14 14:18:37.000000000 +0200
|
||||
--- src/version.c 2013-08-14 17:10:23.000000000 +0200
|
||||
***************
|
||||
*** 729,730 ****
|
||||
--- 729,732 ----
|
||||
{ /* Add new patch number below this line */
|
||||
+ /**/
|
||||
+ 4,
|
||||
/**/
|
||||
|
||||
--
|
||||
From "know your smileys":
|
||||
*<|:-) Santa Claus (Ho Ho Ho)
|
||||
|
||||
/// 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.4.005
Normal file
48
7.4.005
Normal file
@ -0,0 +1,48 @@
|
||||
To: vim_dev@googlegroups.com
|
||||
Subject: Patch 7.4.005
|
||||
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.4.005
|
||||
Problem: Using "vaB" while 'virtualedit' is set selects the wrong area.
|
||||
(Dimitar Dimitrov)
|
||||
Solution: Reset coladd when finding a match.
|
||||
Files: src/search.c
|
||||
|
||||
|
||||
*** ../vim-7.4.004/src/search.c 2013-07-17 19:20:47.000000000 +0200
|
||||
--- src/search.c 2013-08-14 17:32:38.000000000 +0200
|
||||
***************
|
||||
*** 1760,1765 ****
|
||||
--- 1760,1768 ----
|
||||
#endif
|
||||
|
||||
pos = curwin->w_cursor;
|
||||
+ #ifdef FEAT_VIRTUALEDIT
|
||||
+ pos.coladd = 0;
|
||||
+ #endif
|
||||
linep = ml_get(pos.lnum);
|
||||
|
||||
cpo_match = (vim_strchr(p_cpo, CPO_MATCH) != NULL);
|
||||
*** ../vim-7.4.004/src/version.c 2013-08-14 17:11:14.000000000 +0200
|
||||
--- src/version.c 2013-08-14 17:38:05.000000000 +0200
|
||||
***************
|
||||
*** 729,730 ****
|
||||
--- 729,732 ----
|
||||
{ /* Add new patch number below this line */
|
||||
+ /**/
|
||||
+ 5,
|
||||
/**/
|
||||
|
||||
--
|
||||
You can't have everything. Where would you put it?
|
||||
-- Steven Wright
|
||||
|
||||
/// 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 ///
|
66
7.4.006
Normal file
66
7.4.006
Normal file
@ -0,0 +1,66 @@
|
||||
To: vim_dev@googlegroups.com
|
||||
Subject: Patch 7.4.006
|
||||
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.4.006
|
||||
Problem: mkdir("foo/bar/", "p") gives an error message. (David Barnett)
|
||||
Solution: Remove the trailing slash. (lcd)
|
||||
Files: src/eval.c
|
||||
|
||||
|
||||
*** ../vim-7.4.005/src/eval.c 2013-07-05 18:23:42.000000000 +0200
|
||||
--- src/eval.c 2013-08-22 12:00:28.000000000 +0200
|
||||
***************
|
||||
*** 14292,14297 ****
|
||||
--- 14292,14301 ----
|
||||
return;
|
||||
|
||||
dir = get_tv_string_buf(&argvars[0], buf);
|
||||
+ if (*gettail(dir) == NUL)
|
||||
+ /* remove trailing slashes */
|
||||
+ *gettail_sep(dir) = NUL;
|
||||
+
|
||||
if (argvars[1].v_type != VAR_UNKNOWN)
|
||||
{
|
||||
if (argvars[2].v_type != VAR_UNKNOWN)
|
||||
***************
|
||||
*** 14299,14305 ****
|
||||
if (prot != -1 && STRCMP(get_tv_string(&argvars[1]), "p") == 0)
|
||||
mkdir_recurse(dir, prot);
|
||||
}
|
||||
! rettv->vval.v_number = prot != -1 ? vim_mkdir_emsg(dir, prot) : 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
--- 14303,14309 ----
|
||||
if (prot != -1 && STRCMP(get_tv_string(&argvars[1]), "p") == 0)
|
||||
mkdir_recurse(dir, prot);
|
||||
}
|
||||
! rettv->vval.v_number = prot == -1 ? FAIL : vim_mkdir_emsg(dir, prot);
|
||||
}
|
||||
#endif
|
||||
|
||||
*** ../vim-7.4.005/src/version.c 2013-08-14 17:45:25.000000000 +0200
|
||||
--- src/version.c 2013-08-22 12:02:46.000000000 +0200
|
||||
***************
|
||||
*** 729,730 ****
|
||||
--- 729,732 ----
|
||||
{ /* Add new patch number below this line */
|
||||
+ /**/
|
||||
+ 6,
|
||||
/**/
|
||||
|
||||
--
|
||||
hundred-and-one symptoms of being an internet addict:
|
||||
97. Your mother tells you to remember something, and you look for
|
||||
a File/Save command.
|
||||
|
||||
/// 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 ///
|
95
7.4.007
Normal file
95
7.4.007
Normal file
@ -0,0 +1,95 @@
|
||||
To: vim_dev@googlegroups.com
|
||||
Subject: Patch 7.4.007
|
||||
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.4.007
|
||||
Problem: Creating a preview window on startup leaves the screen layout in a
|
||||
messed up state. (Marius Gedminas)
|
||||
Solution: Don't change firstwin. (Christian Brabandt)
|
||||
Files: src/main.c
|
||||
|
||||
|
||||
*** ../vim-7.4.006/src/main.c 2013-07-03 12:36:49.000000000 +0200
|
||||
--- src/main.c 2013-08-22 14:02:39.000000000 +0200
|
||||
***************
|
||||
*** 2727,2732 ****
|
||||
--- 2727,2733 ----
|
||||
int arg_idx; /* index in argument list */
|
||||
int i;
|
||||
int advance = TRUE;
|
||||
+ win_T *win;
|
||||
|
||||
# ifdef FEAT_AUTOCMD
|
||||
/*
|
||||
***************
|
||||
*** 2816,2839 ****
|
||||
# ifdef FEAT_AUTOCMD
|
||||
--autocmd_no_enter;
|
||||
# endif
|
||||
#if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
|
||||
! /*
|
||||
! * Avoid making a preview window the current window.
|
||||
! */
|
||||
! if (firstwin->w_p_pvw)
|
||||
{
|
||||
! win_T *win;
|
||||
!
|
||||
! for (win = firstwin; win != NULL; win = win->w_next)
|
||||
! if (!win->w_p_pvw)
|
||||
! {
|
||||
! firstwin = win;
|
||||
! break;
|
||||
! }
|
||||
}
|
||||
#endif
|
||||
! /* make the first window the current window */
|
||||
! win_enter(firstwin, FALSE);
|
||||
|
||||
# ifdef FEAT_AUTOCMD
|
||||
--autocmd_no_leave;
|
||||
--- 2817,2838 ----
|
||||
# ifdef FEAT_AUTOCMD
|
||||
--autocmd_no_enter;
|
||||
# endif
|
||||
+
|
||||
+ /* make the first window the current window */
|
||||
+ win = firstwin;
|
||||
#if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
|
||||
! /* Avoid making a preview window the current window. */
|
||||
! while (win->w_p_pvw)
|
||||
{
|
||||
! win = win->w_next;
|
||||
! if (win == NULL)
|
||||
! {
|
||||
! win = firstwin;
|
||||
! break;
|
||||
! }
|
||||
}
|
||||
#endif
|
||||
! win_enter(win, FALSE);
|
||||
|
||||
# ifdef FEAT_AUTOCMD
|
||||
--autocmd_no_leave;
|
||||
*** ../vim-7.4.006/src/version.c 2013-08-22 12:06:50.000000000 +0200
|
||||
--- src/version.c 2013-08-22 14:04:11.000000000 +0200
|
||||
***************
|
||||
*** 729,730 ****
|
||||
--- 729,732 ----
|
||||
{ /* Add new patch number below this line */
|
||||
+ /**/
|
||||
+ 7,
|
||||
/**/
|
||||
|
||||
--
|
||||
hundred-and-one symptoms of being an internet addict:
|
||||
105. When someone asks you for your address, you tell them your URL.
|
||||
|
||||
/// 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 ///
|
71
7.4.008
Normal file
71
7.4.008
Normal file
@ -0,0 +1,71 @@
|
||||
To: vim_dev@googlegroups.com
|
||||
Subject: Patch 7.4.008
|
||||
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.4.008
|
||||
Problem: New regexp engine can't be interrupted.
|
||||
Solution: Check for CTRL-C pressed. (Yasuhiro Matsumoto)
|
||||
Files: src/regexp_nfa.c, src/regexp.c
|
||||
|
||||
|
||||
*** ../vim-7.4.007/src/regexp_nfa.c 2013-08-14 14:18:37.000000000 +0200
|
||||
--- src/regexp_nfa.c 2013-08-25 16:55:56.000000000 +0200
|
||||
***************
|
||||
*** 5089,5094 ****
|
||||
--- 5089,5100 ----
|
||||
return FALSE;
|
||||
}
|
||||
#endif
|
||||
+ /* Some patterns may take a long time to match, especially when using
|
||||
+ * recursive_regmatch(). Allow interrupting them with CTRL-C. */
|
||||
+ fast_breakcheck();
|
||||
+ if (got_int)
|
||||
+ return FALSE;
|
||||
+
|
||||
nfa_match = FALSE;
|
||||
|
||||
/* Allocate memory for the lists of nodes. */
|
||||
*** ../vim-7.4.007/src/regexp.c 2013-08-01 18:31:30.000000000 +0200
|
||||
--- src/regexp.c 2013-08-25 16:57:35.000000000 +0200
|
||||
***************
|
||||
*** 4311,4318 ****
|
||||
*/
|
||||
for (;;)
|
||||
{
|
||||
! /* Some patterns may cause a long time to match, even though they are not
|
||||
! * illegal. E.g., "\([a-z]\+\)\+Q". Allow breaking them with CTRL-C. */
|
||||
fast_breakcheck();
|
||||
|
||||
#ifdef DEBUG
|
||||
--- 4311,4318 ----
|
||||
*/
|
||||
for (;;)
|
||||
{
|
||||
! /* Some patterns may take a long time to match, e.g., "\([a-z]\+\)\+Q".
|
||||
! * Allow interrupting them with CTRL-C. */
|
||||
fast_breakcheck();
|
||||
|
||||
#ifdef DEBUG
|
||||
*** ../vim-7.4.007/src/version.c 2013-08-22 14:14:23.000000000 +0200
|
||||
--- src/version.c 2013-08-25 16:57:51.000000000 +0200
|
||||
***************
|
||||
*** 729,730 ****
|
||||
--- 729,732 ----
|
||||
{ /* Add new patch number below this line */
|
||||
+ /**/
|
||||
+ 8,
|
||||
/**/
|
||||
|
||||
--
|
||||
hundred-and-one symptoms of being an internet addict:
|
||||
124. You begin conversations with, "Who is your internet service provider?"
|
||||
|
||||
/// 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 ///
|
64
7.4.009
Normal file
64
7.4.009
Normal file
@ -0,0 +1,64 @@
|
||||
To: vim_dev@googlegroups.com
|
||||
Subject: Patch 7.4.009
|
||||
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.4.009
|
||||
Problem: When a file was not decrypted (yet), writing it may destroy the
|
||||
contents.
|
||||
Solution: Mark the file as readonly until decryption was done. (Christian
|
||||
Brabandt)
|
||||
Files: src/fileio.c
|
||||
|
||||
|
||||
*** ../vim-7.4.008/src/fileio.c 2013-08-05 21:58:03.000000000 +0200
|
||||
--- src/fileio.c 2013-08-25 17:45:27.000000000 +0200
|
||||
***************
|
||||
*** 2926,2934 ****
|
||||
--- 2926,2939 ----
|
||||
int *did_ask; /* flag: whether already asked for key */
|
||||
{
|
||||
int method = crypt_method_from_magic((char *)ptr, *sizep);
|
||||
+ int b_p_ro = curbuf->b_p_ro;
|
||||
|
||||
if (method >= 0)
|
||||
{
|
||||
+ /* Mark the buffer as read-only until the decryption has taken place.
|
||||
+ * Avoids accidentally overwriting the file with garbage. */
|
||||
+ curbuf->b_p_ro = TRUE;
|
||||
+
|
||||
set_crypt_method(curbuf, method);
|
||||
if (method > 0)
|
||||
(void)blowfish_self_test();
|
||||
***************
|
||||
*** 2977,2982 ****
|
||||
--- 2982,2989 ----
|
||||
*sizep -= CRYPT_MAGIC_LEN + salt_len + seed_len;
|
||||
mch_memmove(ptr, ptr + CRYPT_MAGIC_LEN + salt_len + seed_len,
|
||||
(size_t)*sizep);
|
||||
+ /* Restore the read-only flag. */
|
||||
+ curbuf->b_p_ro = b_p_ro;
|
||||
}
|
||||
}
|
||||
/* When starting to edit a new file which does not have encryption, clear
|
||||
*** ../vim-7.4.008/src/version.c 2013-08-25 17:01:36.000000000 +0200
|
||||
--- src/version.c 2013-08-25 17:44:30.000000000 +0200
|
||||
***************
|
||||
*** 729,730 ****
|
||||
--- 729,732 ----
|
||||
{ /* Add new patch number below this line */
|
||||
+ /**/
|
||||
+ 9,
|
||||
/**/
|
||||
|
||||
--
|
||||
I have a watch cat! Just break in and she'll watch.
|
||||
|
||||
/// 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 ///
|
1361
README.patches
1361
README.patches
File diff suppressed because it is too large
Load Diff
55
vim.spec
55
vim.spec
@ -1,5 +1,4 @@
|
||||
# used for CVS snapshots:
|
||||
%define CVSDATE %{nil}
|
||||
%define patchlevel 9
|
||||
%if %{?WITH_SELINUX:0}%{!?WITH_SELINUX:1}
|
||||
%define WITH_SELINUX 1
|
||||
%endif
|
||||
@ -15,19 +14,16 @@
|
||||
%define withruby 1
|
||||
|
||||
%define baseversion 7.4
|
||||
#used for pre-releases:
|
||||
%define beta %{nil}
|
||||
%define vimdir vim74%{?beta}
|
||||
%define patchlevel 0
|
||||
%define vimdir vim74
|
||||
|
||||
Summary: The VIM editor
|
||||
URL: http://www.vim.org/
|
||||
Name: vim
|
||||
Version: %{baseversion}.%{beta}%{patchlevel}
|
||||
Release: 2%{?dist}
|
||||
Version: %{baseversion}.%{patchlevel}
|
||||
Release: 1%{?dist}
|
||||
License: Vim
|
||||
Group: Applications/Editors
|
||||
Source0: ftp://ftp.vim.org/pub/vim/unix/vim-%{baseversion}%{?beta}%{?CVSDATE}.tar.bz2
|
||||
Source0: ftp://ftp.vim.org/pub/vim/unix/vim-%{baseversion}.tar.bz2
|
||||
Source3: gvim.desktop
|
||||
Source4: vimrc
|
||||
Source5: ftp://ftp.vim.org/pub/vim/patches/README.patches
|
||||
@ -51,6 +47,15 @@ BuildRequires: hunspell-devel
|
||||
%endif
|
||||
# If you're as lazy as me, generate the list using
|
||||
# for i in `seq 1 14`; do printf "Patch%03d: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.%03d\n" $i $i; done
|
||||
Patch001: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.001
|
||||
Patch002: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.002
|
||||
Patch003: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.003
|
||||
Patch004: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.004
|
||||
Patch005: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.005
|
||||
Patch006: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.006
|
||||
Patch007: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.007
|
||||
Patch008: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.008
|
||||
Patch009: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.009
|
||||
|
||||
Patch3000: vim-7.4-syntax.patch
|
||||
Patch3002: vim-7.1-nowarnings.patch
|
||||
@ -196,8 +201,15 @@ perl -pi -e "s,bin/nawk,bin/awk,g" runtime/tools/mve.awk
|
||||
|
||||
# Base patches...
|
||||
# for i in `seq 1 14`; do printf "%%patch%03d -p0 \n" $i; done
|
||||
#patch001 -p0
|
||||
|
||||
%patch001 -p0
|
||||
%patch002 -p0
|
||||
%patch003 -p0
|
||||
%patch004 -p0
|
||||
%patch005 -p0
|
||||
%patch006 -p0
|
||||
%patch007 -p0
|
||||
%patch008 -p0
|
||||
%patch009 -p0
|
||||
|
||||
# install spell files
|
||||
%if %{withvimspell}
|
||||
@ -697,6 +709,27 @@ rm -rf %{buildroot}
|
||||
%{_datadir}/icons/hicolor/*/apps/*
|
||||
|
||||
%changelog
|
||||
* Wed Aug 28 2013 Karsten Hopp <karsten@redhat.com> 7.4.009-1
|
||||
- patchlevel 009
|
||||
mkdir("foo/bar/", "p") gives an error message
|
||||
creating a preview window on startup messes up the screen
|
||||
new regexp engine can't be interrupted
|
||||
too easy to write a file was not decrypted (yet)
|
||||
|
||||
* Wed Aug 21 2013 Karsten Hopp <karsten@redhat.com> 7.4.5-1
|
||||
- patchlevel 5
|
||||
- when closing a window fails ":bwipe" may hang
|
||||
- "vaB" while 'virtualedit' is set selects the wrong area
|
||||
|
||||
* Wed Aug 21 2013 Karsten Hopp <karsten@redhat.com> 7.4.3-1
|
||||
- patchlevel 3, memory access error in Ruby syntax highlighting
|
||||
|
||||
* Wed Aug 21 2013 Karsten Hopp <karsten@redhat.com> 7.4.2-1
|
||||
- patchlevel 2, pattern with two alternative look-behind matches doesn't match
|
||||
|
||||
* Wed Aug 21 2013 Karsten Hopp <karsten@redhat.com> 7.4.1-1
|
||||
- patchlevel 1, 'ic' doesn't work for patterns such as [a-z]
|
||||
|
||||
* Mon Aug 12 2013 Karsten Hopp <karsten@redhat.com> 7.4.0-1
|
||||
- update to vim-7.4
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user