Compare commits
10 commits
0d24d49e1d
...
08fae6ffec
Author | SHA1 | Date | |
---|---|---|---|
08fae6ffec | |||
37f9ba22c7 | |||
43aef2aecd | |||
cacb641da2 | |||
ffb2cd6643 | |||
5af1ff2a64 | |||
b7fa034ed4 | |||
cc8b832a87 | |||
1c30abe726 | |||
c7fc83eaf6 |
6 changed files with 237 additions and 73 deletions
|
@ -1 +1,3 @@
|
|||
# 🖌️ Sumi-e -- A minimalist theme for Neovim
|
||||
# 🔴 Dieter - A minimalist theme for Neovim
|
||||
|
||||
Less but better.
|
||||
|
|
2
colors/dieter.lua
Normal file
2
colors/dieter.lua
Normal file
|
@ -0,0 +1,2 @@
|
|||
package.loaded["dieter"] = nil
|
||||
require("dieter")
|
|
@ -1,2 +0,0 @@
|
|||
package.loaded["sumi-e"] = nil
|
||||
require("sumi-e")
|
71
lua/dieter/hsl.lua
Normal file
71
lua/dieter/hsl.lua
Normal file
|
@ -0,0 +1,71 @@
|
|||
-- https://github.com/EmmanuelOga/columns/blob/master/utils/color.lua
|
||||
|
||||
local M = {}
|
||||
|
||||
--- Converts an HSL color value to RGB. Conversion formula
|
||||
--- adapted from http://en.wikipedia.org/wiki/HSL_color_space.
|
||||
--- Assumes h, s, and l are contained in the set [0, 1] and
|
||||
--- returns r, g, and b in the set [0, 255].
|
||||
---
|
||||
--- @param h number The hue
|
||||
--- @param s number The saturation
|
||||
--- @param l number The lightness
|
||||
--- @return number, number, number # The RGB representation
|
||||
function M.hslToRgb(h, s, l)
|
||||
--- @type number, number, number
|
||||
local r, g, b
|
||||
|
||||
if s == 0 then
|
||||
r, g, b = l, l, l -- achromatic
|
||||
else
|
||||
--- @param p number
|
||||
--- @param q number
|
||||
--- @param t number
|
||||
local function hue2rgb(p, q, t)
|
||||
if t < 0 then
|
||||
t = t + 1
|
||||
end
|
||||
if t > 1 then
|
||||
t = t - 1
|
||||
end
|
||||
if t < 1 / 6 then
|
||||
return p + (q - p) * 6 * t
|
||||
end
|
||||
if t < 1 / 2 then
|
||||
return q
|
||||
end
|
||||
if t < 2 / 3 then
|
||||
return p + (q - p) * (2 / 3 - t) * 6
|
||||
end
|
||||
return p
|
||||
end
|
||||
|
||||
--- @type number
|
||||
local q
|
||||
if l < 0.5 then
|
||||
q = l * (1 + s)
|
||||
else
|
||||
q = l + s - l * s
|
||||
end
|
||||
local p = 2 * l - q
|
||||
|
||||
r = hue2rgb(p, q, h + 1 / 3)
|
||||
g = hue2rgb(p, q, h)
|
||||
b = hue2rgb(p, q, h - 1 / 3)
|
||||
end
|
||||
|
||||
return r * 255, g * 255, b * 255
|
||||
end
|
||||
|
||||
--- Converts an HSL color value to RGB in Hex representation.
|
||||
--- @param h number The hue
|
||||
--- @param s number The saturation
|
||||
--- @param l number The lightness
|
||||
--- @return string # The hex representation
|
||||
function M.hslToHex(h, s, l)
|
||||
local r, g, b = M.hslToRgb(h / 360, s / 100, l / 100)
|
||||
|
||||
return string.format("#%02x%02x%02x", r, g, b)
|
||||
end
|
||||
|
||||
return M
|
161
lua/dieter/init.lua
Normal file
161
lua/dieter/init.lua
Normal file
|
@ -0,0 +1,161 @@
|
|||
local hsl = require("dieter.hsl").hslToHex
|
||||
|
||||
local colors = {
|
||||
light = {
|
||||
background = hsl(240, 100, 100),
|
||||
foreground = hsl(0, 0, 13),
|
||||
|
||||
string = hsl(96, 50, 33),
|
||||
comment = hsl(230, 66, 40),
|
||||
comment_error = hsl(2, 85, 40),
|
||||
|
||||
diagnostic_error = hsl(347, 80, 45),
|
||||
diagnostic_warning = hsl(30, 100, 50),
|
||||
diagnostic_info = hsl(145, 80, 30),
|
||||
diagnostic_hint = hsl(145, 80, 30),
|
||||
|
||||
popup_error_bg = hsl(0, 90, 99),
|
||||
popup_warning_bg = hsl(27, 90, 99),
|
||||
popup_info_bg = hsl(112, 90, 99),
|
||||
popup_hint_bg = hsl(112, 90, 99),
|
||||
|
||||
add = hsl(84, 50, 80),
|
||||
add_quarter = hsl(84, 80, 95),
|
||||
change = hsl(41, 80, 80),
|
||||
change_quarter = hsl(224, 100, 85),
|
||||
delete = hsl(350, 100, 40),
|
||||
delete_quarter = hsl(350, 100, 85),
|
||||
|
||||
dialog_bg = hsl(224, 5, 92),
|
||||
selection = hsl(270, 75, 92),
|
||||
highlight_subtle = hsl(0, 0, 94),
|
||||
highlight_intense = hsl(42, 100, 30),
|
||||
dimmed = hsl(0, 0, 80),
|
||||
dimmed_subtle = hsl(0, 0, 20),
|
||||
},
|
||||
|
||||
dark = {
|
||||
background = hsl(216, 28, 7),
|
||||
foreground = hsl(0, 0, 80),
|
||||
dimmed = hsl(0, 0, 25),
|
||||
dimmed_subtle = hsl(0, 0, 50),
|
||||
highlight_subtle = hsl(0, 0, 6),
|
||||
highlight_intense = hsl(58, 100, 60),
|
||||
|
||||
string = hsl(96, 50, 70),
|
||||
comment = hsl(220, 50, 60),
|
||||
comment_error = hsl(2, 85, 50),
|
||||
|
||||
diagnostic_error = hsl(353, 100, 45),
|
||||
diagnostic_warning = hsl(30, 100, 50),
|
||||
diagnostic_info = hsl(176, 80, 60),
|
||||
diagnostic_hint = hsl(176, 80, 60),
|
||||
|
||||
popup_error_bg = hsl(0, 95, 7),
|
||||
popup_warning_bg = hsl(27, 95, 7),
|
||||
popup_info_bg = hsl(112, 95, 7),
|
||||
popup_hint_bg = hsl(112, 95, 7),
|
||||
|
||||
add = hsl(100, 100, 12),
|
||||
add_quarter = hsl(84, 80, 15),
|
||||
change = hsl(41, 100, 15),
|
||||
change_quarter = hsl(224, 100, 15),
|
||||
delete = hsl(350, 100, 40),
|
||||
delete_quarter = hsl(350, 100, 15),
|
||||
|
||||
dialog_bg = hsl(216, 25, 20),
|
||||
|
||||
selection = hsl(270, 50, 33),
|
||||
},
|
||||
}
|
||||
|
||||
local c = colors[vim.o.background]
|
||||
|
||||
local theme = {
|
||||
Normal = { fg = c.foreground, bg = c.background },
|
||||
|
||||
Constant = { link = "NormalNC" },
|
||||
Delimiter = { link = "NormalNC" },
|
||||
Identifier = { link = "NormalNC" },
|
||||
Keyword = { fg = c.foreground, bold = true },
|
||||
Operator = { link = "NormalNC" },
|
||||
Special = { link = "NormalNC" },
|
||||
Type = { link = "NormalNC" },
|
||||
|
||||
String = { fg = c.string },
|
||||
|
||||
Comment = { fg = c.comment, italic = true, bold = true },
|
||||
CommentError = { fg = c.comment_error, italic = true, bold = true },
|
||||
["@comment.note"] = { link = "Comment" },
|
||||
["@comment.todo"] = { link = "CommentError" },
|
||||
["@comment.error"] = { link = "CommentError" },
|
||||
["@comment.warning"] = { link = "CommentError" },
|
||||
|
||||
DiffAdd = { fg = c.add, bg = c.add_quarter },
|
||||
GitSignsAdd = { fg = c.add, bg = c.background },
|
||||
GitSignsAddNr = { link = "DiffAdd" },
|
||||
DiffChange = { fg = c.change, bg = c.change_quarter },
|
||||
GitSignsChange = { fg = c.change, bg = c.background },
|
||||
GitSignsChangeNr = { link = "DiffChange" },
|
||||
DiffDelete = { fg = c.delete, bg = c.delete_quarter },
|
||||
GitSignsDelete = { fg = c.delete, bg = c.background },
|
||||
GitSignsDeleteNr = { link = "DiffDelete" },
|
||||
|
||||
-- Treesitter
|
||||
["@function"] = { link = "NormalNC" },
|
||||
["@special"] = { link = "NormalNC" },
|
||||
["@variable"] = { link = "NormalNC" },
|
||||
["@lsp.type.variable"] = { fg = c.dimmed_subtle },
|
||||
|
||||
-- UI Elements
|
||||
CursorLine = { bg = c.highlight_subtle },
|
||||
|
||||
DiagnosticError = { fg = c.diagnostic_error, italic = true },
|
||||
DiagnosticFloatingError = { fg = c.diagnostic_error, bg = c.popup_error_bg },
|
||||
DiagnosticFloatingWarn = { fg = c.diagnostic_warning, bg = c.popup_warning_bg },
|
||||
DiagnosticFloatingInfo = { fg = c.diagnostic_info, bg = c.popup_info_bg },
|
||||
DiagnosticFloatingHint = { fg = c.diagnostic_hint, bg = c.popup_hint_bg },
|
||||
DiagnosticUnderlineError = { fg = c.diagnostic_error, undercurl = true },
|
||||
DiagnosticUnderlineWarn = { fg = c.diagnostic_warn, undercurl = true },
|
||||
DiagnosticUnderlineInfo = { fg = c.diagnostic_info, undercurl = true },
|
||||
DiagnosticUnderlinehint = { fg = c.diagnostic_hint, undercurl = true },
|
||||
|
||||
DiagnosticSignError = { fg = c.diagnostic_error },
|
||||
DiagnosticSignHint = { fg = c.diagnostic_hint },
|
||||
DiagnosticSignInfo = { fg = c.diagnostic_info },
|
||||
DiagnosticSignWarn = { fg = c.diagnostic_warning },
|
||||
LineNr = { fg = c.dimmed, italic = true },
|
||||
IndentLine = { fg = c.background },
|
||||
IndentLineCurrent = { fg = c.dimmed },
|
||||
TreesitterContext = { reverse = true },
|
||||
TreesitterContextLineNumber = { bg = c.dimmed, reverse = true, italic = true },
|
||||
InclineNormal = { bg = c.background },
|
||||
InclineNormalNC = { bg = c.background },
|
||||
|
||||
WinSeparator = { bg = c.dialog_bg },
|
||||
NormalFloat = { bg = c.dialog_bg },
|
||||
Title = { fg = c.foreground, bold = true },
|
||||
|
||||
NoiceMini = { fg = c.foreground, italic = true },
|
||||
|
||||
TelescopeNormal = { fg = c.foreground, bg = c.background },
|
||||
TelescopeBorder = { bold = true },
|
||||
TelescopeSelection = { bg = c.selection },
|
||||
TelescopeResultsNormal = { fg = c.foreground, bold = true },
|
||||
TelescopeResultsComment = { fg = c.dimmed_subtle, italic = true, bold = false },
|
||||
|
||||
Visual = { bg = c.selection },
|
||||
LspReferenceText = { fg = c.highlight_intense, undercurl = true },
|
||||
}
|
||||
|
||||
vim.cmd("hi clear")
|
||||
|
||||
if vim.fn.exists("syntax_on") == 1 then
|
||||
vim.cmd("syntax reset")
|
||||
end
|
||||
|
||||
for group, hl in pairs(theme) do
|
||||
vim.api.nvim_set_hl(0, group, hl)
|
||||
end
|
||||
|
||||
vim.g.colors_name = "dieter"
|
|
@ -1,70 +0,0 @@
|
|||
local colors = {
|
||||
light = {
|
||||
foreground = "#202020",
|
||||
intense = "#000000",
|
||||
primary = "#ff0000",
|
||||
secondary = "#00ff00",
|
||||
diagnostic_error = "#ff0038",
|
||||
diagnostic_warning = "#ff7700",
|
||||
diagnostic_info = "#47eae0",
|
||||
diagnostic_hint = "#47eae0",
|
||||
diff_add = "#00ff77",
|
||||
diff_change = "#47eae0",
|
||||
diff_delete = "#ff0038",
|
||||
highlight_subtle = "#f0f0f0",
|
||||
dimmed = "#cccccc",
|
||||
},
|
||||
|
||||
dark = {
|
||||
foreground = "#b2b2b2",
|
||||
intense = "#e7e7e7",
|
||||
primary = "#00ff00",
|
||||
secondary = "#555555",
|
||||
diagnostic_error = "#ff0038",
|
||||
diagnostic_warning = "#ff7700",
|
||||
diagnostic_info = "#47eae0",
|
||||
diagnostic_hint = "#47eae0",
|
||||
diff_add = "#00ff77",
|
||||
diff_change = "#47eae0",
|
||||
diff_delete = "#ff0038",
|
||||
dimmed = "#666666",
|
||||
highlight_subtle = "#101010",
|
||||
},
|
||||
}
|
||||
|
||||
local c = colors[vim.o.background]
|
||||
|
||||
local theme = {
|
||||
Constant = { fg = c.foreground },
|
||||
Delimiter = { fg = c.foreground },
|
||||
Identifier = { fg = c.foreground },
|
||||
Normal = { fg = c.foreground },
|
||||
Keyword = { fg = c.foreground, bold = true },
|
||||
Operator = { fg = c.foreground },
|
||||
Special = { fg = c.foreground },
|
||||
String = { fg = c.foreground },
|
||||
Type = { fg = c.foreground },
|
||||
["@function"] = { fg = c.foreground },
|
||||
["@special"] = { fg = c.foreground },
|
||||
["@variable"] = { fg = c.foreground },
|
||||
|
||||
-- UI Elements
|
||||
CursorLine = { bg = c.highlight_subtle },
|
||||
LineNr = { fg = c.dimmed, italic = true },
|
||||
IndentLine = { fg = "#ffffff" },
|
||||
IndentLineCurrent = { fg = c.dimmed },
|
||||
TreesitterContext = { reverse = true },
|
||||
TreesitterContextLineNumber = { bg = c.dimmed, reverse = true, italic = true },
|
||||
}
|
||||
|
||||
vim.cmd("hi clear")
|
||||
|
||||
if vim.fn.exists("syntax_on") == 1 then
|
||||
vim.cmd("syntax reset")
|
||||
end
|
||||
|
||||
for group, hl in pairs(theme) do
|
||||
vim.api.nvim_set_hl(0, group, hl)
|
||||
end
|
||||
|
||||
vim.g.colors_name = "sumi-e"
|
Loading…
Reference in a new issue