Closed savq closed 3 years ago
Hmm, technically Lush only supports Neovim. I think it's better that any compat layer is done outside of Lush. Wary of scope creep.
I would probably patch it before the make file since you already have a build system
function targets.vim8()
local parsed = lush(melange)
-- i forget how to write lua properly...
for group, values in pairs(parsed) do
values.gui = maybe_gui_without_blend(values.gui)
-- I think you can abuse lua mutability here
parsed[group] = values -- might muck up lua's pairs/next() iterator though
-- you can see that compile does some basic type checking (for a __lushmeta key)
-- https://github.com/rktjmp/lush.nvim/blob/02b79d4db6f61b23849b28f988e4f15683cdb4ee/lua/lush/compiler.lua#L37
-- so just update the gui key, don't recreate the whole table
end
local compiled = lush.compile(parsed, {force_clean = true })
table.insert(compiled, 4, "let g:colors_name = 'melange'")
-- or you could just strip blend from the compiled list, just be careful to be order agnostic,
-- blend is last right now, but that's not for any reason, a new key may appear after it at some point
-- or existing keys may be reordered.
-- your current fix may fail if this happens too I think, you might get extra ','.
return table.concat(compiled, '\n')
end
I think the real fix is getting vim to support blending :taco:
I had been thinking about a compiler plugin system, more around lush => alacritty than lush => vim8. Something that accepts a parsed spec and outputs external themes. Not sure how practical that is though when each theme probably wants to connect its colors to external theme parts differently (Normal -> bg vs g[n] -> bg, etc). If that existed, that's where vim8 compat would be.
I would probably patch it before the make file since you already have a build system
Ehhh, yeah. Should have thought of that first.
I think I'll go with removing blend
from the compiled list for now.
I had been thinking about a compiler plugin system...
I don't think it's urgent to add that to Lush. I haven't had much trouble with the "build" system I wrote. It's not fancy, but it does the job. The only alternative I've considered so far is to use a templating system like mustache 🤔
when each theme probably wants to connect its colors to external theme parts differently...
Yep. I don't have a "standard" 16 colors theme, so I'm still figuring out that one myself.
Now has option pass exclude_keys
to compile
,
See https://github.com/rktjmp/lush.nvim/issues/30#issuecomment-826881085
I recently found out that the
blend
property isn't available in Vim8. See savq/melange#4.It was pretty easy to hack a solution, but this might need a better thought-out solution. Maybe add a compatibility flag to the
compile
function?