From a460eeeb81d94e99b37869d09ebcc02dd5123a3d Mon Sep 17 00:00:00 2001 From: Toby Vincent Date: Tue, 16 Aug 2022 21:47:23 -0500 Subject: feat(nvim): improve colorscheme --- nvim/.config/nvim/lua/tobyvin/init.lua | 5 --- nvim/.config/nvim/lua/tobyvin/plugins.lua | 16 +++++++-- nvim/.config/nvim/lua/tobyvin/plugins/dap.lua | 38 ++++++++++++++++++-- .../nvim/lua/tobyvin/plugins/gruvbox-flat.lua | 41 +--------------------- nvim/.config/nvim/lua/tobyvin/plugins/lualine.lua | 41 ++++++++++++++++++++++ .../nvim/lua/tobyvin/plugins/transparent.lua | 30 ++++++++++++++++ 6 files changed, 121 insertions(+), 50 deletions(-) create mode 100644 nvim/.config/nvim/lua/tobyvin/plugins/transparent.lua (limited to 'nvim') diff --git a/nvim/.config/nvim/lua/tobyvin/init.lua b/nvim/.config/nvim/lua/tobyvin/init.lua index 4eb863c..07900a6 100644 --- a/nvim/.config/nvim/lua/tobyvin/init.lua +++ b/nvim/.config/nvim/lua/tobyvin/init.lua @@ -1,11 +1,6 @@ local M = {} M.setup = function() - -- load = function(module) - -- package.loaded[module] = nil - -- return require(module) - -- end - require("tobyvin.options").setup() require("tobyvin.autocmds").setup() require("tobyvin.keymaps").setup() diff --git a/nvim/.config/nvim/lua/tobyvin/plugins.lua b/nvim/.config/nvim/lua/tobyvin/plugins.lua index a8f6cd8..2540d4e 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins.lua @@ -38,12 +38,18 @@ M.plugins = function(use) -- TODO: implement custom hls using base-16-gruvbox and remove this use({ "eddyekofo94/gruvbox-flat.nvim", - requires = { "xiyaowong/nvim-transparent" }, config = function() require("tobyvin.plugins.gruvbox-flat").setup() end, }) + use({ + "xiyaowong/nvim-transparent", + config = function() + require("tobyvin.plugins.transparent").setup() + end, + }) + use({ "rmagatti/auto-session", config = function() @@ -415,7 +421,13 @@ M.plugins = function(use) use("nacro90/numb.nvim") use("ThePrimeagen/harpoon") use("b0o/SchemaStore.nvim") - use("ggandor/lightspeed.nvim") + + use({ + "ggandor/leap.nvim", + config = function() + require("leap").set_default_keymaps() + end, + }) use({ "ur4ltz/surround.nvim", diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/dap.lua b/nvim/.config/nvim/lua/tobyvin/plugins/dap.lua index 87a3f37..b38f074 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins/dap.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins/dap.lua @@ -4,6 +4,33 @@ local M = { dapui_tab = nil, } +M.highlights = function() + local ns_id = 0 + -- nvim-dap + vim.api.nvim_set_hl(ns_id, "DapBreakpoint", { link = "debugBreakpoint" }) + vim.api.nvim_set_hl(ns_id, "DapStopped", { link = "debugPC" }) + + -- nvim-dap-ui + vim.api.nvim_set_hl(ns_id, "DapUIVariable", { link = "TSVariable" }) + vim.api.nvim_set_hl(ns_id, "DapUIScope", { link = "TSNamespace" }) + vim.api.nvim_set_hl(ns_id, "DapUIType", { link = "Type" }) + vim.api.nvim_set_hl(ns_id, "DapUIModifiedValue", { link = "Keyword" }) + vim.api.nvim_set_hl(ns_id, "DapUIDecoration", { link = "PreProc" }) + vim.api.nvim_set_hl(ns_id, "DapUIThread", { link = "String" }) + vim.api.nvim_set_hl(ns_id, "DapUIStoppedThread", { link = "Special" }) + vim.api.nvim_set_hl(ns_id, "DapUIFrameName", { link = "Normal" }) + vim.api.nvim_set_hl(ns_id, "DapUISource", { link = "TSKeyword" }) + vim.api.nvim_set_hl(ns_id, "DapUILineNumber", { link = "TSOperator" }) + vim.api.nvim_set_hl(ns_id, "DapUIFloatBorder", { link = "FloatBorder" }) + vim.api.nvim_set_hl(ns_id, "DapUIWatchesEmpty", { link = "LspDiagnosticsError" }) + vim.api.nvim_set_hl(ns_id, "DapUIWatchesValue", { link = "String" }) + vim.api.nvim_set_hl(ns_id, "DapUIWatchesError", { link = "LspDiagnosticsError" }) + vim.api.nvim_set_hl(ns_id, "DapUIBreakpointsPath", { link = "Keyword" }) + vim.api.nvim_set_hl(ns_id, "DapUIBreakpointsInfo", { link = "LspDiagnosticsInfo" }) + vim.api.nvim_set_hl(ns_id, "DapUIBreakpointsCurrentLine", { link = "DapStopped" }) + vim.api.nvim_set_hl(ns_id, "DapUIBreakpointsLine", { link = "DapUILineNumber" }) +end + M.set_custom_breakpoint = function() vim.ui.input({ prompt = "Condition: " }, function(condition) vim.ui.input({ prompt = "Hit condition: " }, function(hit_condition) @@ -73,10 +100,11 @@ M.progress_start = function(session, body) hide_from_history = false, }) + ---@diagnostic disable-next-line: redundant-value notif_data.notification.spinner = 1, utils.update_spinner("dap", body.progressId) end -M.progress_update = function(session, body) +M.progress_update = function(_, body) local notif_data = utils.get_notif_data("dap", body.progressId) notif_data.notification = vim.notify(utils.format_message(body.message, body.percentage), "info", { replace = notif_data.notification, @@ -84,7 +112,7 @@ M.progress_update = function(session, body) }) end -M.progress_end = function(session, body) +M.progress_end = function(_, body) local notif_data = utils.client_notifs["dap"][body.progressId] notif_data.notification = vim.notify(body.message and utils.format_message(body.message) or "Complete", "info", { icon = utils.signs.complete.text, @@ -183,7 +211,7 @@ M.setup = function() require("dap-go").setup() -- Virtual text - require("nvim-dap-virtual-text").setup() + require("nvim-dap-virtual-text").setup({}) -- DAPUI require("dapui").setup() @@ -230,6 +258,10 @@ M.setup = function() nmap("e", M.eval, { desc = "Eval" }) + vim.api.nvim_create_autocmd("ColorScheme", { + callback = M.highlights, + }) + -- Signs vim.fn.sign_define("DapBreakpoint", utils.debug_signs.breakpoint) vim.fn.sign_define("DapBreakpointCondition", utils.debug_signs.condition) diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/gruvbox-flat.lua b/nvim/.config/nvim/lua/tobyvin/plugins/gruvbox-flat.lua index 9ba6f32..6fa37b7 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins/gruvbox-flat.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins/gruvbox-flat.lua @@ -1,56 +1,17 @@ ----@diagnostic disable: undefined-field local M = {} M.setup = function() vim.opt.background = "dark" vim.g.gruvbox_flat_style = "hard" + vim.g.gruvbox_transparent = true - local colors = require("gruvbox.colors").setup({}) local theme = require("gruvbox.theme").setup({}) - vim.g.gruvbox_colors = { bg_statusline = "none" } vim.g.gruvbox_theme = { debugBreakpoint = { bg = theme.base.SignColumn.bg, fg = "error" }, } vim.cmd([[colorscheme gruvbox-flat]]) - - local ns_id = vim.api.nvim_create_namespace("gruvbox") - - -- TODO: figure out why these highlights are not being used - -- Transparent - vim.api.nvim_set_hl(ns_id, "NormalFloat", { fg = colors.fg, bg = colors.bg_float, sp = "none" }) - vim.api.nvim_set_hl(ns_id, "SignColumn", { fg = colors.fg_gutter, bg = colors.bg, sp = "none" }) - vim.api.nvim_set_hl(ns_id, "Normal", { fg = colors.fg, bg = colors.bg, sp = "none" }) - vim.api.nvim_set_hl(ns_id, "NormalNC", { fg = colors.fg, bg = colors.bg, sp = "none" }) - - -- nvim-dap - vim.api.nvim_set_hl(ns_id, "DapBreakpoint", { link = "debugBreakpoint" }) - vim.api.nvim_set_hl(ns_id, "DapStopped", { link = "debugPC" }) - - -- nvim-dap-ui - vim.api.nvim_set_hl(ns_id, "DapUIVariable", { link = "TSVariable" }) - vim.api.nvim_set_hl(ns_id, "DapUIScope", { link = "TSNamespace" }) - vim.api.nvim_set_hl(ns_id, "DapUIType", { link = "Type" }) - vim.api.nvim_set_hl(ns_id, "DapUIModifiedValue", { link = "Keyword" }) - vim.api.nvim_set_hl(ns_id, "DapUIDecoration", { link = "PreProc" }) - vim.api.nvim_set_hl(ns_id, "DapUIThread", { link = "String" }) - vim.api.nvim_set_hl(ns_id, "DapUIStoppedThread", { link = "Special" }) - vim.api.nvim_set_hl(ns_id, "DapUIFrameName", { link = "Normal" }) - vim.api.nvim_set_hl(ns_id, "DapUISource", { link = "TSKeyword" }) - vim.api.nvim_set_hl(ns_id, "DapUILineNumber", { link = "TSOperator" }) - vim.api.nvim_set_hl(ns_id, "DapUIFloatBorder", { link = "FloatBorder" }) - vim.api.nvim_set_hl(ns_id, "DapUIWatchesEmpty", { link = "LspDiagnosticsError" }) - vim.api.nvim_set_hl(ns_id, "DapUIWatchesValue", { link = "String" }) - vim.api.nvim_set_hl(ns_id, "DapUIWatchesError", { link = "LspDiagnosticsError" }) - vim.api.nvim_set_hl(ns_id, "DapUIBreakpointsPath", { link = "Keyword" }) - vim.api.nvim_set_hl(ns_id, "DapUIBreakpointsInfo", { link = "LspDiagnosticsInfo" }) - vim.api.nvim_set_hl(ns_id, "DapUIBreakpointsCurrentLine", { link = "DapStopped" }) - vim.api.nvim_set_hl(ns_id, "DapUIBreakpointsLine", { link = "DapUILineNumber" }) - - require("transparent").setup({ - enable = true, - }) end return M diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/lualine.lua b/nvim/.config/nvim/lua/tobyvin/plugins/lualine.lua index 41022b0..9b21349 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins/lualine.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins/lualine.lua @@ -16,6 +16,46 @@ M.diff_source = function() end end +M.theme = function() + local config = require("gruvbox.config") + local colors = require("gruvbox.colors").setup(config) + + local theme = { + normal = { + a = { bg = colors.info, fg = colors.black }, + b = { bg = colors.bg_highlight, fg = colors.info }, + c = { bg = "none", fg = colors.fg_sidebar, gui = "none" }, + }, + + insert = { + a = { bg = colors.gitSigns.add, fg = colors.black }, + b = { bg = colors.bg_highlight, fg = colors.gitSigns.add }, + }, + command = { + a = { bg = colors.warning, fg = colors.black }, + b = { bg = colors.bg_highlight, fg = colors.warning }, + }, + + visual = { + a = { bg = colors.warning, fg = colors.black }, + b = { bg = colors.bg_highlight, fg = colors.warning }, + }, + + replace = { + a = { bg = colors.error, fg = colors.black }, + b = { bg = colors.bg_highlight, fg = colors.error }, + }, + + inactive = { + a = { bg = "none", fg = colors.info, gui = "none" }, + b = { bg = "none", fg = colors.comment, gui = "none" }, + c = { bg = "none", fg = colors.comment, gui = "none" }, + }, + } + + return theme +end + M.setup = function() local status_ok, lualine = pcall(require, "lualine") if not status_ok then @@ -101,6 +141,7 @@ M.setup = function() lualine.setup({ options = { + theme = M.theme(), refresh = { statusline = 200, }, diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/transparent.lua b/nvim/.config/nvim/lua/tobyvin/plugins/transparent.lua new file mode 100644 index 0000000..4a6de02 --- /dev/null +++ b/nvim/.config/nvim/lua/tobyvin/plugins/transparent.lua @@ -0,0 +1,30 @@ +local M = {} + +M.highlights = function() + require("transparent").setup({ + enable = true, + extra_groups = { + "Normal", + "NormalNC", + "StatusLine", + "StatusLineNC", + "WhichKeyFloat", + "CursorLine", + "ColorColumn", + }, + }) +end + +M.setup = function() + local status_ok, _ = pcall(require, "transparent") + if not status_ok then + vim.notify("failed to load module 'transparent'", "error") + return + end + + vim.api.nvim_create_autocmd("ColorScheme", { + callback = M.highlights, + }) +end + +return M -- cgit v1.2.3-70-g09d2