summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2015-01-14 17:52:30 +0100
committerBram Moolenaar <Bram@vim.org>2015-01-14 17:52:30 +0100
commitba3f58e29660d4f7501cb0e46162a399c20020c6 (patch)
treed3aadc6dda3223cf1c87af60f3661089b2dc385e
parentea67672534ae00cfd560c056340ed4da001e95f9 (diff)
downloadvim-git-ba3f58e29660d4f7501cb0e46162a399c20020c6.tar.gz
updated for version 7.4.576v7.4.576
Problem: Redrawing problem with 'relativenumber' and 'linebreak'. Solution: Temporarily reset 'linebreak' and restore it in more places. (Christian Brabandt)
-rw-r--r--src/normal.c51
-rw-r--r--src/version.c2
2 files changed, 48 insertions, 5 deletions
diff --git a/src/normal.c b/src/normal.c
index bd5bacd59..cb1a7d154 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -1393,10 +1393,6 @@ do_pending_operator(cap, old_col, gui_yank)
int include_line_break = FALSE;
#endif
-#ifdef FEAT_LINEBREAK
- curwin->w_p_lbr = FALSE; /* Avoid a problem with unwanted linebreaks in
- * block mode. */
-#endif
#if defined(FEAT_CLIPBOARD)
/*
* Yank the visual area into the GUI selection register before we operate
@@ -1420,6 +1416,10 @@ do_pending_operator(cap, old_col, gui_yank)
*/
if ((finish_op || VIsual_active) && oap->op_type != OP_NOP)
{
+#ifdef FEAT_LINEBREAK
+ /* Avoid a problem with unwanted linebreaks in block mode. */
+ curwin->w_p_lbr = FALSE;
+#endif
oap->is_VIsual = VIsual_active;
if (oap->motion_force == 'V')
oap->motion_type = MLINE;
@@ -1819,7 +1819,13 @@ do_pending_operator(cap, old_col, gui_yank)
|| oap->op_type == OP_FUNCTION
|| oap->op_type == OP_FILTER)
&& oap->motion_force == NUL)
+ {
+#ifdef FEAT_LINEBREAK
+ /* make sure redrawing is correct */
+ curwin->w_p_lbr = lbr_saved;
+#endif
redraw_curbuf_later(INVERTED);
+ }
}
}
@@ -1863,7 +1869,12 @@ do_pending_operator(cap, old_col, gui_yank)
|| oap->op_type == OP_FOLD
#endif
))
+ {
+#ifdef FEAT_LINEBREAK
+ curwin->w_p_lbr = lbr_saved;
+#endif
redraw_curbuf_later(INVERTED);
+ }
/*
* If the end of an operator is in column one while oap->motion_type
@@ -1947,7 +1958,12 @@ do_pending_operator(cap, old_col, gui_yank)
}
}
else
+ {
+#ifdef FEAT_LINEBREAK
+ curwin->w_p_lbr = lbr_saved;
+#endif
(void)op_yank(oap, FALSE, !gui_yank);
+ }
check_cursor_col();
break;
@@ -1969,6 +1985,11 @@ do_pending_operator(cap, old_col, gui_yank)
else
restart_edit_save = 0;
restart_edit = 0;
+#ifdef FEAT_LINEBREAK
+ /* Restore linebreak, so that when the user edits it looks as
+ * before. */
+ curwin->w_p_lbr = lbr_saved;
+#endif
/* Reset finish_op now, don't want it set inside edit(). */
finish_op = FALSE;
if (op_change(oap)) /* will call edit() */
@@ -2064,8 +2085,16 @@ do_pending_operator(cap, old_col, gui_yank)
* Visual mode. But do this only once. */
restart_edit_save = restart_edit;
restart_edit = 0;
-
+#ifdef FEAT_LINEBREAK
+ /* Restore linebreak, so that when the user edits it looks as
+ * before. */
+ curwin->w_p_lbr = lbr_saved;
+#endif
op_insert(oap, cap->count1);
+#ifdef FEAT_LINEBREAK
+ /* Reset linebreak, so that formatting works correctly. */
+ curwin->w_p_lbr = FALSE;
+#endif
/* TODO: when inserting in several lines, should format all
* the lines. */
@@ -2090,7 +2119,14 @@ do_pending_operator(cap, old_col, gui_yank)
}
#ifdef FEAT_VISUALEXTRA
else
+ {
+#ifdef FEAT_LINEBREAK
+ /* Restore linebreak, so that when the user edits it looks as
+ * before. */
+ curwin->w_p_lbr = lbr_saved;
+#endif
op_replace(oap, cap->nchar);
+ }
#endif
break;
@@ -2134,7 +2170,12 @@ do_pending_operator(cap, old_col, gui_yank)
if (!p_sol && oap->motion_type == MLINE && !oap->end_adjusted
&& (oap->op_type == OP_LSHIFT || oap->op_type == OP_RSHIFT
|| oap->op_type == OP_DELETE))
+ {
+#ifdef FEAT_LINEBREAK
+ curwin->w_p_lbr = FALSE;
+#endif
coladvance(curwin->w_curswant = old_col);
+ }
}
else
{
diff --git a/src/version.c b/src/version.c
index 687052815..4f310058d 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 */
/**/
+ 576,
+/**/
575,
/**/
574,