neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit b854f2ce093de9593278b371de796f2ace044376
parent f1c864cfe340dbb225caaf3dcbe28ee705be9f75
Author: Lewis Russell <lewis6991@gmail.com>
Date:   Fri,  4 Nov 2022 11:12:17 +0000

fix(vim.diff): correctly apply hunk offsets with linematch (#20931)


Diffstat:
Msrc/nvim/lua/xdiff.c | 18+++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/src/nvim/lua/xdiff.c b/src/nvim/lua/xdiff.c @@ -41,6 +41,15 @@ typedef struct { static void lua_pushhunk(lua_State *lstate, long start_a, long count_a, long start_b, long count_b) { + // Mimic extra offsets done by xdiff, see: + // src/xdiff/xemit.c:284 + // src/xdiff/xutils.c:(356,368) + if (count_a > 0) { + start_a += 1; + } + if (count_b > 0) { + start_b += 1; + } lua_createtable(lstate, 0, 0); lua_pushinteger(lstate, start_a); lua_rawseti(lstate, -2, 1); @@ -116,15 +125,6 @@ static int write_string(void *priv, mmbuffer_t *mb, int nbuf) // hunk_func callback used when opts.hunk_lines = true static int hunk_locations_cb(long start_a, long count_a, long start_b, long count_b, void *cb_data) { - // Mimic extra offsets done by xdiff, see: - // src/xdiff/xemit.c:284 - // src/xdiff/xutils.c:(356,368) - if (count_a > 0) { - start_a += 1; - } - if (count_b > 0) { - start_b += 1; - } hunkpriv_t *priv = (hunkpriv_t *)cb_data; lua_State *lstate = priv->lstate; if (priv->linematch) {