Am 2014-11-26 08:17, schrieb Nazri Ramliy:
On Wed, Nov 26, 2014 at 5:13 AM, Christian Brabandt
<[email protected]> wrote:
That bug you reported actually is the same, just that the mentioned
patch does not fix it for your situation. (since I forgot to reset the
linebreak for the couple of times, where the screen is redrawn. That
should be fixed with this patch).
Here is an update. Please test with that patch (should apply cleanly
on
top of master).
Tested, with this result:
Line 3 is redrawn with 'nolinebreak' when doing either of these two:
- Go to line 10, then do y5j
Still buggy.
- Visual-line-select lines 10 to 15, hit y
Bug fixed.
Sorry, I missed one part. Please check again.
Thanks.
Best,
Christian
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups "vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.
diff --git a/src/normal.c b/src/normal.c
--- a/src/normal.c
+++ b/src/normal.c
@@ -1393,10 +1393,6 @@ do_pending_operator(cap, old_col, gui_ya
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_ya
*/
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_ya
|| 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_ya
|| 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_ya
}
}
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,10 @@ do_pending_operator(cap, old_col, gui_ya
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 +2084,15 @@ do_pending_operator(cap, old_col, gui_ya
* 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 +2117,13 @@ do_pending_operator(cap, old_col, gui_ya
}
#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 +2167,12 @@ do_pending_operator(cap, old_col, gui_ya
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
{