-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Some bug fixes from my fork #9
Merged
Merged
Changes from all commits
Commits
Show all changes
4 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -34,19 +34,13 @@ function util.blend(fg, bg, alpha) | |
return string.format("#%02X%02X%02X", blendChannel(1), blendChannel(2), blendChannel(3)) | ||
end | ||
|
||
function util.darken(hex, amount, bg) | ||
return util.blend(hex, bg or util.bg, math.abs(amount)) | ||
end | ||
function util.lighten(hex, amount, fg) | ||
return util.blend(hex, fg or util.fg, math.abs(amount)) | ||
end | ||
function util.darken(hex, amount, bg) return util.blend(hex, bg or util.bg, math.abs(amount)) end | ||
function util.lighten(hex, amount, fg) return util.blend(hex, fg or util.fg, math.abs(amount)) end | ||
|
||
function util.brighten(color, percentage) | ||
local hsl = hsluv.hex_to_hsluv(color) | ||
local larpSpace = 100 - hsl[3] | ||
if percentage < 0 then | ||
larpSpace = hsl[3] | ||
end | ||
if percentage < 0 then larpSpace = hsl[3] end | ||
hsl[3] = hsl[3] + larpSpace * percentage | ||
return hsluv.hsluv_to_hex(hsl) | ||
end | ||
|
@@ -55,9 +49,7 @@ function util.invertColor(color) | |
if color ~= "NONE" then | ||
local hsl = hsluv.hex_to_hsluv(color) | ||
hsl[3] = 100 - hsl[3] | ||
if hsl[3] < 40 then | ||
hsl[3] = hsl[3] + (100 - hsl[3]) * 0.3 | ||
end | ||
if hsl[3] < 40 then hsl[3] = hsl[3] + (100 - hsl[3]) * 0.3 end | ||
return hsluv.hsluv_to_hex(hsl) | ||
end | ||
return color | ||
|
@@ -73,26 +65,16 @@ function util.randomColor(color) | |
end | ||
|
||
function util.getColor(color) | ||
if vim.o.background == "dark" then | ||
return color | ||
end | ||
if not util.colorCache[color] then | ||
util.colorCache[color] = util.invertColor(color) | ||
end | ||
if vim.o.background == "dark" then return color end | ||
if not util.colorCache[color] then util.colorCache[color] = util.invertColor(color) end | ||
return util.colorCache[color] | ||
end | ||
|
||
-- local ns = vim.api.nvim_create_namespace("onedark") | ||
function util.highlight(group, color) | ||
if color.fg then | ||
util.colorsUsed[color.fg] = true | ||
end | ||
if color.bg then | ||
util.colorsUsed[color.bg] = true | ||
end | ||
if color.sp then | ||
util.colorsUsed[color.sp] = true | ||
end | ||
if color.fg then util.colorsUsed[color.fg] = true end | ||
if color.bg then util.colorsUsed[color.bg] = true end | ||
if color.sp then util.colorsUsed[color.sp] = true end | ||
|
||
local style = color.style and "gui=" .. color.style or "gui=NONE" | ||
local fg = color.fg and "guifg=" .. util.getColor(color.fg) or "guifg=NONE" | ||
|
@@ -121,9 +103,7 @@ function util.debug(colors) | |
if type(color) == "table" then | ||
util.debug(color) | ||
else | ||
if util.colorsUsed[color] == nil then | ||
print("not used: " .. name .. " : " .. color) | ||
end | ||
if util.colorsUsed[color] == nil then print("not used: " .. name .. " : " .. color) end | ||
end | ||
end | ||
end | ||
|
@@ -148,7 +128,8 @@ function util.autocmds(config) | |
if sidebar == "terminal" then | ||
vim.cmd([[ autocmd TermOpen * setlocal winhighlight=Normal:NormalSB,SignColumn:SignColumnSB]]) | ||
else | ||
vim.cmd([[ autocmd FileType ]] .. sidebar .. [[ setlocal winhighlight=Normal:NormalSB,SignColumn:SignColumnSB]]) | ||
vim.cmd([[ autocmd FileType ]] .. sidebar .. | ||
[[ setlocal winhighlight=Normal:NormalSB,SignColumn:SignColumnSB]]) | ||
end | ||
end | ||
vim.cmd([[augroup end]]) | ||
|
@@ -161,16 +142,10 @@ end | |
---@param str string template string | ||
---@param table table key value pairs to replace in the string | ||
function util.template(str, table) | ||
return (str:gsub("($%b{})", function(w) | ||
return table[w:sub(3, -2)] or w | ||
end)) | ||
return (str:gsub("($%b{})", function(w) return table[w:sub(3, -2)] or w end)) | ||
end | ||
|
||
function util.syntax(syntax) | ||
for group, colors in pairs(syntax) do | ||
util.highlight(group, colors) | ||
end | ||
end | ||
function util.syntax(syntax) for group, colors in pairs(syntax) do util.highlight(group, colors) end end | ||
|
||
---@param colors ColorScheme | ||
function util.terminal(colors) | ||
|
@@ -209,53 +184,53 @@ function util.terminal(colors) | |
end | ||
|
||
function util.light_colors(colors) | ||
if type(colors) == "string" then | ||
return util.getColor(colors) | ||
end | ||
if type(colors) == "string" then return util.getColor(colors) end | ||
local ret = {} | ||
for key, value in pairs(colors) do | ||
ret[key] = util.light_colors(value) | ||
end | ||
for key, value in pairs(colors) do ret[key] = util.light_colors(value) end | ||
return ret | ||
end | ||
|
||
---@param theme Theme | ||
function util.load(theme) | ||
-- only needed to clear when not the default colorscheme | ||
if vim.g.colors_name then | ||
vim.cmd("hi clear") | ||
end | ||
-- if vim.fn.exists("syntax_on") then | ||
-- vim.cmd("syntax reset") | ||
-- end | ||
vim.cmd("hi clear") | ||
if vim.fn.exists("syntax_on") then vim.cmd("syntax reset") end | ||
|
||
vim.o.termguicolors = true | ||
vim.g.colors_name = "onedark" | ||
-- vim.api.nvim__set_hl_ns(ns) | ||
-- load base theme | ||
util.syntax(theme.base) | ||
util.syntax(theme.plugins) | ||
util.terminal(theme.colors) | ||
util.autocmds(theme.config) | ||
|
||
-- load syntax for plugins and terminal async | ||
vim.defer_fn(function() | ||
util.terminal(theme.colors) | ||
util.syntax(theme.plugins) | ||
util.autocmds(theme.config) | ||
end, 0) | ||
Comment on lines
+204
to
+209
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is awesome, I believe this is the fix for the bug! Do you know why this works? I assume it prevents a race condition with overriding the |
||
end | ||
|
||
---@param config Config | ||
---@param colors ColorScheme | ||
---@param config Config | ||
function util.color_overrides(colors, config) | ||
if type(config.colors) == "table" then | ||
for key, value in pairs(config.colors) do | ||
if not colors[key] then | ||
error("Color " .. key .. " does not exist") | ||
end | ||
if string.sub(value, 1, 1) == "#" then | ||
-- hex override | ||
colors[key] = value | ||
if not colors[key] then error("Color " .. key .. " does not exist") end | ||
|
||
-- Patch: https://github.com/ful1e5/onedark.nvim/issues/6 | ||
if type(colors[key]) == "table" then | ||
util.color_overrides(colors[key], { colors = value }) | ||
else | ||
-- another group | ||
if not colors[value] then | ||
error("Color " .. value .. " does not exist") | ||
if value:lower() == "none" then | ||
-- set to none | ||
colors[key] = "NONE" | ||
elseif string.sub(value, 1, 1) == "#" then | ||
-- hex override | ||
colors[key] = value | ||
else | ||
-- another group | ||
if not colors[value] then error("Color " .. value .. " does not exist") end | ||
colors[key] = colors[value] | ||
end | ||
colors[key] = colors[value] | ||
end | ||
end | ||
end | ||
|
@@ -268,17 +243,13 @@ function util.light(brightness) | |
if type(hl[key]) == "number" then | ||
local hex = string.format("#%06x", hl[key]) | ||
local color = util.invertColor(hex) | ||
if brightness then | ||
color = util.brighten(hex, brightness) | ||
end | ||
if brightness then color = util.brighten(hex, brightness) end | ||
table.insert(def, "gui" .. def_key .. "=" .. color) | ||
end | ||
end | ||
if hl_name ~= "" and #def > 0 then | ||
for _, style in pairs({ "bold", "italic", "underline", "undercurl", "reverse" }) do | ||
if hl[style] then | ||
table.insert(def, "gui=" .. style) | ||
end | ||
if hl[style] then table.insert(def, "gui=" .. style) end | ||
end | ||
|
||
vim.cmd("highlight! " .. hl_name .. " " .. table.concat(def, " ")) | ||
|
@@ -300,9 +271,7 @@ function util.random() | |
end | ||
if hl_name ~= "" and #def > 0 then | ||
for _, style in pairs({ "bold", "italic", "underline", "undercurl", "reverse" }) do | ||
if hl[style] then | ||
table.insert(def, "gui=" .. style) | ||
end | ||
if hl[style] then table.insert(def, "gui=" .. style) end | ||
end | ||
|
||
vim.cmd("highlight! " .. hl_name .. " " .. table.concat(def, " ")) | ||
|
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Was this the code that you changed in order to fix the
inactiveStatusLine
still showing a different background?I just tried this one my local and I'm still seeing the issue. I feel like it's somewhere else in my package. If I use
master
of your repository it works fine for me but as soon as I switch to mine the status line doesn't hide properly 😭