mirror of
https://github.com/neovim/neovim
synced 2025-07-15 16:51:49 +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:
@ -763,7 +763,8 @@ void nlua_state_add_stdlib(lua_State *const lstate, bool is_thread)
|
||||
|
||||
// vim.text.diff
|
||||
lua_pushcfunction(lstate, &nlua_xdl_diff);
|
||||
lua_setfield(lstate, -2, "_diff");
|
||||
// TODO(justinmk): set vim.text.diff here, or rename this to "_diff". goddamnit.
|
||||
lua_setfield(lstate, -2, "diff");
|
||||
|
||||
// vim.json
|
||||
lua_cjson_new(lstate);
|
||||
|
Reference in New Issue
Block a user