aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Morales <hel.sheep@gmail.com>2014-11-21 13:14:54 -0300
committerFelipe Morales <hel.sheep@gmail.com>2014-11-27 19:40:51 -0300
commit35e23984417e5dfcb88c56c4301cc60e856a97cd (patch)
tree5b1b0dd2a69833234fff27942f61db8b5c1314eb
parentcfa8b4a1863fc59a6cd15022b5a69f36af65ddc9 (diff)
downloadrneovim-35e23984417e5dfcb88c56c4301cc60e856a97cd.tar.gz
rneovim-35e23984417e5dfcb88c56c4301cc60e856a97cd.tar.bz2
rneovim-35e23984417e5dfcb88c56c4301cc60e856a97cd.zip
vim-patch:7.4.467: Avoid a problem with unwanted linebreaks in block mode
vim-patch:7.4.467 Avoid a problem with unwanted linebreaks in block mode https://code.google.com/p/vim/source/detail?r=v7-4-467
-rw-r--r--src/nvim/normal.c5
-rw-r--r--src/nvim/screen.c5
-rw-r--r--src/nvim/testdir/test_listlbr.in8
-rw-r--r--src/nvim/testdir/test_listlbr.ok4
-rw-r--r--src/nvim/version.c2
5 files changed, 23 insertions, 1 deletions
diff --git a/src/nvim/normal.c b/src/nvim/normal.c
index a2bdc05831..9ec97bd320 100644
--- a/src/nvim/normal.c
+++ b/src/nvim/normal.c
@@ -1099,6 +1099,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 */
@@ -1711,6 +1715,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;
}
/*
diff --git a/src/nvim/screen.c b/src/nvim/screen.c
index 58faac1ae7..164b8e7f7d 100644
--- a/src/nvim/screen.c
+++ b/src/nvim/screen.c
@@ -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;
diff --git a/src/nvim/testdir/test_listlbr.in b/src/nvim/testdir/test_listlbr.in
index 2f28126554..75b06b4cc7 100644
--- a/src/nvim/testdir/test_listlbr.in
+++ b/src/nvim/testdir/test_listlbr.in
@@ -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/nvim/testdir/test_listlbr.ok b/src/nvim/testdir/test_listlbr.ok
index 9b8037f4d3..ee74667661 100644
--- a/src/nvim/testdir/test_listlbr.ok
+++ b/src/nvim/testdir/test_listlbr.ok
@@ -32,3 +32,7 @@ Sabbbbbb bla
~
~
~
+this not
+aaaaaaaaaaaaa
+REMOVE:
+REMOVE:
diff --git a/src/nvim/version.c b/src/nvim/version.c
index c692e43625..e4ad77b367 100644
--- a/src/nvim/version.c
+++ b/src/nvim/version.c
@@ -199,7 +199,7 @@ static int included_patches[] = {
//470,
//469,
//468,
- //467,
+ 467,
//465,
//464,
//463,