From 5cc68af4e781e2c7353d90ad7626d686f8a014c5 Mon Sep 17 00:00:00 2001 From: Toby Vincent Date: Fri, 4 Nov 2022 18:24:30 -0500 Subject: feat(lualine): add highlights to workspace diagnostics --- nvim/.config/nvim/lua/tobyvin/plugins/lualine.lua | 36 +++++++++++++--------- nvim/.config/nvim/lua/tobyvin/utils/diagnostic.lua | 8 ++++- 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/lualine.lua b/nvim/.config/nvim/lua/tobyvin/plugins/lualine.lua index 5b66f4b..a165811 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins/lualine.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins/lualine.lua @@ -19,7 +19,7 @@ M.setup = function() return vim.bo.buflisted end - local workspace = { + local git = { "branch", { "diff", @@ -37,6 +37,25 @@ M.setup = function() }, } + local workspace = { + { + function() + return utils.diagnostic + .indicator(nil) + :gsub("DiagnosticSignError", "lualine_b_diagnostics_error_normal") + :gsub("DiagnosticSignWarn", "lualine_b_diagnostics_warn_normal") + :gsub("DiagnosticSignInfo", "lualine_b_diagnostics_info_normal") + :gsub("DiagnosticSignHint", "lualine_b_diagnostics_hint_normal") + end, + padding = { left = 1, right = 0 }, + color = "StatusLineNC", + }, + { + "filename", + path = 1, + }, + } + local buffer = { { "filename", @@ -72,19 +91,8 @@ M.setup = function() sections = { lualine_a = { { "mode", fmt = M.to_char } }, - lualine_b = workspace, - lualine_c = { - { - function() - return utils.diagnostic.indicator(nil) - end, - padding = { left = 1, right = 0 }, - }, - { - "filename", - path = 1, - }, - }, + lualine_b = git, + lualine_c = workspace, lualine_x = { "encoding", "fileformat", diff --git a/nvim/.config/nvim/lua/tobyvin/utils/diagnostic.lua b/nvim/.config/nvim/lua/tobyvin/utils/diagnostic.lua index 6b90c64..9e02c16 100644 --- a/nvim/.config/nvim/lua/tobyvin/utils/diagnostic.lua +++ b/nvim/.config/nvim/lua/tobyvin/utils/diagnostic.lua @@ -16,6 +16,8 @@ setmetatable(M.signs, { end, }) +---@param bufnr number? +---@return table M.count = function(bufnr) local items = {} for i, level in ipairs(vim.diagnostic.severity) do @@ -34,12 +36,16 @@ M.count = function(bufnr) return items end +---@param bufnr number? +---@return string M.indicator = function(bufnr) local diagnostic_count = M.count(bufnr) local tbl = {} for level, count in pairs(diagnostic_count) do if count > 0 then - table.insert(tbl, M.signs[level].text .. count) + local color = "%#" .. M.signs[level].texthl .. "#" + local indicator = color .. M.signs[level].text .. count + table.insert(tbl, indicator) end end return table.concat(tbl, " ") -- cgit v1.2.3-70-g09d2