Patch 7.3.1303 (after 7.3.1290)
Problem:    Undo is synced whenever CTRL-R = is called, breaking some plugins.
Solution:   Only break undo when calling setline() or append().
Files:      src/globals.h, src/eval.c, src/edit.c, src/testdir/test61.in,
            src/testdir/test61.ok


*** ../vim-7.3.1302/src/globals.h       2013-04-24 14:06:42.000000000 +0200
--- src/globals.h       2013-07-04 19:53:44.000000000 +0200
***************
*** 916,921 ****
--- 916,925 ----
  EXTERN int allow_keys INIT(= FALSE);  /* allow key codes when no_mapping
                                         * is set */
  EXTERN int no_u_sync INIT(= 0);               /* Don't call u_sync() */
+ #ifdef FEAT_EVAL
+ EXTERN int u_sync_once INIT(= 0);     /* Call u_sync() once when evaluating
+                                          an expression. */
+ #endif
  
  EXTERN int restart_edit INIT(= 0);    /* call edit when next cmd finished */
  EXTERN int arrow_used;                        /* Normally FALSE, set to TRUE 
after
*** ../vim-7.3.1302/src/eval.c  2013-06-29 13:58:26.000000000 +0200
--- src/eval.c  2013-07-04 19:57:18.000000000 +0200
***************
*** 8742,8747 ****
--- 8742,8755 ----
      typval_T  *tv;
      long      added = 0;
  
+     /* When coming here from Insert mode, sync undo, so that this can be
+      * undone separately from what was previously inserted. */
+     if (u_sync_once == 2)
+     {
+       u_sync_once = 1; /* notify that u_sync() was called */
+       u_sync(TRUE);
+     }
+ 
      lnum = get_tv_lnum(argvars);
      if (lnum >= 0
            && lnum <= curbuf->b_ml.ml_line_count
***************
*** 16408,16413 ****
--- 16416,16430 ----
        rettv->vval.v_number = 1;       /* FAIL */
        if (line == NULL || lnum < 1 || lnum > curbuf->b_ml.ml_line_count + 1)
            break;
+ 
+       /* When coming here from Insert mode, sync undo, so that this can be
+        * undone separately from what was previously inserted. */
+       if (u_sync_once == 2)
+       {
+           u_sync_once = 1; /* notify that u_sync() was called */
+           u_sync(TRUE);
+       }
+ 
        if (lnum <= curbuf->b_ml.ml_line_count)
        {
            /* existing line, replace it */
*** ../vim-7.3.1302/src/edit.c  2013-07-03 13:16:18.000000000 +0200
--- src/edit.c  2013-07-04 20:22:25.000000000 +0200
***************
*** 8135,8143 ****
  # ifdef USE_IM_CONTROL
        int     im_on = im_get_status();
  # endif
!       /* Sync undo, so the effect of e.g., setline() can be undone. */
!       u_sync(TRUE);
!       ins_need_undo = TRUE;
  
        regname = get_expr_register();
  # ifdef USE_IM_CONTROL
--- 8135,8143 ----
  # ifdef USE_IM_CONTROL
        int     im_on = im_get_status();
  # endif
!       /* Sync undo when evaluating the expression calls setline() or
!        * append(), so that it can be undone separately. */
!       u_sync_once = 2;
  
        regname = get_expr_register();
  # ifdef USE_IM_CONTROL
***************
*** 8178,8183 ****
--- 8178,8186 ----
  #ifdef FEAT_EVAL
      }
      --no_u_sync;
+     if (u_sync_once == 1)
+       ins_need_undo = TRUE;
+     u_sync_once = 0;
  #endif
  #ifdef FEAT_CMDL_INFO
      clear_showcmd();
*** ../vim-7.3.1302/src/testdir/test61.in       2013-06-26 21:56:33.000000000 
+0200
--- src/testdir/test61.in       2013-07-04 20:23:47.000000000 +0200
***************
*** 93,99 ****
  :set ul=100
  o1 a2 =setline('.','1234')
  
!  uu:%w >>test.out
  :qa!
  ENDTEST
  
--- 93,109 ----
  :set ul=100
  o1 a2 =setline('.','1234')
  
!  uu:"
! oc 
! :set ul=100
! o1 a2 =setline('.','1234')
! 
!  u:"
! od 
! :set ul=100
! o1 a2 =string(123)
!  u:"
! :%w >>test.out
  :qa!
  ENDTEST
  
*** ../vim-7.3.1302/src/testdir/test61.ok       2013-06-15 17:54:36.000000000 
+0200
--- src/testdir/test61.ok       2013-07-04 20:24:25.000000000 +0200
***************
*** 44,46 ****
--- 44,49 ----
  
  a
  b
+ c
+ 12
+ d
*** ../vim-7.3.1302/src/version.c       2013-07-03 22:28:32.000000000 +0200
--- src/version.c       2013-07-04 20:09:30.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
  {   /* Add new patch number below this line */
+ /**/
+     1303,
  /**/


-- 
In Africa some of the native tribes have a custom of beating the ground
with clubs and uttering spine chilling cries.  Anthropologists call
this a form of primitive self-expression.  In America we call it golf.

 /// 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/groups/opt_out.


Raspunde prin e-mail lui