From b36fbab879afb0931806b29d976efc3c69fb409d Mon Sep 17 00:00:00 2001 From: Syndamia Date: Mon, 5 Aug 2024 13:26:29 +0300 Subject: feat(all)!: Replaced plugin manager vim-plug with lazy.nvim --- lua/plugins/heirline.lua | 284 ++++++++++++++++++++++++----------------------- 1 file changed, 145 insertions(+), 139 deletions(-) (limited to 'lua/plugins/heirline.lua') diff --git a/lua/plugins/heirline.lua b/lua/plugins/heirline.lua index 126066a..4e30553 100644 --- a/lua/plugins/heirline.lua +++ b/lua/plugins/heirline.lua @@ -1,159 +1,165 @@ -local utils = require("heirline.utils") -local conditions = require("heirline.conditions") +return { + "rebelot/heirline.nvim", + lazy = false, + opts = function() + local utils = require("heirline.utils") + local conditions = require("heirline.conditions") ---[=[ Helpers ]=]-- + --[=[ Helpers ]=]-- -function inverseColors(highlight) - if highlight == nil then return nil end + function inverseColors(highlight) + if highlight == nil then return nil end - if type(highlight) == "string" then - highlight = utils.get_highlight(highlight) - end - - highlight.cterm = { reverse = true } - return highlight -end - -local delimiters = { - FilledCircle = { "", "" }, - Circle = { "", "" }, -} -local StatusLineColor = utils.get_highlight("StatusLine") - -function surround(delimiters, component) - return { - init = function(self) - local highlight - if component.hl ~= nil and type(component.hl) == "function" then - if component.init ~= nil then - component:init() - end - highlight = component:hl() - else - highlight = component.hl + if type(highlight) == "string" then + highlight = utils.get_highlight(highlight) end - self.inverse = inverseColors(highlight) - self.inverse.ctermfg = StatusLineColor.ctermfg -- Actually sets bg, but both are reversed - end, - - { - condition = function() return conditions.is_active() end, - provider = delimiters[1], - hl = function(self) return self.inverse end, - }, - component, - { - condition = function() return conditions.is_active() end, - provider = delimiters[2], - hl = function(self) return self.inverse end, - }, - - update = { "BufEnter", "BufLeave" }, - } -end - ---[=[ Common elements ]=]-- - -local FileStat = { - { - condition = function() - return vim.bo.readonly - end, - provider = "", - }, - { - condition = function() - return vim.bo.modified or not vim.bo.modifiable - end, - provider = function(self) - local prepend = vim.bo.readonly and " " or "" - if vim.bo.modified then return prepend.."" end - if not vim.bo.modifiable then return prepend.."" end - end, - }, -} + highlight.cterm = { reverse = true } + return highlight + end -local FileType = { - static = { - get_icon = require("nvim-web-devicons").get_icon_by_filetype, - }, - provider = function(self) - local icon = self.get_icon(vim.bo.filetype) - if icon ~= nil then icon = icon.." " - else icon = "" + local delimiters = { + FilledCircle = { "", "" }, + Circle = { "", "" }, + } + local StatusLineColor = utils.get_highlight("StatusLine") + + function surround(delimiters, component) + return { + init = function(self) + local highlight + if component.hl ~= nil and type(component.hl) == "function" then + if component.init ~= nil then + component:init() + end + highlight = component:hl() + else + highlight = component.hl + end + + self.inverse = inverseColors(highlight) + self.inverse.ctermfg = StatusLineColor.ctermfg -- Actually sets bg, but both are reversed + end, + + { + condition = function() return conditions.is_active() end, + provider = delimiters[1], + hl = function(self) return self.inverse end, + }, + component, + { + condition = function() return conditions.is_active() end, + provider = delimiters[2], + hl = function(self) return self.inverse end, + }, + + update = { "BufEnter", "BufLeave" }, + } end - return icon..vim.bo.filetype - end, -} -local Filename = { provider = "%f", } -local Space = { provider = " ", } + --[=[ Common elements ]=]-- + + local FileStat = { + { + condition = function() + return vim.bo.readonly + end, + provider = "", + }, + { + condition = function() + return vim.bo.modified or not vim.bo.modifiable + end, + provider = function(self) + local prepend = vim.bo.readonly and " " or "" + if vim.bo.modified then return prepend.."" end + if not vim.bo.modifiable then return prepend.."" end + end, + }, + } + + local FileType = { + static = { + get_icon = require("nvim-web-devicons").get_icon_by_filetype, + }, + provider = function(self) + local icon = self.get_icon(vim.bo.filetype) + if icon ~= nil then icon = icon.." " + else icon = "" + end + return icon..vim.bo.filetype + end, + } ---[=[ Statusline ]=]-- + local Filename = { provider = "%f", } + local Space = { provider = " ", } -vim.cmd.highlight({ "ModeNormal", "ctermfg=236", "ctermbg=117" }) -vim.cmd.highlight({ "ModeInsert", "ctermfg=236", "ctermbg=119" }) -vim.cmd.highlight({ "ModeReplace", "ctermfg=236", "ctermbg=203" }) -vim.cmd.highlight({ "ModeVisual", "ctermfg=236", "ctermbg=216" }) + --[=[ Statusline ]=]-- -local Mode = surround(delimiters.FilledCircle, { - init = function(self) - self.modestr = vim.fn.mode(1) - if self.modestr == "\22" then self.modestr = "V^" - elseif self.modestr == "\22s" then self.modestr = "V^s" - end - end, + vim.cmd.highlight({ "ModeNormal", "ctermfg=236", "ctermbg=117" }) + vim.cmd.highlight({ "ModeInsert", "ctermfg=236", "ctermbg=119" }) + vim.cmd.highlight({ "ModeReplace", "ctermfg=236", "ctermbg=203" }) + vim.cmd.highlight({ "ModeVisual", "ctermfg=236", "ctermbg=216" }) - provider = function(self) - if not conditions.is_active() then return " " end - return self.modestr - end, - hl = function(self) - if not conditions.is_active() then return "StatusLineNC" end + local Mode = surround(delimiters.FilledCircle, { + init = function(self) + self.modestr = vim.fn.mode(1) + if self.modestr == "\22" then self.modestr = "V^" + elseif self.modestr == "\22s" then self.modestr = "V^s" + end + end, - local modeletter = self.modestr:sub(1,1):lower() + provider = function(self) + if not conditions.is_active() then return " " end + return self.modestr + end, + hl = function(self) + if not conditions.is_active() then return "StatusLineNC" end - if modeletter == "i" then return "ModeInsert" - elseif modeletter == "r" then return "ModeReplace" - elseif modeletter == "v" then return "ModeVisual" - end + local modeletter = self.modestr:sub(1,1):lower() - return "ModeNormal" - end, -}) + if modeletter == "i" then return "ModeInsert" + elseif modeletter == "r" then return "ModeReplace" + elseif modeletter == "v" then return "ModeVisual" + end + return "ModeNormal" + end, + }) -vim.cmd.highlight({ "RowAndColumn", "ctermfg=238", "ctermbg=244" }) -local LineAndColumn = surround(delimiters.FilledCircle, { - provider = function(self) - if not conditions.is_active() then - local row,col = unpack(vim.api.nvim_win_get_cursor(0)) - return string.rep(" ", 1 + tostring(row):len() + tostring(col):len()) - end - return "%l:%c" - end, - hl = function(self) - if not conditions.is_active() then return "StatusLineNC" end - return "RowAndColumn" + vim.cmd.highlight({ "RowAndColumn", "ctermfg=238", "ctermbg=244" }) + + local LineAndColumn = surround(delimiters.FilledCircle, { + provider = function(self) + if not conditions.is_active() then + local row,col = unpack(vim.api.nvim_win_get_cursor(0)) + return string.rep(" ", 1 + tostring(row):len() + tostring(col):len()) + end + return "%l:%c" + end, + hl = function(self) + if not conditions.is_active() then return "StatusLineNC" end + return "RowAndColumn" + end, + }) + + local LeftShrink = { provider = "%<", } + local LeftSep = { provider = " "..delimiters.Circle[2].." " } + local RightSep = { provider = " "..delimiters.Circle[1].." " } + local ExpandMiddle = { provider = "%=", } + local CursorChar = { provider = "%b", } + + local StatusLine = { + Mode, LeftShrink, Space, Filename, LeftSep, FileStat, + ExpandMiddle, + CursorChar, RightSep, FileType, Space, LineAndColumn + } + + --[=[ Setup ]=]-- + + return { + statusline = StatusLine, + } end, -}) - -local LeftShrink = { provider = "%<", } -local LeftSep = { provider = " "..delimiters.Circle[2].." " } -local RightSep = { provider = " "..delimiters.Circle[1].." " } -local ExpandMiddle = { provider = "%=", } -local CursorChar = { provider = "%b", } - -local StatusLine = { - Mode, LeftShrink, Space, Filename, LeftSep, FileStat, - ExpandMiddle, - CursorChar, RightSep, FileType, Space, LineAndColumn } - ---[=[ Setup ]=]-- - -require("heirline").setup({ - statusline = StatusLine, -}) -- cgit v1.3.1-23-gd82d