add theme toggler (#245)
This commit is contained in:
parent
ea0a221230
commit
154ba7d419
5 changed files with 40 additions and 5 deletions
|
@ -1,6 +1,8 @@
|
|||
local M = {
|
||||
ui = {
|
||||
theme = "onedark",
|
||||
fav_themes = {"onedark", "gruvchad"}, -- for theme toggle
|
||||
theme_toggler = false,
|
||||
hidden_statusline = {
|
||||
-- these are filetypes, not pattern matched
|
||||
"NvimTree",
|
||||
|
@ -24,9 +26,9 @@ local M = {
|
|||
smartindent = true,
|
||||
mapleader = " ",
|
||||
autosave = false,
|
||||
enable_insertNav = true -- navigation within insertmode
|
||||
enable_insertNav = true -- navigation in insertmode
|
||||
},
|
||||
-- enable / disable plugins (true for disable)
|
||||
-- enable and disable plugins (true for disable)
|
||||
plugin_status = {
|
||||
-- UI
|
||||
nvim_bufferline = false,
|
||||
|
@ -116,7 +118,8 @@ local M = {
|
|||
misc = {
|
||||
esc_Termmode = "jk",
|
||||
copywhole_file = "<C-a>",
|
||||
toggle_linenr = "<leader>n"
|
||||
toggle_linenr = "<leader>n",
|
||||
theme_toggle = "<leader>x"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -160,4 +160,11 @@ if check_insertNav == true then
|
|||
map("i", m.prev_line, "<Down>", opt)
|
||||
end
|
||||
|
||||
local theme_toggler = require("chadrc").ui.theme_toggler
|
||||
|
||||
if theme_toggler == true then
|
||||
local m = user_map.misc.theme_toggle
|
||||
|
||||
map("n", m, ":lua require('utils').toggle_theme(require('chadrc').ui.fav_themes)<CR>", opt)
|
||||
end
|
||||
return M
|
||||
|
|
|
@ -110,6 +110,7 @@ M.theme_switcher = function(opts)
|
|||
end
|
||||
|
||||
if reload_theme(final_theme) then
|
||||
vim.g.current_nvchad_theme = final_theme
|
||||
if change then
|
||||
-- ask for confirmation to set as default theme
|
||||
local ans = string.lower(vim.fn.input("Set " .. new_theme .. " as default theme ? [y/N] ")) == "y"
|
||||
|
@ -119,8 +120,11 @@ M.theme_switcher = function(opts)
|
|||
else
|
||||
-- will be used in restoring nvchad theme var
|
||||
final_theme = current_theme
|
||||
vim.g.current_nvchad_theme = final_theme
|
||||
end
|
||||
end
|
||||
end
|
||||
-- open a buffer and close it to reload the statusline
|
||||
vim.cmd("new|bwipeout")
|
||||
else
|
||||
final_theme = current_theme
|
||||
end
|
||||
|
@ -130,7 +134,7 @@ M.theme_switcher = function(opts)
|
|||
-- launch the telescope picker
|
||||
picker:find()
|
||||
else
|
||||
print("No themes found in " .. themes_folder)
|
||||
print("No themes found in " .. vim.fn.stdpath("config") .. "/lua/themes")
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
local chad_theme = require("chadrc").ui.theme
|
||||
|
||||
vim.g.nvchad_theme = chad_theme
|
||||
-- this stores the current set theme, if later theme switcher is used but not set to default
|
||||
vim.g.current_nvchad_theme = chad_theme
|
||||
|
||||
local present, base16 = pcall(require, "base16")
|
||||
|
||||
if present then
|
||||
|
|
|
@ -184,4 +184,22 @@ M.reload_theme = function(theme_name)
|
|||
return true
|
||||
end
|
||||
|
||||
-- toggle between 2 themes
|
||||
-- argument should be a table with 2 theme names
|
||||
M.toggle_theme = function(themes)
|
||||
local current_theme = vim.g.current_nvchad_theme or vim.g.nvchad_theme
|
||||
for _, name in ipairs(themes) do
|
||||
if name ~= current_theme then
|
||||
if require("utils").reload_theme(name) then
|
||||
-- open a buffer and close it to reload the statusline
|
||||
vim.cmd("new|bwipeout")
|
||||
vim.g.current_nvchad_theme = name
|
||||
if M.change_theme(vim.g.nvchad_theme, name) then
|
||||
vim.g.nvchad_theme = name
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
||||
|
|
Loading…
Reference in a new issue