Patch 7.4.576
Problem:    Redrawing problem with 'relativenumber' and 'linebreak'.
Solution:   Temporarily reset 'linebreak' and restore it in more places.
            (Christian Brabandt)
Files:      src/normal.c


*** ../vim-7.4.575/src/normal.c 2014-10-31 13:54:21.843214469 +0100
--- src/normal.c        2015-01-14 17:49:38.320915425 +0100
***************
*** 1393,1402 ****
      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
--- 1393,1398 ----
***************
*** 1420,1425 ****
--- 1416,1425 ----
       */
      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,1825 ****
--- 1819,1831 ----
                            || 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,1869 ****
--- 1869,1880 ----
                    || 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,1953 ****
--- 1958,1969 ----
                }
            }
            else
+           {
+ #ifdef FEAT_LINEBREAK
+               curwin->w_p_lbr = lbr_saved;
+ #endif
                (void)op_yank(oap, FALSE, !gui_yank);
+           }
            check_cursor_col();
            break;
  
***************
*** 1969,1974 ****
--- 1985,1995 ----
                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,2071 ****
                 * Visual mode.  But do this only once. */
                restart_edit_save = restart_edit;
                restart_edit = 0;
! 
                op_insert(oap, cap->count1);
  
                /* TODO: when inserting in several lines, should format all
                 * the lines. */
--- 2085,2100 ----
                 * 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,2096 ****
--- 2119,2132 ----
            }
  #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,2140 ****
--- 2170,2181 ----
            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
        {
*** ../vim-7.4.575/src/version.c        2015-01-14 17:40:04.407125696 +0100
--- src/version.c       2015-01-14 17:47:45.898132017 +0100
***************
*** 743,744 ****
--- 743,746 ----
  {   /* Add new patch number below this line */
+ /**/
+     576,
  /**/

-- 
>From "know your smileys":
 :-H    Is missing teeth

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
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.

Raspunde prin e-mail lui