Patch 7.4.1085
Problem:    The CTRL-A and CTRL-X commands do not update the '[ and '] marks.
Solution:   (Yukihiro Nakadaira)
Files:      src/ops.c, src/testdir/test_marks.in, src/testdir/test_marks.ok


*** ../vim-7.4.1084/src/ops.c   2016-01-10 14:13:35.846810344 +0100
--- src/ops.c   2016-01-10 20:16:05.220485343 +0100
***************
*** 5382,5387 ****
--- 5382,5389 ----
      int               pos = 0;
      int               bit = 0;
      int               bits = sizeof(unsigned long) * 8;
+     pos_T     startpos;
+     pos_T     endpos;
  
      dohex = (vim_strchr(curbuf->b_p_nf, 'x') != NULL);        /* "heX" */
      dooct = (vim_strchr(curbuf->b_p_nf, 'o') != NULL);        /* "Octal" */
***************
*** 5582,5590 ****
--- 5584,5595 ----
  #endif
            }
            curwin->w_cursor.col = col;
+           if (!did_change)
+               startpos = curwin->w_cursor;
            did_change = TRUE;
            (void)del_char(FALSE);
            ins_char(firstdigit);
+           endpos = curwin->w_cursor;
            curwin->w_cursor.col = col;
        }
        else
***************
*** 5677,5682 ****
--- 5682,5689 ----
             * Delete the old number.
             */
            curwin->w_cursor.col = col;
+           if (!did_change)
+               startpos = curwin->w_cursor;
            did_change = TRUE;
            todel = length;
            c = gchar_cursor();
***************
*** 5763,5768 ****
--- 5770,5776 ----
            STRCAT(buf1, buf2);
            ins_str(buf1);              /* insert the new number */
            vim_free(buf1);
+           endpos = curwin->w_cursor;
            if (lnum < lnume)
                curwin->w_cursor.col = t.col;
            else if (did_change && curwin->w_cursor.col)
***************
*** 5788,5793 ****
--- 5796,5809 ----
      if (visual)
        /* cursor at the top of the selection */
        curwin->w_cursor = VIsual;
+     if (did_change)
+     {
+       /* set the '[ and '] marks */
+       curbuf->b_op_start = startpos;
+       curbuf->b_op_end = endpos;
+       if (curbuf->b_op_end.col > 0)
+           --curbuf->b_op_end.col;
+     }
      return OK;
  }
  
*** ../vim-7.4.1084/src/testdir/test_marks.in   2015-02-17 13:43:35.562216149 
+0100
--- src/testdir/test_marks.in   2016-01-10 20:13:59.353854730 +0100
***************
*** 8,18 ****
  maddu u
  :let a = string(getpos("'a"))
  :$put ='Mark after delete-undo-redo-undo: '.a
! :/^\t/,$wq! test.out
  ENDTEST
  
        textline A
        textline B
        textline C
  
  Results:
--- 8,34 ----
  maddu u
  :let a = string(getpos("'a"))
  :$put ='Mark after delete-undo-redo-undo: '.a
! :''
  ENDTEST
  
        textline A
        textline B
        textline C
  
+ STARTTEST
+ :" test that CTRL-A and CTRL-X updates last changed mark '[, '].
+ :/^123/
+ :execute "normal! \<C-A>`[v`]rAjwvjw\<C-X>`[v`]rX"
+ ENDTEST
+ 
+ CTRL-A CTRL-X:
+ 123 123 123
+ 123 123 123
+ 123 123 123
+ 
+ STARTTEST
+ :g/^STARTTEST/.,/^ENDTEST/d
+ :wq! test.out
+ ENDTEST
+ 
  Results:
*** ../vim-7.4.1084/src/testdir/test_marks.ok   2015-02-17 13:43:35.562216149 
+0100
--- src/testdir/test_marks.ok   2016-01-10 20:13:59.353854730 +0100
***************
*** 1,6 ****
--- 1,16 ----
+ Tests for marks.
+ 
+ 
        textline A
        textline B
        textline C
  
+ 
+ CTRL-A CTRL-X:
+ AAA 123 123
+ 123 XXXXXXX
+ XXX 123 123
+ 
+ 
  Results:
  Mark after delete-undo-redo-undo: [0, 15, 2, 0]
*** ../vim-7.4.1084/src/version.c       2016-01-10 20:07:57.981777388 +0100
--- src/version.c       2016-01-10 20:21:27.176984314 +0100
***************
*** 743,744 ****
--- 743,746 ----
  {   /* Add new patch number below this line */
+ /**/
+     1085,
  /**/

-- 
How come wrong numbers are never busy?

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