aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2014-11-27 20:58:39 -0500
committerJustin M. Keyes <justinkz@gmail.com>2014-11-27 20:58:39 -0500
commit49b65b0fcd360f483d93d3b1ed70610bcffd95c4 (patch)
tree95bf8900c29f7ee3361d1a0454da4e75a0aaeca7
parente5a386d2f819ee3a357384279d1a7810ec213087 (diff)
parent9ab44e74abb7553ad39c13621e0904680e61287d (diff)
downloadrneovim-49b65b0fcd360f483d93d3b1ed70610bcffd95c4.tar.gz
rneovim-49b65b0fcd360f483d93d3b1ed70610bcffd95c4.tar.bz2
rneovim-49b65b0fcd360f483d93d3b1ed70610bcffd95c4.zip
Merge pull request #1516 from fmoralesc/new-patches
vim-patch:7.4.425,435,467,472,473,478
-rw-r--r--src/nvim/charset.c5
-rw-r--r--src/nvim/edit.c6
-rw-r--r--src/nvim/normal.c11
-rw-r--r--src/nvim/screen.c6
-rw-r--r--src/nvim/testdir/test_listlbr.in8
-rw-r--r--src/nvim/testdir/test_listlbr.ok4
-rw-r--r--src/nvim/version.c12
7 files changed, 45 insertions, 7 deletions
diff --git a/src/nvim/charset.c b/src/nvim/charset.c
index f3bb3d8c73..bbe80a519c 100644
--- a/src/nvim/charset.c
+++ b/src/nvim/charset.c
@@ -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;
}
diff --git a/src/nvim/edit.c b/src/nvim/edit.c
index 5f76347100..c7f20783a9 100644
--- a/src/nvim/edit.c
+++ b/src/nvim/edit.c
@@ -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);
diff --git a/src/nvim/normal.c b/src/nvim/normal.c
index 843556bb49..0a43d59607 100644
--- a/src/nvim/normal.c
+++ b/src/nvim/normal.c
@@ -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
diff --git a/src/nvim/screen.c b/src/nvim/screen.c
index bb26066526..2dbf3f8888 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;
@@ -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
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 c2818edcc5..f73e5c8cae 100644
--- a/src/nvim/version.c
+++ b/src/nvim/version.c
@@ -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,