NeogitOrg / neogit

An interactive and powerful Git interface for Neovim, inspired by Magit
MIT License
4.08k stars 241 forks source link

Neovim crashes after last update #1505

Closed strash closed 1 month ago

strash commented 1 month ago

Description

I get an error when I start neovim. You can get it using minimal.lua.

Neovim version

NVIM v0.10.2 Build type: Release LuaJIT 2.1.1727870382

Operating system and version

macOS 15.0.1

Steps to reproduce

  1. nvim -nu minimal.lua
  2. watch the red text

Expected behavior

No response

Actual behavior

The error:

Error detected while processing /Users/strash/.dotfiles/nvim/.config/nvim/init.lua:                                                                                                             
E5113: Error while calling lua chunk: /Users/strash/.config/nvim/lua/settings.lua:22: /Users/strash/.dotfiles/nvim/.config/nvim/init.lua..ColorScheme Autocommands for "*": Vim(append):Error ex
ecuting lua callback: vim/shared.lua:0: after the second argument: expected table, got nil                                                                                                      
stack traceback:                                                                                                                                                                                
        [C]: in function 'error'                                                                                                                                                                
        vim/shared.lua: in function 'validate'                                                                                                                                                  
        vim/shared.lua: in function 'make_palette'                                                                                                                                              
        ...rash/.local/share/nvim/lazy/neogit/lua/neogit/lib/hl.lua:149: in function <...rash/.local/share/nvim/lazy/neogit/lua/neogit/lib/hl.lua:148>                                          
        [C]: in function 'colo'                                                                                                                                                                 
        /Users/strash/.config/nvim/lua/settings.lua:22: in main chunk                                                                                                                           
        [C]: in function 'require'                                                                                                                                                              
        /Users/strash/.dotfiles/nvim/.config/nvim/init.lua:8: in main chunk                                                                                                                     
stack traceback:                                                                                                                                                                                
        [C]: in function 'colo'                                                                                                                                                                 
        /Users/strash/.config/nvim/lua/settings.lua:22: in main chunk                                                                                                                           
        [C]: in function 'require'                                                                                                                                                              
        /Users/strash/.dotfiles/nvim/.config/nvim/init.lua:8: in main chunk

Minimal config

local M = {}

local base_root_path = vim.fn.fnamemodify(debug.getinfo(1, "S").source:sub(2), ":p:h") .. "/.min"
function M.root(path)
    return base_root_path .. "/" .. (path or "")
end

function M.load_plugin(plugin_name, plugin_url)
    local package_root = M.root("plugins/")
    local install_destination = package_root .. plugin_name
    vim.opt.runtimepath:append(install_destination)

    if not vim.loop.fs_stat(package_root) then
        vim.fn.mkdir(package_root, "p")
    end

    if not vim.loop.fs_stat(install_destination) then
        print(string.format("> Downloading plugin '%s' to '%s'", plugin_name, install_destination))
        vim.fn.system({
            "git",
            "clone",
            "--depth=1",
            plugin_url,
            install_destination,
        })
        if vim.v.shell_error > 0 then
            error(string.format("> Failed to clone plugin: '%s' in '%s'!", plugin_name, install_destination),
                vim.log.levels.ERROR)
        end
    end
end

---@alias PluginName string The plugin name, will be used as part of the git clone destination
---@alias PluginUrl string The git url at which a plugin is located, can be a path. See https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols for details
---@alias MinPlugins table<PluginName, PluginUrl>

---Do the initial setup. Downloads plugins, ensures the minimal init does not pollute the filesystem by keeping
---everything self contained to the CWD of the minimal init file. Run prior to running tests, reproducing issues, etc.
---@param plugins? table<PluginName, PluginUrl>
function M.setup(plugins)
    vim.opt.packpath = {}                   -- Empty the package path so we use only the plugins specified
    vim.opt.runtimepath:append(M.root(".min")) -- Ensure the runtime detects the root min dir

    -- Install required plugins
    if plugins ~= nil then
        for plugin_name, plugin_url in pairs(plugins) do
            M.load_plugin(plugin_name, plugin_url)
        end
    end

    vim.env.XDG_CONFIG_HOME = M.root("xdg/config")
    vim.env.XDG_DATA_HOME = M.root("xdg/data")
    vim.env.XDG_STATE_HOME = M.root("xdg/state")
    vim.env.XDG_CACHE_HOME = M.root("xdg/cache")

    -- NOTE: Cleanup the xdg cache on exit so new runs of the minimal init doesn't share any previous state, e.g. shada
    vim.api.nvim_create_autocmd("VimLeave", {
        callback = function()
            vim.fn.system({
                "rm",
                "-r",
                "-f",
                M.root("xdg")
            })
        end
    })
end

-- NOTE: If you have additional plugins you need to install to reproduce your issue, include them in the plugins
-- table within the setup call below.
M.setup({
    plenary = "https://github.com/nvim-lua/plenary.nvim.git",
    -- telescope = "https://github.com/nvim-telescope/telescope.nvim",
    -- diffview = "https://github.com/sindrets/diffview.nvim",
    neogit = "https://github.com/NeogitOrg/neogit",
    lavish = "https://github.com/ferdinandrau/lavish.nvim",
})
-- WARN: Do all plugin setup, test runs, reproductions, etc. AFTER calling setup with a list of plugins!
-- Basically, do all that stuff AFTER this line.
require("neogit").setup({
    kind = "split",
    disable_commit_confirmation = true,
    disable_insert_on_commit = true,
}) -- For instance, setup Neogit
require("lavish").setup({
    style = {
        italic_comments = true,
    },
})

local opt, cmd = vim.opt, vim.cmd
opt.background = "dark"
-- also checked with other colorschemes, same
local colo = "lavish"
cmd.colorscheme(colo)
jmcollis commented 1 month ago

I see the same when you apply a colorscheme, either at startup or manually.

Ascenio commented 1 month ago

This has been fixed by eda716c44d3b5a424ea8604b10756c7fd8bed93a