sindrets / diffview.nvim

Single tabpage interface for easily cycling through diffs for all modified files for any git rev.
Other
3.6k stars 101 forks source link

[Bug] attempt to call field 'nvim_get_hl' (a nil value) #417

Closed jafinn3 closed 10 months ago

jafinn3 commented 10 months ago

Description

When trying to execute DiffviewOpen, DiffviewRefresh, DiffviewFileHistory, DiffviewFocusFiles, or DiffviewToggleFiles, I get an error about nvim_get_hl being a nil value. No information shows in DiffviewLog. There is some interesting info in CheckHealth, pasted below. Specifically, diffview/ffi.lua:22: nvim: undefined symbol: expr_map_lock

Expected behavior

No response

Actual behavior

After executing any of the mentioned commands, I get:

Error executing Lua callback: ...cal/share/nvim/plugged/diffview.nvim/lua/diffview/hl.lua:138: attempt to call field 'nvim_get_hl' (a nil value)
stack traceback:
        ...cal/share/nvim/plugged/diffview.nvim/lua/diffview/hl.lua:138: in function 'get_hl'
        ...cal/share/nvim/plugged/diffview.nvim/lua/diffview/hl.lua:166: in function 'get_hl_attr'
        ...cal/share/nvim/plugged/diffview.nvim/lua/diffview/hl.lua:185: in function 'get_fg'
        ...cal/share/nvim/plugged/diffview.nvim/lua/diffview/hl.lua:408: in function 'get_colors'
        ...cal/share/nvim/plugged/diffview.nvim/lua/diffview/hl.lua:421: in function 'get_hl_groups'
        ...cal/share/nvim/plugged/diffview.nvim/lua/diffview/hl.lua:485: in function 'setup'
        ...l/share/nvim/plugged/diffview.nvim/lua/diffview/init.lua:42: in function 'init'
        ...l/share/nvim/plugged/diffview.nvim/lua/diffview/init.lua:277: in main chunk
        [C]: in function 'handler'
        ...l/share/nvim/plugged/diffview.nvim/lua/diffview/lazy.lua:23: in function '__get'
        ...l/share/nvim/plugged/diffview.nvim/lua/diffview/lazy.lua:35: in function '__index'
        ...cal/share/nvim/plugged/diffview.nvim/plugin/diffview.lua:34: in function <...cal/share/nvim/plugged/diffview.nvim/plugin/diffview.lua:27>

Steps to reproduce

nvim

:DiffviewOpen

Health check

Output of :checkhealth diffview ``` diffview: require("diffview.health").check() ======================================================================== - ERROR: Failed to run healthcheck for "diffview" plugin. Exception: CmdUndefined Autocommands for "CheckHealth"..function health#check, line 20 Vim(eval):E5108: Error executing lua .../share/nvim/plugged/diffview.nvim/lua/diffview/async.lua:187: The coroutine failed with this message: context: cur_thread=main co_thread= co_func=.../share/nvim/plugged/diffview.nvim/lua/diffview/async.lua:566 ...al/share/nvim/plugged/diffview.nvim/lua/diffview/ffi.lua:22: nvim: undefined symbol: expr_map_lock stack traceback: [C]: in function '__index' ...al/share/nvim/plugged/diffview.nvim/lua/diffview/ffi.lua:22: in function 'nvim_is_locked' .../share/nvim/plugged/diffview.nvim/lua/diffview/async.lua:567: in function 'func' .../share/nvim/plugged/diffview.nvim/lua/diffview/async.lua:373: in function <.../share/nvim/plugged/diffview.nvim/lua/diffview/async.lua:358> stack traceback: [C]: in function 'error' .../share/nvim/plugged/diffview.nvim/lua/diffview/async.lua:187: in function 'raise' .../share/nvim/plugged/diffview.nvim/lua/diffview/async.lua:215: in function 'step' .../share/nvim/plugged/diffview.nvim/lua/diffview/async.lua:412: in function 'scheduler' ...al/share/nvim/plugged/diffview.nvim/lua/diffview/job.lua:402: in function 'sync' .../share/nvim/plugged/diffview.nvim/lua/diffview/utils.lua:349: in function 'job' ...ged/diffview.nvim/lua/diffview/vcs/adapters/git/init.lua:101: in function 'run_bootstrap' ...share/nvim/plugged/diffview.nvim/lua/diffview/health.lua:82: in function <...share/nvim/plugged/diffview.nvim/lua/diffview/health.lua:66> ...share/nvim/plugged/diffview.nvim/lua/diffview/health.lua:99: in function 'check' [string "luaeval()"]:1: in main chunk ```

Log info

Relevant info from :DiffviewLog Nothing prints to log

Neovim version

NVIM v0.9.0-dev-135-g96cf385a7
Build type: RelWithDebInfo
LuaJIT 2.1.0-beta3

Operating system and version

CentOS Linux release 7.9.2009

Minimal config

-- #######################################
-- ### USAGE: nvim --clean -u mini.lua ###
-- #######################################

local root = vim.fn.stdpath("run") .. "/nvim/diffview.nvim"
vim.fn.mkdir(root, "p")

-- set stdpaths to use root
for _, name in ipairs({ "config", "data", "state", "cache" }) do
  vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name
end

-- bootstrap lazy
local lazypath = root .. "/plugins/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", lazypath, })
end
vim.opt.runtimepath:prepend(lazypath)

-- install plugins
local plugins = {
  {
    "sindrets/diffview.nvim",
    dependencies = { "nvim-tree/nvim-web-devicons" },
    config = function()
      require("diffview").setup({
        -- ##############################################################################
        -- ### ADD DIFFVIEW.NVIM CONFIG THAT IS _NECESSARY_ FOR REPRODUCING THE ISSUE ###
        -- ##############################################################################
      })
    end,
  },
  -- ##################################################################
  -- ### ADD PLUGINS THAT ARE _NECESSARY_ FOR REPRODUCING THE ISSUE ###
  -- ##################################################################
}
require("lazy").setup(plugins, { root = root .. "/plugins" })
require("lazy").sync({ show = false, wait = true })

vim.opt.termguicolors = true
vim.cmd("colorscheme " .. (vim.fn.has("nvim-0.8") == 1 and "habamax" or "slate"))

-- ############################################################################
-- ### ADD INIT.LUA SETTINGS THAT ARE _NECESSARY_ FOR REPRODUCING THE ISSUE ###
-- ############################################################################
sindrets commented 10 months ago

You're running an old dev build. Update to a stable release, or a newer nightly version.

jafinn3 commented 10 months ago

Fixed, thanks!