diff options
-rw-r--r-- | src/normal.c | 9 | ||||
-rw-r--r-- | src/screen.c | 10 | ||||
-rw-r--r-- | src/testdir/test_listlbr.in | 10 | ||||
-rw-r--r-- | src/testdir/test_listlbr.ok | 4 | ||||
-rw-r--r-- | src/version.c | 2 |
5 files changed, 33 insertions, 2 deletions
diff --git a/src/normal.c b/src/normal.c index a8d74117c..8384d6ffe 100644 --- a/src/normal.c +++ b/src/normal.c @@ -1380,6 +1380,12 @@ do_pending_operator(cap, old_col, gui_yank) pos_T old_cursor; int empty_region_error; int restart_edit_save; +#ifdef FEAT_LINEBREAK + int lbr_saved = curwin->w_p_lbr; + + curwin->w_p_lbr = FALSE; /* avoid a problem with unwanted linebreaks in + * block mode */ +#endif /* The visual area is remembered for redo */ static int redo_VIsual_mode = NUL; /* 'v', 'V', or Ctrl-V */ @@ -2136,6 +2142,9 @@ do_pending_operator(cap, old_col, gui_yank) oap->block_mode = FALSE; clearop(oap); } +#ifdef FEAT_LINEBREAK + curwin->w_p_lbr = lbr_saved; +#endif } /* diff --git a/src/screen.c b/src/screen.c index 7a9311a45..fae2703f7 100644 --- a/src/screen.c +++ b/src/screen.c @@ -1584,9 +1584,17 @@ win_update(wp) */ if (VIsual_mode == Ctrl_V) { - colnr_T fromc, toc; + colnr_T fromc, toc; +#if defined(FEAT_VIRTUALEDIT) && defined(FEAT_LINEBREAK) + int save_ve_flags = ve_flags; + if (curwin->w_p_lbr) + ve_flags = VE_ALL; +#endif getvcols(wp, &VIsual, &curwin->w_cursor, &fromc, &toc); +#if defined(FEAT_VIRTUALEDIT) && defined(FEAT_LINEBREAK) + ve_flags = save_ve_flags; +#endif ++toc; if (curwin->w_curswant == MAXCOL) toc = MAXCOL; diff --git a/src/testdir/test_listlbr.in b/src/testdir/test_listlbr.in index f155f85a4..f6618c5a4 100644 --- a/src/testdir/test_listlbr.in +++ b/src/testdir/test_listlbr.in @@ -2,7 +2,7 @@ Test for linebreak and list option (non-utf8) STARTTEST :so small.vim -:if !exists("+linebreak") || !exists("+conceal") | e! test.ok | w! test.out | qa! | endif +:if !exists("+linebreak") || !has("conceal") | e! test.ok | w! test.out | qa! | endif :10new|:vsp|:vert resize 20 :put =\"\tabcdef hijklmn\tpqrstuvwxyz_1060ABCDEFGHIJKLMNOP \" :norm! zt @@ -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 diff --git a/src/testdir/test_listlbr.ok b/src/testdir/test_listlbr.ok index 9b8037f4d..ee7466766 100644 --- a/src/testdir/test_listlbr.ok +++ b/src/testdir/test_listlbr.ok @@ -32,3 +32,7 @@ Sabbbbbb bla ~ ~ ~ +this not +aaaaaaaaaaaaa +REMOVE: +REMOVE: diff --git a/src/version.c b/src/version.c index 6417a491d..5979660f4 100644 --- a/src/version.c +++ b/src/version.c @@ -742,6 +742,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 467, +/**/ 466, /**/ 465, |