vim-patch:7.4.543.

Adapt #1533 and #1596 to conform to upstream patch
(https://groups.google.com/forum/#!topic/vim_dev/vp0Lwo9f56s).

Problem:    Since patch 7.4.232 "1,3s/\n//" joins two lines instead of
            three.
            (Eliseo Martínez)  Issue 287
Solution:   Correct the line count. (Christian Brabandt)
            Also set the last used search pattern.
This commit is contained in:
Eliseo Martínez 2014-12-14 13:10:14 +01:00
parent a5edc5f257
commit b8123cb4af
3 changed files with 11 additions and 5 deletions

View File

@ -3604,9 +3604,10 @@ void do_sub(exarg_T *eap)
eap->flags = EXFLAG_PRINT;
}
linenr_T joined_lines_count = eap->line2 < curbuf->b_ml.ml_line_count
? eap->line2 - eap->line1 + 2
: eap->line2 - eap->line1 + 1;
// The number of lines joined is the number of lines in the range
linenr_T joined_lines_count = eap->line2 - eap->line1 + 1
// plus one extra line if not at the end of file.
+ eap->line2 < curbuf->b_ml.ml_line_count ? 1 : 0;
if (joined_lines_count > 1) {
do_join(joined_lines_count, FALSE, TRUE, FALSE, true);
sub_nsubs = joined_lines_count - 1;
@ -3615,6 +3616,11 @@ void do_sub(exarg_T *eap)
ex_may_print(eap);
}
if (!cmdmod.keeppatterns) {
save_re_pat(RE_SUBST, pat, p_magic);
}
add_to_history(HIST_SEARCH, pat, TRUE, NUL);
return;
}

View File

@ -246,7 +246,7 @@ char_u *reverse_text(char_u *s) FUNC_ATTR_NONNULL_RET
return rev;
}
static void save_re_pat(int idx, char_u *pat, int magic)
void save_re_pat(int idx, char_u *pat, int magic)
{
if (spats[idx].pat != pat) {
free(spats[idx].pat);

View File

@ -187,7 +187,7 @@ static int included_patches[] = {
//546,
//545,
//544,
//543,
543,
//542,
//541,
//540,