Files
neovim/runtime/lua/vim/_meta/misc.lua
Justin M. Keyes 89b946aa87 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`).
2025-07-12 20:54:22 -07:00

25 lines
612 B
Lua

---@meta
-- luacheck: no unused args
--- Invokes |vim-function| or |user-function| {func} with arguments {...}.
--- See also |vim.fn|.
--- Equivalent to:
---
--- ```lua
--- vim.fn[func]({...})
--- ```
---
--- @param func string
--- @param ... any
--- @return any
function vim.call(func, ...) end
--- Renamed to `vim.text.diff`, remove at Nvim 1.0
---@deprecated
---@param a string First string to compare
---@param b string Second string to compare
---@param opts? vim.text.diff.Opts
---@return string|integer[][]? # See {opts.result_type}. `nil` if {opts.on_hunk} is given.
function vim.diff(a, b, opts) end