Patch 7.4.490
Problem:    Cannot specify the buffer to use for "do" and "dp", making them
            useless for three-way diff.
Solution:   Use the count as the buffer number. (James McCoy)
Files:      runtime/doc/diff.txt, src/diff.c, src/normal.c, src/proto/diff.pro


*** ../vim-7.4.489/runtime/doc/diff.txt 2013-08-10 13:24:52.000000000 +0200
--- runtime/doc/diff.txt        2014-10-31 13:39:22.443236141 +0100
***************
*** 95,101 ****
  :difft[his]   Make the current window part of the diff windows.  This sets
                the options like for "vimdiff".
  
! :diffp[atch] {patchfile}                               *E816* *:diffp* 
*:diffpatch*
                Use the current buffer, patch it with the diff found in
                {patchfile} and open a buffer on the result.  The options are
                set as for "vimdiff".
--- 95,101 ----
  :difft[his]   Make the current window part of the diff windows.  This sets
                the options like for "vimdiff".
  
! :diffp[atch] {patchfile}                       *E816* *:diffp* *:diffpatch*
                Use the current buffer, patch it with the diff found in
                {patchfile} and open a buffer on the result.  The options are
                set as for "vimdiff".
***************
*** 123,132 ****
  file for a moment and come back to the same file and be in diff mode again.
  
                                                        *:diffo* *:diffoff*
! :diffo[ff]    Switch off diff mode for the current window.
  
  :diffo[ff]!   Switch off diff mode for the current window and in all windows
!               in the current tab page where 'diff' is set.
  
  The ":diffoff" command resets the relevant options to the values they had when
  using |:diffsplit|, |:diffpatch| , |:diffthis|. or starting Vim in diff mode.
--- 123,136 ----
  file for a moment and come back to the same file and be in diff mode again.
  
                                                        *:diffo* *:diffoff*
! :diffo[ff]    Switch off diff mode for the current window.  Resets related
!               options also when 'diff' was not set.
  
  :diffo[ff]!   Switch off diff mode for the current window and in all windows
!               in the current tab page where 'diff' is set.  Resetting
!               related options only happens in a window that has 'diff' set,
!               if the current window does not have 'diff' set then no options
!               in it are changed.
  
  The ":diffoff" command resets the relevant options to the values they had when
  using |:diffsplit|, |:diffpatch| , |:diffthis|. or starting Vim in diff mode.
***************
*** 262,274 ****
                See below for [range].
  
                                                        *do*
! do            Same as ":diffget" without argument or range.  The "o" stands
!               for "obtain" ("dg" can't be used, it could be the start of
!               "dgg"!). Note: this doesn't work in Visual mode.
  
                                                        *dp*
! dp            Same as ":diffput" without argument or range.
!               Note: this doesn't work in Visual mode.
  
  
  When no [range] is given, the diff at the cursor position or just above it is
--- 266,282 ----
                See below for [range].
  
                                                        *do*
! [count]do     Same as ":diffget" without range.  The "o" stands for "obtain"
!               ("dg" can't be used, it could be the start of "dgg"!). Note:
!               this doesn't work in Visual mode.
!               If you give a [count], it is used as the [bufspec] argument
!               for ":diffget".
  
                                                        *dp*
! [count]dp     Same as ":diffput" without range.  Note: this doesn't work in
!               Visual mode.
!               If you give a [count], it is used as the [bufspec] argument
!               for ":diffput".
  
  
  When no [range] is given, the diff at the cursor position or just above it is
*** ../vim-7.4.489/src/diff.c   2014-10-15 12:56:44.006015955 +0200
--- src/diff.c  2014-10-31 13:44:20.739228953 +0100
***************
*** 2107,2118 ****
   * "dp" and "do" commands.
   */
      void
! nv_diffgetput(put)
      int               put;
  {
      exarg_T   ea;
  
!     ea.arg = (char_u *)"";
      if (put)
        ea.cmdidx = CMD_diffput;
      else
--- 2107,2126 ----
   * "dp" and "do" commands.
   */
      void
! nv_diffgetput(put, count)
      int               put;
+     long      count;
  {
      exarg_T   ea;
+     char_u    buf[30];
  
!     if (count == 0)
!       ea.arg = (char_u *)"";
!     else
!     {
!       vim_snprintf((char *)buf, 30, "%ld", count);
!       ea.arg = buf;
!     }
      if (put)
        ea.cmdidx = CMD_diffput;
      else
*** ../vim-7.4.489/src/normal.c 2014-10-09 14:48:26.284898230 +0200
--- src/normal.c        2014-10-31 13:36:32.671240232 +0100
***************
*** 9284,9290 ****
        if (cap->oap->op_type == OP_DELETE && cap->cmdchar == 'p')
        {
            clearop(cap->oap);
!           nv_diffgetput(TRUE);
        }
        else
  #endif
--- 9284,9290 ----
        if (cap->oap->op_type == OP_DELETE && cap->cmdchar == 'p')
        {
            clearop(cap->oap);
!           nv_diffgetput(TRUE, cap->opcount);
        }
        else
  #endif
***************
*** 9407,9413 ****
      if (cap->oap->op_type == OP_DELETE && cap->cmdchar == 'o')
      {
        clearop(cap->oap);
!       nv_diffgetput(FALSE);
      }
      else
  #endif
--- 9407,9413 ----
      if (cap->oap->op_type == OP_DELETE && cap->cmdchar == 'o')
      {
        clearop(cap->oap);
!       nv_diffgetput(FALSE, cap->opcount);
      }
      else
  #endif
*** ../vim-7.4.489/src/proto/diff.pro   2013-08-10 13:37:07.000000000 +0200
--- src/proto/diff.pro  2014-10-31 13:36:32.671240232 +0100
***************
*** 18,24 ****
  int diffopt_horizontal __ARGS((void));
  int diff_find_change __ARGS((win_T *wp, linenr_T lnum, int *startp, int 
*endp));
  int diff_infold __ARGS((win_T *wp, linenr_T lnum));
! void nv_diffgetput __ARGS((int put));
  void ex_diffgetput __ARGS((exarg_T *eap));
  int diff_mode_buf __ARGS((buf_T *buf));
  int diff_move_to __ARGS((int dir, long count));
--- 18,24 ----
  int diffopt_horizontal __ARGS((void));
  int diff_find_change __ARGS((win_T *wp, linenr_T lnum, int *startp, int 
*endp));
  int diff_infold __ARGS((win_T *wp, linenr_T lnum));
! void nv_diffgetput __ARGS((int put, long count));
  void ex_diffgetput __ARGS((exarg_T *eap));
  int diff_mode_buf __ARGS((buf_T *buf));
  int diff_move_to __ARGS((int dir, long count));
*** ../vim-7.4.489/src/version.c        2014-10-31 12:41:57.427319153 +0100
--- src/version.c       2014-10-31 13:37:54.511238260 +0100
***************
*** 743,744 ****
--- 743,746 ----
  {   /* Add new patch number below this line */
+ /**/
+     490,
  /**/

-- 
GUARD #2:  It could be carried by an African swallow!
GUARD #1:  Oh, yeah, an African swallow maybe, but not a European swallow,
           that's my point.
GUARD #2:  Oh, yeah, I agree with that...
                                  The Quest for the Holy Grail (Monty Python)

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