fix(nvim): fond reellement transparent (onedark + lualine)
onedark.transparent couvre tous les groupes du theme, pas seulement Normal ; les highlights Lualine sont nettoyes apres ColorScheme et les ~ de fin de buffer deviennent des espaces.
This commit is contained in:
@@ -3,15 +3,50 @@
|
||||
-- =======================================================
|
||||
|
||||
-- 1. TRANSPARENCE DU FOND
|
||||
-- Rendre le fond du thème transparent en supprimant la couleur de fond (guibg=NONE)
|
||||
vim.cmd("highlight Normal guibg=NONE")
|
||||
vim.cmd("highlight NormalFloat guibg=NONE")
|
||||
vim.cmd("highlight FloatBorder guibg=NONE")
|
||||
-- onedark est configuré avec transparent = true (plugins/ui.nix), ce qui enlève
|
||||
-- déjà le fond de Normal/EndOfBuffer/SignColumn/NeoTree. On force quand même
|
||||
-- les groupes restants, et surtout TOUS les groupes Lualine : la barre de
|
||||
-- statut est une bande grise opaque tant que ses sections gardent un bg.
|
||||
local transparent_groups = {
|
||||
"Normal",
|
||||
"NormalFloat",
|
||||
"FloatBorder",
|
||||
"EndOfBuffer",
|
||||
"StatusLine",
|
||||
"StatusLineNC",
|
||||
}
|
||||
|
||||
-- Rendre la ligne de statut (Lualine) transparente si elle l'était par défaut
|
||||
vim.cmd("highlight Lualine_a_normal guibg=NONE")
|
||||
vim.cmd("highlight Lualine_b_normal guibg=NONE")
|
||||
vim.cmd("highlight Lualine_c_normal guibg=NONE")
|
||||
local function set_transparent_hl()
|
||||
for _, name in ipairs(transparent_groups) do
|
||||
local ok, hl = pcall(vim.api.nvim_get_hl, 0, { name = name })
|
||||
if ok then
|
||||
hl.bg = nil
|
||||
hl.ctermbg = nil
|
||||
vim.api.nvim_set_hl(0, name, hl)
|
||||
end
|
||||
end
|
||||
|
||||
for _, name in ipairs(vim.fn.getcompletion("Lualine", "highlight")) do
|
||||
local ok, hl = pcall(vim.api.nvim_get_hl, 0, { name = name })
|
||||
if ok then
|
||||
hl.bg = nil
|
||||
hl.ctermbg = nil
|
||||
vim.api.nvim_set_hl(0, name, hl)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Avec un fond transparent, les ~ de fin de buffer (fg = bg0 chez onedark)
|
||||
-- deviendraient visibles sur le papier peint : on les remplace par des espaces.
|
||||
vim.opt.fillchars:append({ eob = " " })
|
||||
|
||||
vim.api.nvim_create_autocmd({ "VimEnter", "ColorScheme" }, {
|
||||
group = vim.api.nvim_create_augroup("TransparentUI", { clear = true }),
|
||||
callback = function()
|
||||
-- différé : Lualine (re)pose ses highlights au chargement et au ColorScheme
|
||||
vim.schedule(set_transparent_hl)
|
||||
end,
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
{pkgs, ...}: {
|
||||
programs.nixvim = {
|
||||
colorschemes.onedark.enable = true;
|
||||
# transparent = true retire le fond opaque de TOUS les groupes du thème
|
||||
# (Normal, EndOfBuffer, SignColumn, NeoTreeNormal...), pas seulement Normal.
|
||||
# Sans ça, la zone vide sous la fin du buffer garde le bg0 gris de onedark.
|
||||
colorschemes.onedark = {
|
||||
enable = true;
|
||||
settings.transparent = true;
|
||||
};
|
||||
|
||||
plugins = {
|
||||
lualine = {
|
||||
|
||||
Reference in New Issue
Block a user