diff options
-rw-r--r-- | src/nvim/diff.c | 15 | ||||
-rw-r--r-- | src/nvim/normal.c | 6 | ||||
-rw-r--r-- | src/nvim/version.c | 2 |
3 files changed, 16 insertions, 7 deletions
diff --git a/src/nvim/diff.c b/src/nvim/diff.c index 6cc75e948c..b8fa3c24a2 100644 --- a/src/nvim/diff.c +++ b/src/nvim/diff.c @@ -2017,17 +2017,24 @@ int diff_infold(win_T *wp, linenr_T lnum) } /// "dp" and "do" commands. -/// -/// @param put -void nv_diffgetput(int put) +void nv_diffgetput(bool put, size_t count) { exarg_T ea; - ea.arg = (char_u *)""; + char buf[30]; + + if (count == 0) { + ea.arg = (char_u *)""; + } else { + vim_snprintf(buf, 30, "%zu", count); + ea.arg = (char_u *)buf; + } + if (put) { ea.cmdidx = CMD_diffput; } else { ea.cmdidx = CMD_diffget; } + ea.addr_count = 0; ea.line1 = curwin->w_cursor.lnum; ea.line2 = curwin->w_cursor.lnum; diff --git a/src/nvim/normal.c b/src/nvim/normal.c index e1aed23e8c..5b138f2d88 100644 --- a/src/nvim/normal.c +++ b/src/nvim/normal.c @@ -7248,7 +7248,8 @@ static void nv_put(cmdarg_T *cap) /* "dp" is ":diffput" */ if (cap->oap->op_type == OP_DELETE && cap->cmdchar == 'p') { clearop(cap->oap); - nv_diffgetput(true); + assert(cap->opcount >= 0); + nv_diffgetput(true, (size_t)cap->opcount); } else clearopbeep(cap->oap); } else { @@ -7350,7 +7351,8 @@ static void nv_open(cmdarg_T *cap) /* "do" is ":diffget" */ if (cap->oap->op_type == OP_DELETE && cap->cmdchar == 'o') { clearop(cap->oap); - nv_diffgetput(false); + assert(cap->opcount >= 0); + nv_diffgetput(false, (size_t)cap->opcount); } else if (VIsual_active) /* switch start and end of visual */ v_swap_corners(cap->cmdchar); else diff --git a/src/nvim/version.c b/src/nvim/version.c index 3e214bfd30..e34db7f40a 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -255,7 +255,7 @@ static int included_patches[] = { 493, //492, 491, - //490, + 490, 489, 488, 487, |