diff --git a/colors/sumi-e-dark.lua b/colors/sumi-e-dark.lua new file mode 100644 index 0000000..a934ee7 --- /dev/null +++ b/colors/sumi-e-dark.lua @@ -0,0 +1,2 @@ +vim.o.background = "dark" +require("sumi-e").colorscheme() diff --git a/colors/sumi-e-light.lua b/colors/sumi-e-light.lua new file mode 100644 index 0000000..e800bf3 --- /dev/null +++ b/colors/sumi-e-light.lua @@ -0,0 +1,2 @@ +vim.o.background = "light" +require("sumi-e").colorscheme() diff --git a/colors/sumi-e.lua b/colors/sumi-e.lua new file mode 100644 index 0000000..87a2c9e --- /dev/null +++ b/colors/sumi-e.lua @@ -0,0 +1 @@ +require("sumi-e").colorscheme() diff --git a/lua/sumi-e/colors.lua b/lua/sumi-e/colors.lua new file mode 100644 index 0000000..4c967cc --- /dev/null +++ b/lua/sumi-e/colors.lua @@ -0,0 +1,27 @@ +local colors = { + white = "#ffffff", + black = "#000000", + gray500 = "#7f7f7f", +} + +function _colors_dark() + colors.bg = "#11171d" + colors.fg = "#e3e0cd" + colors.string = colors.gray500 + colors.comment = colors.gray500 +end + +function _colors_light() + colors.bg = "#ffffff" + colors.fg = "#000000" +end + +function colors.generate() + if vim.o.background == "dark" then + _colors_dark() + else + _colors_light() + end +end + +return colors diff --git a/lua/sumi-e/config.lua b/lua/sumi-e/config.lua new file mode 100644 index 0000000..648abc7 --- /dev/null +++ b/lua/sumi-e/config.lua @@ -0,0 +1,9 @@ +local config = { + defaults = { + overrides = {}, + }, +} + +setmetatable(config, { __index = config.defaults }) + +return config diff --git a/lua/sumi-e/init.lua b/lua/sumi-e/init.lua new file mode 100644 index 0000000..7cfaeb8 --- /dev/null +++ b/lua/sumi-e/init.lua @@ -0,0 +1,51 @@ +local colors = require("sumi-e.colors") +local config = require("sumi-e.config") +local sumi = {} + +local function set_groups() + local groups = { + Normal = { fg = colors.fg, bg = colors.bg }, + NormalFloat = { bg = colors.bg }, + String = { fg = colors.string, italic = true }, + Comment = { fg = colors.comment, bold = true, italic = true }, + } + + groups = + vim.tbl_extend("force", groups, type(config.overrides) == "function" and config.overrides() or config.overrides) + + for group, parameters in pairs(groups) do + vim.api.nvim_set_hl(0, group, parameters) + end +end + +--- Apply user settings. +---@param values table +function sumi.setup(values) + setmetatable(config, { __index = vim.tbl_extend("force", config.defaults, values) }) +end + +--- Set the colorscheme. +function sumi.colorscheme() + if vim.version().minor < 8 then + vim.notify( + "Neovim 0.8+ is required for sumi-e colorscheme", + vim.log.levels.ERROR, + { title = "Sumi-e colorscheme" } + ) + return + end + + vim.api.nvim_command("hi clear") + if vim.fn.exists("syntax_on") then + vim.api.nvim_command("syntax reset") + end + + vim.g.VM_theme_set_by_colorscheme = true -- Required for Visual Multi + vim.o.termguicolors = true + vim.g.colors_name = "sumi-e" + + colors.generate() + set_groups() +end + +return sumi