local M = {} -- (~/.local/share/nvim/last_theme.txt) local theme_cache_path = vim.fn.stdpath("data") .. "/last_theme.txt" M.is_programmatic_change = false function M.load_theme() local theme = "" local f = io.open(theme_cache_path, "r") if f then theme = f:read("*all"):gsub("%s+", "") f:close() end if theme == "" then theme = nixCats.extra("colorscheme") end M.is_programmatic_change = true local status, _ = pcall(vim.cmd.colorscheme, theme) -- just to be safe if not status then vim.cmd.colorscheme("habamax") end end vim.api.nvim_create_autocmd("ColorScheme", { callback = function(args) -- If the change was programmatic (like at startup), don't overwrite the file if M.is_programmatic_change then M.is_programmatic_change = false -- Reset for the next manual change return end -- Save the new theme name to the file local theme_name = args.match local f = io.open(theme_cache_path, "w") if f then f:write(theme_name) f:close() end end, }) M.load_theme() return M