aboutsummaryrefslogtreecommitdiff
path: root/.config/nvim/lua/colorschemes.lua
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim/lua/colorschemes.lua')
-rw-r--r--.config/nvim/lua/colorschemes.lua83
1 files changed, 83 insertions, 0 deletions
diff --git a/.config/nvim/lua/colorschemes.lua b/.config/nvim/lua/colorschemes.lua
new file mode 100644
index 0000000..9618b4d
--- /dev/null
+++ b/.config/nvim/lua/colorschemes.lua
@@ -0,0 +1,83 @@
+--- This module will load a random colorscheme on nvim startup process.
+
+local utils = require("utils")
+
+local M = {}
+
+-- Colorscheme to its directory name mapping, because colorscheme repo name is not necessarily
+-- the same as the colorscheme name itself.
+M.colorscheme_conf = {
+ onedark = function()
+ vim.cmd([[colorscheme onedark]])
+ end,
+ edge = function()
+ vim.g.edge_enable_italic = 1
+ vim.g.edge_better_performance = 1
+
+ vim.cmd([[colorscheme edge]])
+ end,
+ sonokai = function()
+ vim.g.sonokai_enable_italic = 1
+ vim.g.sonokai_better_performance = 1
+
+ vim.cmd([[colorscheme sonokai]])
+ end,
+ gruvbox_material = function()
+ -- foreground option can be material, mix, or original
+ vim.g.gruvbox_material_foreground = "material"
+ --background option can be hard, medium, soft
+ vim.g.gruvbox_material_background = "soft"
+ vim.g.gruvbox_material_enable_italic = 1
+ vim.g.gruvbox_material_better_performance = 1
+
+ vim.cmd([[colorscheme gruvbox-material]])
+ end,
+ everforest = function()
+ vim.g.everforest_enable_italic = 1
+ vim.g.everforest_better_performance = 1
+
+ vim.cmd([[colorscheme everforest]])
+ end,
+ nightfox = function()
+ vim.cmd([[colorscheme nordfox]])
+ end,
+ catppuccin = function()
+ -- available option: latte, frappe, macchiato, mocha
+ vim.g.catppuccin_flavour = "frappe"
+ require("catppuccin").setup()
+
+ vim.cmd([[colorscheme catppuccin]])
+ end,
+ onedarkpro = function()
+ -- set colorscheme after options
+ vim.cmd('colorscheme onedark_vivid')
+ end,
+ material = function()
+ vim.g.material_style = "oceanic"
+ vim.cmd('colorscheme material')
+ end,
+}
+
+--- Use a random colorscheme from the pre-defined list of colorschemes.
+M.rand_colorscheme = function()
+ local colorscheme = utils.rand_element(vim.tbl_keys(M.colorscheme_conf))
+
+ if not vim.tbl_contains(vim.tbl_keys(M.colorscheme_conf), colorscheme) then
+ local msg = "Invalid colorscheme: " .. colorscheme
+ vim.notify(msg, vim.log.levels.ERROR, { title = "nvim-config" })
+
+ return
+ end
+
+ -- Load the colorscheme and its settings
+ M.colorscheme_conf[colorscheme]()
+
+ if vim.g.logging_level == "debug" then
+ local msg = "Colorscheme: " .. colorscheme
+
+ vim.notify(msg, vim.log.levels.DEBUG, { title = "nvim-config" })
+ end
+end
+
+-- Load a random colorscheme
+M.rand_colorscheme()