mirror of
https://github.com/neovim/neovim.git
synced 2025-12-15 19:05:40 +00:00
fix(lua): vim.diff is nil in uv.new_work() thread #34909
Problem:
The "gitsigns" plugin runs `vim.diff` in a thread (`uv.new_work`), but
`vim.diff` is nil in that context:
Lua callback:
…/gitsigns.nvim/lua/gitsigns/diff_int.lua:30: bad argument #1 to 'decode' (string expected, got nil)
stack traceback:
[C]: in function 'decode'
…/gitsigns.nvim/lua/gitsigns/diff_int.lua:30: in function <…/gitsigns.nvim/lua/gitsigns/diff_int.lua:29>
Luv thread:
…/gitsigns.nvim/lua/gitsigns/diff_int.lua:63: attempt to call field 'diff' (a nil value)
Solution:
Revert the `stdlib.c` change (set `vim.diff` instead of `vim._diff`).
This commit is contained in:
@@ -217,7 +217,7 @@ describe('thread', function()
|
||||
it('diff', function()
|
||||
exec_lua [[
|
||||
local entry = function(async)
|
||||
async:send(vim._diff('Hello\n', 'Helli\n'))
|
||||
async:send(vim.diff('Hello\n', 'Helli\n'))
|
||||
end
|
||||
local on_async = function(ret)
|
||||
vim.rpcnotify(1, 'result', ret)
|
||||
@@ -372,7 +372,7 @@ describe('threadpool', function()
|
||||
it('work', function()
|
||||
exec_lua [[
|
||||
local work_fn = function()
|
||||
return vim._diff('Hello\n', 'Helli\n')
|
||||
return vim.diff('Hello\n', 'Helli\n')
|
||||
end
|
||||
local after_work_fn = function(ret)
|
||||
vim.rpcnotify(1, 'result', ret)
|
||||
|
||||
Reference in New Issue
Block a user