Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bug: config.opts treats empty table as nil #351

Closed
3 tasks done
mvllow opened this issue Jan 8, 2023 · 2 comments · Fixed by #352
Closed
3 tasks done

bug: config.opts treats empty table as nil #351

mvllow opened this issue Jan 8, 2023 · 2 comments · Fixed by #352
Labels
bug Something isn't working

Comments

@mvllow
Copy link

mvllow commented Jan 8, 2023

Did you check docs and existing issues?

  • I have read all the lazy.nvim docs
  • I have searched the existing issues of lazy.nvim
  • I have searched the exsiting issues of plugins related to this issue

Neovim version (nvim -v)

NVIM v0.9.0-dev-1834+gf7ad46e69-dirty

Operating system/version

macOS Ventura 13.2

Describe the bug

Setting opts to an empty table results in nil. Some plugins require an empty table to use the default config, e.g. mason-tool-installer.nvim

Failed to run `config` for mason-tool-installer.nvim                           
vim/shared.lua:0: after the second argument: expected table, got nil

Currently, you must do opts = { key = "value" } or similar for the table to be recognised.

Steps To Reproduce

  1. Use the repro below
  2. Let lazy install necessary plugins, using opts = {} for mason-tool-installer.nvim
  3. Reopen Neovim to be greeted with the "expected table, got nil" error

Expected Behavior

Passing opts = {} should result in plugin.setup({}).

Repro

-- DO NOT change the paths and don't remove the colorscheme
local root = vim.fn.fnamemodify("./.repro", ":p")

-- set stdpaths to use .repro
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 = {
	"folke/tokyonight.nvim",
	{
		"WhoIsSethDaniel/mason-tool-installer.nvim",
		dependencies = { "williamboman/mason.nvim", config = true },
		opts = {},
	},
}
require("lazy").setup(plugins, {
	root = root .. "/plugins",
})

vim.cmd.colorscheme("tokyonight")
-- add anything else here
@mvllow mvllow added the bug Something isn't working label Jan 8, 2023
@folke folke closed this as completed in e77be3c Jan 8, 2023
@folke
Copy link
Owner

folke commented Jan 8, 2023

I'd argue that this should be fixed in mason-tools-installer, but I've changed it anyway since it probably makes more sense to let it always be a table.

There are other plugins that will break now though, but for those they just need to use a config() function instead. like #208

@mvllow
Copy link
Author

mvllow commented Jan 8, 2023

That makes sense, so config = true would be for nil opts. I agree that it would be nice for plugins to not expect an empty table.

Appreciate the fix :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants