Merge pull request #1516 from fmoralesc/new-patches

vim-patch:7.4.425,435,467,472,473,478
This commit is contained in:
Justin M. Keyes 2014-11-27 20:58:39 -05:00
commit 49b65b0fcd
7 changed files with 45 additions and 7 deletions

View File

@ -1058,6 +1058,11 @@ int win_lbr_chartabsize(win_T *wp, char_u *line, char_u *s, colnr_T col, int *he
if (col >= (colnr_T)wp->w_width) {
col -= wp->w_width;
numberextra = wp->w_width - (numberextra - win_col_off2(wp));
if (*p_sbr != NUL) {
colnr_T sbrlen = (colnr_T)MB_CHARLEN(p_sbr);
if (col >= sbrlen)
col -= sbrlen;
}
if (numberextra > 0) {
col = col % numberextra;
}

View File

@ -5078,6 +5078,10 @@ internal_format (
colnr_T leader_len;
int no_leader = FALSE;
int do_comments = (flags & INSCHAR_DO_COM);
int has_lbr = curwin->w_p_lbr;
// make sure win_lbr_chartabsize() counts correctly
curwin->w_p_lbr = false;
/*
* When 'ai' is off we don't want a space under the cursor to be
@ -5367,6 +5371,8 @@ internal_format (
if (save_char != NUL) /* put back space after cursor */
pchar_cursor(save_char);
curwin->w_p_lbr = has_lbr;
if (!format_only && haveto_redraw) {
update_topline();
redraw_curbuf_later(VALID);

View File

@ -1091,6 +1091,10 @@ void do_pending_operator(cmdarg_T *cap, int old_col, bool gui_yank)
pos_T old_cursor;
bool empty_region_error;
int restart_edit_save;
int lbr_saved = curwin->w_p_lbr;
curwin->w_p_lbr = false; /* avoid a problem with unwanted linebreaks in
* block mode */
/* The visual area is remembered for redo */
static int redo_VIsual_mode = NUL; /* 'v', 'V', or Ctrl-V */
@ -1703,6 +1707,7 @@ void do_pending_operator(cmdarg_T *cap, int old_col, bool gui_yank)
oap->block_mode = false;
clearop(oap);
}
curwin->w_p_lbr = lbr_saved;
}
/*
@ -3484,7 +3489,11 @@ static bool nv_screengo(oparg_T *oap, int dir, long dist)
* screenline or move two screenlines.
*/
validate_virtcol();
if (curwin->w_virtcol > curwin->w_curswant
colnr_T virtcol = curwin->w_virtcol;
if (virtcol > (colnr_T)width1 && *p_sbr != NUL)
virtcol -= vim_strsize(p_sbr);
if (virtcol > curwin->w_curswant
&& (curwin->w_curswant < (colnr_T)width1
? (curwin->w_curswant > (colnr_T)width1 / 2)
: ((curwin->w_curswant - width1) % width2

View File

@ -1205,8 +1205,13 @@ static void win_update(win_T *wp)
*/
if (VIsual_mode == Ctrl_V) {
colnr_T fromc, toc;
int save_ve_flags = ve_flags;
if (curwin->w_p_lbr)
ve_flags = VE_ALL;
getvcols(wp, &VIsual, &curwin->w_cursor, &fromc, &toc);
ve_flags = save_ve_flags;
++toc;
if (curwin->w_curswant == MAXCOL)
toc = MAXCOL;
@ -3725,6 +3730,7 @@ win_line (
* special character (via 'listchars' option "precedes:<char>".
*/
if (lcs_prec_todo != NUL
&& wp->w_p_list
&& (wp->w_p_wrap ? wp->w_skipcol > 0 : wp->w_leftcol > 0)
&& filler_todo <= 0
&& draw_state > WL_NR

View File

@ -56,6 +56,14 @@ STARTTEST
:syn match All /.*/ contains=ConcealVar
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:set cpo&vim linebreak
:let g:test ="Test 6: set linebreak with visual block mode"
:let line="REMOVE: this not"
:$put =line
:let line="REMOVE: aaaaaaaaaaaaa"
:$put =line
:1/^REMOVE:
0jf x:$put
:%w! test.out
:qa!
ENDTEST

View File

@ -32,3 +32,7 @@ Sabbbbbb bla
~
~
~
this not
aaaaaaaaaaaaa
REMOVE:
REMOVE:

View File

@ -188,18 +188,18 @@ static int included_patches[] = {
//481,
//480,
//479,
//478,
478,
//477,
//476,
//475,
//474,
//473,
//472,
473,
472,
//471,
//470,
//469,
//468,
//467,
467,
//465,
//464,
//463,
@ -230,7 +230,7 @@ static int included_patches[] = {
//438,
437,
436,
//435,
435,
//434,
433,
//432 NA
@ -240,7 +240,7 @@ static int included_patches[] = {
//428 NA
427,
//426 NA
//425,
425,
//424 NA
//423,
//422,