diff options
author | Lewis Russell <lewis6991@gmail.com> | 2022-02-05 17:49:48 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-05 09:49:48 -0800 |
commit | 92e92f02e7106fcad1597bb8f0edf1e43186a07f (patch) | |
tree | ebbf972de58af7ba3244316097423b4ae3c02b76 | |
parent | cee944e3ee548621776fde7ecd1bf65ae0609a06 (diff) | |
download | rneovim-92e92f02e7106fcad1597bb8f0edf1e43186a07f.tar.gz rneovim-92e92f02e7106fcad1597bb8f0edf1e43186a07f.tar.bz2 rneovim-92e92f02e7106fcad1597bb8f0edf1e43186a07f.zip |
fix(diff): make algorithm work for vim.diff (#17300)
Fixes #17207
-rw-r--r-- | src/nvim/lua/xdiff.c | 6 | ||||
-rw-r--r-- | test/functional/lua/xdiff_spec.lua | 42 |
2 files changed, 45 insertions, 3 deletions
diff --git a/src/nvim/lua/xdiff.c b/src/nvim/lua/xdiff.c index b2e971f9f3..ea7a700e1e 100644 --- a/src/nvim/lua/xdiff.c +++ b/src/nvim/lua/xdiff.c @@ -184,11 +184,11 @@ static NluaXdiffMode process_xdl_diff_opts(lua_State *lstate, xdemitconf_t *cfg, if (strequal("myers", v->data.string.data)) { // default } else if (strequal("minimal", v->data.string.data)) { - cfg->flags |= XDF_NEED_MINIMAL; + params->flags |= XDF_NEED_MINIMAL; } else if (strequal("patience", v->data.string.data)) { - cfg->flags |= XDF_PATIENCE_DIFF; + params->flags |= XDF_PATIENCE_DIFF; } else if (strequal("histogram", v->data.string.data)) { - cfg->flags |= XDF_HISTOGRAM_DIFF; + params->flags |= XDF_HISTOGRAM_DIFF; } else { api_set_error(err, kErrorTypeValidation, "not a valid algorithm"); goto exit_1; diff --git a/test/functional/lua/xdiff_spec.lua b/test/functional/lua/xdiff_spec.lua index 4f28f84c01..d55268fc78 100644 --- a/test/functional/lua/xdiff_spec.lua +++ b/test/functional/lua/xdiff_spec.lua @@ -90,6 +90,48 @@ describe('xdiff bindings', function() exec_lua([[return vim.diff(a2, b2, {result_type = 'indices'})]])) end) + it('can run different algorithms', function() + local a = table.concat({ + '.foo1 {', + ' margin: 0;', + '}', + '', + '.bar {', + ' margin: 0;', + '}', + ''}, '\n') + + local b = table.concat({ + '.bar {', + ' margin: 0;', + '}', + '', + '.foo1 {', + ' margin: 0;', + ' color: green;', + '}', + ''}, '\n') + + eq( + table.concat({'@@ -1,4 +0,0 @@', + '-.foo1 {', + '- margin: 0;', + '-}', + '-', + '@@ -7,0 +4,5 @@', + '+', + '+.foo1 {', + '+ margin: 0;', + '+ color: green;', + '+}', + ''}, '\n'), + exec_lua([[ + local args = {...} + return vim.diff(args[1], args[2], { + algorithm = 'patience' + }) + ]], a, b)) + end) end) it('can handle bad args', function() |