Fix: Skip BASE16_THEME lookup when colors are passed directly to setup() #114
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
When using
vim.cmd.colorscheme('base16-xyz'), the colorscheme.vimfile passes colors directly tosetup():However,
setup()unconditionally checksBASE16_THEMEand accessesM.colorschemes[vim.env.BASE16_THEME]at line 141, even when colors are already provided. This triggers the metatable __index, which callsrequire('colors.' .. key).This fails when the lua/colors/ directory isn't in package.path which can happen depending on how plugin managers set up paths.
The issue is masked when running inside tmux because the
vim.env.TMUX ~= nilcheck skips this code path entirely.Fix
Only perform the BASE16_THEME lookup when colors is nil:
This is backwards compatible. The
BASE16_THEMEauto-detection only makes sense when no colors are explicitly provided.