feat(nvim): replace lualine with heirline
This commit is contained in:
parent
0c38b8f566
commit
f0659e38a5
945
dots/.config/nvim/lua/plugins/configs/heirline.lua
Normal file
945
dots/.config/nvim/lua/plugins/configs/heirline.lua
Normal file
@ -0,0 +1,945 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"rebelot/heirline.nvim",
|
||||||
|
event = "ColorScheme",
|
||||||
|
dependencies = {
|
||||||
|
"lewis6991/gitsigns.nvim",
|
||||||
|
"mfussenegger/nvim-dap",
|
||||||
|
},
|
||||||
|
opts = function()
|
||||||
|
local colors = require("kanagawa.colors").setup().palette
|
||||||
|
|
||||||
|
local seps = {
|
||||||
|
empty = { right = "", left = "" },
|
||||||
|
full = { right = "", left = "" },
|
||||||
|
}
|
||||||
|
|
||||||
|
local utils = require("heirline.utils")
|
||||||
|
local conditions = require("heirline.conditions")
|
||||||
|
|
||||||
|
local pad = function(num)
|
||||||
|
return string.rep(" ", num)
|
||||||
|
end
|
||||||
|
|
||||||
|
local margin = function(num)
|
||||||
|
return {
|
||||||
|
provider = pad(num),
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
-- NOTE: Vim Mode
|
||||||
|
local VimMode = {
|
||||||
|
init = function(self)
|
||||||
|
self.mode = vim.fn.mode(1)
|
||||||
|
end,
|
||||||
|
static = {
|
||||||
|
mode_names = { -- change the strings if you like it vvvvverbose!
|
||||||
|
n = "N",
|
||||||
|
no = "N?",
|
||||||
|
nov = "N?",
|
||||||
|
noV = "N?",
|
||||||
|
["no\22"] = "N?",
|
||||||
|
niI = "Ni",
|
||||||
|
niR = "Nr",
|
||||||
|
niV = "Nv",
|
||||||
|
nt = "Nt",
|
||||||
|
v = "V",
|
||||||
|
vs = "Vs",
|
||||||
|
V = "V_",
|
||||||
|
Vs = "Vs",
|
||||||
|
["\22"] = "^V",
|
||||||
|
["\22s"] = "^V",
|
||||||
|
s = "S",
|
||||||
|
S = "S_",
|
||||||
|
["\19"] = "^S",
|
||||||
|
i = "I",
|
||||||
|
ic = "Ic",
|
||||||
|
ix = "Ix",
|
||||||
|
R = "R",
|
||||||
|
Rc = "Rc",
|
||||||
|
Rx = "Rx",
|
||||||
|
Rv = "Rv",
|
||||||
|
Rvc = "Rv",
|
||||||
|
Rvx = "Rv",
|
||||||
|
c = "C",
|
||||||
|
cv = "Ex",
|
||||||
|
r = "...",
|
||||||
|
rm = "M",
|
||||||
|
["r?"] = "?",
|
||||||
|
["!"] = "!",
|
||||||
|
t = "T",
|
||||||
|
},
|
||||||
|
mode_colors = {
|
||||||
|
n = colors.crystalBlue,
|
||||||
|
i = colors.springGreen,
|
||||||
|
v = colors.lightBlue,
|
||||||
|
V = colors.lightBlue,
|
||||||
|
["\22"] = colors.lightBlue,
|
||||||
|
c = colors.roninYellow,
|
||||||
|
s = colors.oniViolet,
|
||||||
|
S = colors.oniViolet,
|
||||||
|
["\19"] = colors.oniViolet,
|
||||||
|
R = colors.carpYellow,
|
||||||
|
r = colors.carpYellow,
|
||||||
|
["!"] = colors.peachRed,
|
||||||
|
t = colors.peachRed,
|
||||||
|
},
|
||||||
|
mode_color = function(self)
|
||||||
|
local mode = conditions.is_active() and vim.fn.mode() or "n"
|
||||||
|
return self.mode_colors[mode]
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{
|
||||||
|
provider = seps.full.left,
|
||||||
|
hl = function(self)
|
||||||
|
return {
|
||||||
|
fg = self:mode_color(),
|
||||||
|
bg = utils.get_highlight("StatusLine").bg,
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = function(self)
|
||||||
|
local padding = 1
|
||||||
|
return pad(padding) .. " " .. self.mode_names[self.mode] .. pad(padding)
|
||||||
|
end,
|
||||||
|
hl = function(self)
|
||||||
|
return { bg = self:mode_color(), bold = true, fg = colors.sumiInk0 }
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = seps.full.right,
|
||||||
|
hl = function(self)
|
||||||
|
return {
|
||||||
|
fg = self:mode_color(),
|
||||||
|
bg = utils.get_highlight("StatusLine").bg,
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
update = {
|
||||||
|
"ModeChanged",
|
||||||
|
pattern = "*:*",
|
||||||
|
callback = vim.schedule_wrap(function()
|
||||||
|
vim.cmd.redrawstatus()
|
||||||
|
end),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- NOTE: File name and info
|
||||||
|
local FileNameBlock = {
|
||||||
|
-- let's first set up some attributes needed by this component and it's children
|
||||||
|
init = function(self)
|
||||||
|
self.filename = vim.api.nvim_buf_get_name(0)
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
-- We can now define some children separately and add them later
|
||||||
|
|
||||||
|
local FileIcon = {
|
||||||
|
init = function(self)
|
||||||
|
local filename = self.filename
|
||||||
|
local extension = vim.fn.fnamemodify(filename, ":e")
|
||||||
|
self.icon, self.icon_color =
|
||||||
|
require("nvim-web-devicons").get_icon_color(filename, extension, { default = true })
|
||||||
|
|
||||||
|
local overrides = {
|
||||||
|
["rs"] = "",
|
||||||
|
}
|
||||||
|
|
||||||
|
local override = overrides[extension]
|
||||||
|
if override ~= nil then
|
||||||
|
self.icon = override
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
provider = function(self)
|
||||||
|
return self.icon and (" " .. self.icon .. " ")
|
||||||
|
end,
|
||||||
|
hl = function(self)
|
||||||
|
return { fg = self.icon_color }
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
local FileName = {
|
||||||
|
provider = function(self)
|
||||||
|
-- first, trim the pattern relative to the current directory. For other
|
||||||
|
-- options, see :h filename-modifers
|
||||||
|
local filename = vim.fn.fnamemodify(self.filename, ":.")
|
||||||
|
if filename == "" then
|
||||||
|
return "[No Name]"
|
||||||
|
end
|
||||||
|
-- now, if the filename would occupy more than 1/4th of the available
|
||||||
|
-- space, we trim the file path to its initials
|
||||||
|
-- See Flexible Components section below for dynamic truncation
|
||||||
|
if not conditions.width_percent_below(#filename, 0.25) then
|
||||||
|
filename = vim.fn.pathshorten(filename)
|
||||||
|
end
|
||||||
|
return filename
|
||||||
|
end,
|
||||||
|
hl = { fg = colors.sumiInk0 },
|
||||||
|
}
|
||||||
|
|
||||||
|
local FileFlags = {
|
||||||
|
{
|
||||||
|
condition = function()
|
||||||
|
return vim.bo.modified
|
||||||
|
end,
|
||||||
|
provider = " ",
|
||||||
|
hl = { fg = colors.sumiInk0 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
condition = function()
|
||||||
|
return not vim.bo.modifiable or vim.bo.readonly
|
||||||
|
end,
|
||||||
|
provider = " ",
|
||||||
|
hl = { fg = colors.sumiInk0 },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Now, let's say that we want the filename color to change if the buffer is
|
||||||
|
-- modified. Of course, we could do that directly using the FileName.hl field,
|
||||||
|
-- but we'll see how easy it is to alter existing components using a "modifier"
|
||||||
|
-- component
|
||||||
|
local FileNameModifer = {
|
||||||
|
hl = function()
|
||||||
|
if vim.bo.modified then
|
||||||
|
-- use `force` because we need to override the child's hl foreground
|
||||||
|
return { bold = true }
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- let's add the children to our FileNameBlock component
|
||||||
|
FileNameBlock = utils.insert(FileNameBlock, {
|
||||||
|
FileIcon,
|
||||||
|
hl = function()
|
||||||
|
if conditions.is_active() then
|
||||||
|
return { bg = colors.sumiInk4 }
|
||||||
|
else
|
||||||
|
return { fg = colors.springViolet2, bg = colors.sumiInk0, force = true }
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
}, {
|
||||||
|
provider = seps.full.right .. " ",
|
||||||
|
hl = function()
|
||||||
|
if conditions.is_active() then
|
||||||
|
return { fg = colors.sumiInk4, bg = colors.carpYellow }
|
||||||
|
else
|
||||||
|
return { fg = colors.sumiInk0, bg = colors.sumiInk3 }
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
}, {
|
||||||
|
hl = function()
|
||||||
|
if conditions.is_active() then
|
||||||
|
return { fg = colors.carpYellow, bg = colors.carpYellow }
|
||||||
|
else
|
||||||
|
return { fg = colors.oniViolet2, bg = colors.sumiInk3, force = true }
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
utils.insert(FileNameModifer, FileName),
|
||||||
|
FileFlags,
|
||||||
|
}, { provider = "%<" }, {
|
||||||
|
provider = seps.full.right,
|
||||||
|
hl = function()
|
||||||
|
if conditions.is_active() then
|
||||||
|
return { fg = colors.carpYellow, bg = utils.get_highlight("StatusLine").bg }
|
||||||
|
else
|
||||||
|
return { fg = colors.sumiInk3, bg = utils.get_highlight("StatusLineNC").bg }
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
local buffer_hl = {
|
||||||
|
active = {
|
||||||
|
fg = colors.fujiWhite,
|
||||||
|
bg = colors.sumiInk4,
|
||||||
|
},
|
||||||
|
inactive = {
|
||||||
|
fg = colors.fujiGray,
|
||||||
|
bg = colors.sumiInk3,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
local StatusLineBufnr = {
|
||||||
|
provider = function(self)
|
||||||
|
return tostring(self.bufnr) .. ". "
|
||||||
|
end,
|
||||||
|
hl = "Comment",
|
||||||
|
}
|
||||||
|
|
||||||
|
-- we redefine the filename component, as we probably only want the tail and not the relative path
|
||||||
|
local StatusLineFileName = {
|
||||||
|
init = function(self)
|
||||||
|
self.lfilename = vim.fn.fnamemodify(self.filename, ":.:~")
|
||||||
|
if self.lfilename == "" then
|
||||||
|
self.lfilename = "[No Name]"
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
flexible = 2,
|
||||||
|
{
|
||||||
|
provider = function(self)
|
||||||
|
return self.lfilename
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = function(self)
|
||||||
|
return vim.fn.pathshorten(self.lfilename)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
hl = function(self)
|
||||||
|
local fg
|
||||||
|
if self.is_active then
|
||||||
|
fg = buffer_hl.active.fg
|
||||||
|
else
|
||||||
|
fg = buffer_hl.inactive.fg
|
||||||
|
end
|
||||||
|
return { bold = self.is_active or self.is_visible, italic = true, fg = fg }
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- this looks exactly like the FileFlags component that we saw in
|
||||||
|
-- #crash-course-part-ii-filename-and-friends, but we are indexing the bufnr explicitly
|
||||||
|
-- also, we are adding a nice icon for terminal buffers.
|
||||||
|
local StatusLineFileFlags = {
|
||||||
|
{
|
||||||
|
condition = function(self)
|
||||||
|
return vim.api.nvim_buf_get_option(self.bufnr, "modified")
|
||||||
|
end,
|
||||||
|
provider = " ",
|
||||||
|
hl = { fg = colors.springGreen },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
condition = function(self)
|
||||||
|
return not vim.api.nvim_buf_get_option(self.bufnr, "modifiable")
|
||||||
|
or vim.api.nvim_buf_get_option(self.bufnr, "readonly")
|
||||||
|
end,
|
||||||
|
provider = function(self)
|
||||||
|
if vim.api.nvim_buf_get_option(self.bufnr, "buftype") == "terminal" then
|
||||||
|
return " "
|
||||||
|
else
|
||||||
|
return " "
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
hl = { fg = colors.roninYellow },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Here the filename block finally comes together
|
||||||
|
local StatusLineFileNameBlock = {
|
||||||
|
init = function(self)
|
||||||
|
self.filename = vim.api.nvim_buf_get_name(self.bufnr)
|
||||||
|
end,
|
||||||
|
hl = function(self)
|
||||||
|
if self.is_active then
|
||||||
|
return buffer_hl.active
|
||||||
|
else
|
||||||
|
return buffer_hl.inactive
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
on_click = {
|
||||||
|
callback = function(_, minwid, _, button)
|
||||||
|
if button == "m" then -- close on mouse middle click
|
||||||
|
vim.schedule(function()
|
||||||
|
vim.api.nvim_buf_delete(minwid, { force = false })
|
||||||
|
end)
|
||||||
|
else
|
||||||
|
vim.api.nvim_win_set_buf(0, minwid)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
minwid = function(self)
|
||||||
|
return self.bufnr
|
||||||
|
end,
|
||||||
|
name = "heirline_tabline_buffer_callback",
|
||||||
|
},
|
||||||
|
StatusLineBufnr,
|
||||||
|
FileIcon, -- turns out the version defined in #crash-course-part-ii-filename-and-friends can be reutilized as is here!
|
||||||
|
StatusLineFileName,
|
||||||
|
StatusLineFileFlags,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- a nice "x" button to close the buffer
|
||||||
|
local StatusLineCloseButton = {
|
||||||
|
condition = function(self)
|
||||||
|
return not vim.api.nvim_buf_get_option(self.bufnr, "modified")
|
||||||
|
end,
|
||||||
|
{
|
||||||
|
provider = " ",
|
||||||
|
hl = function(self)
|
||||||
|
local bg
|
||||||
|
if self.is_active then
|
||||||
|
bg = buffer_hl.active.bg
|
||||||
|
else
|
||||||
|
bg = buffer_hl.inactive.bg
|
||||||
|
end
|
||||||
|
return { fg = colors.waveRed, bg = bg }
|
||||||
|
end,
|
||||||
|
on_click = {
|
||||||
|
callback = function(_, minwid)
|
||||||
|
vim.schedule(function()
|
||||||
|
vim.api.nvim_buf_delete(minwid, { force = false })
|
||||||
|
vim.cmd.redrawtabline()
|
||||||
|
end)
|
||||||
|
end,
|
||||||
|
minwid = function(self)
|
||||||
|
return self.bufnr
|
||||||
|
end,
|
||||||
|
name = "heirline_tabline_close_buffer_callback",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- The final touch!
|
||||||
|
local StatusLineBufferBlock = {
|
||||||
|
{
|
||||||
|
provider = seps.full.left,
|
||||||
|
hl = function(self)
|
||||||
|
local fg
|
||||||
|
if self.is_active then
|
||||||
|
fg = buffer_hl.active.bg
|
||||||
|
else
|
||||||
|
fg = buffer_hl.inactive.bg
|
||||||
|
end
|
||||||
|
return { fg = fg, bg = utils.get_highlight("StatusLine").bg }
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
StatusLineFileNameBlock,
|
||||||
|
StatusLineCloseButton,
|
||||||
|
{
|
||||||
|
provider = seps.full.right,
|
||||||
|
hl = function(self)
|
||||||
|
local fg
|
||||||
|
if self.is_active then
|
||||||
|
fg = buffer_hl.active.bg
|
||||||
|
else
|
||||||
|
fg = buffer_hl.inactive.bg
|
||||||
|
end
|
||||||
|
return { fg = fg, bg = utils.get_highlight("StatusLine").bg }
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- and here we go
|
||||||
|
local BufferLine = utils.make_buflist(
|
||||||
|
StatusLineBufferBlock,
|
||||||
|
{ provider = "", hl = { fg = colors.katanaGray } }, -- left truncation, optional (defaults to "<")
|
||||||
|
{ provider = "", hl = { fg = colors.katanaGray } } -- right trunctation, also optional (defaults to ...... yep, ">")
|
||||||
|
-- by the way, open a lot of buffers and try clicking them ;)
|
||||||
|
)
|
||||||
|
|
||||||
|
local Tabpage = {
|
||||||
|
static = {
|
||||||
|
num_mappings = {},
|
||||||
|
},
|
||||||
|
provider = function(self)
|
||||||
|
local prefix = ""
|
||||||
|
if self.is_active then
|
||||||
|
prefix = ""
|
||||||
|
end
|
||||||
|
|
||||||
|
local sep = ""
|
||||||
|
|
||||||
|
if #vim.api.nvim_list_tabpages() ~= self.tabnr then
|
||||||
|
sep = "।"
|
||||||
|
end
|
||||||
|
return prefix .. "%" .. self.tabnr .. "T " .. self.tabpage .. " %T" .. sep
|
||||||
|
end,
|
||||||
|
hl = function(self)
|
||||||
|
if self.is_active then
|
||||||
|
return { fg = colors.sumiInk0, bg = colors.sakuraPink }
|
||||||
|
else
|
||||||
|
return { fg = colors.sumiInk0, bg = colors.sakuraPink }
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
local TabPages = {
|
||||||
|
-- only show this component if there's 2 or more tabpages
|
||||||
|
condition = function()
|
||||||
|
return #vim.api.nvim_list_tabpages() >= 2
|
||||||
|
end,
|
||||||
|
margin(1),
|
||||||
|
{
|
||||||
|
provider = seps.full.left,
|
||||||
|
hl = { fg = colors.sakuraPink, bg = utils.get_highlight("StatusLine").bg },
|
||||||
|
},
|
||||||
|
utils.make_tablist(Tabpage),
|
||||||
|
{
|
||||||
|
provider = seps.full.left,
|
||||||
|
hl = { fg = colors.peachRed, bg = colors.sakuraPink },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = "%999X %X",
|
||||||
|
hl = function()
|
||||||
|
return {
|
||||||
|
fg = colors.sumiInk0,
|
||||||
|
bg = colors.peachRed,
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = seps.full.right,
|
||||||
|
hl = { fg = colors.peachRed, bg = utils.get_highlight("StatusLine").bg },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
local InactiveWinbar = {
|
||||||
|
condition = conditions.is_not_active,
|
||||||
|
{
|
||||||
|
{
|
||||||
|
provider = seps.full.left,
|
||||||
|
hl = function()
|
||||||
|
return { fg = colors.sumiInk0, bg = utils.get_highlight("WinBarNC").bg }
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
FileNameBlock,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
local ActiveWinbar = {
|
||||||
|
condition = conditions.is_active,
|
||||||
|
{
|
||||||
|
{
|
||||||
|
provider = seps.full.left,
|
||||||
|
hl = function()
|
||||||
|
return { fg = colors.sumiInk4, bg = utils.get_highlight("WinBar").bg }
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
FileNameBlock,
|
||||||
|
margin(1),
|
||||||
|
{
|
||||||
|
condition = conditions.lsp_attached,
|
||||||
|
{
|
||||||
|
{
|
||||||
|
provider = seps.full.left,
|
||||||
|
hl = { fg = colors.oniViolet, bg = utils.get_highlight("WinBarNC").bg },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = " ",
|
||||||
|
hl = {
|
||||||
|
bg = colors.oniViolet,
|
||||||
|
fg = colors.sumiInk0,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = seps.full.right,
|
||||||
|
hl = { fg = colors.oniViolet, bg = colors.oniViolet2 },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
update = { "LspAttach", "LspDetach" },
|
||||||
|
|
||||||
|
provider = function()
|
||||||
|
local names = {}
|
||||||
|
for _, server in ipairs(vim.lsp.get_clients({ bufnr = 0 })) do
|
||||||
|
table.insert(names, server.name)
|
||||||
|
end
|
||||||
|
return " " .. table.concat(names, ", ")
|
||||||
|
end,
|
||||||
|
hl = { fg = colors.sumiInk0, bg = colors.oniViolet2 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = seps.full.right,
|
||||||
|
hl = function()
|
||||||
|
local bg = utils.get_highlight("WinBar").bg
|
||||||
|
if conditions.has_diagnostics() then
|
||||||
|
bg = colors.sumiInk2
|
||||||
|
end
|
||||||
|
return { fg = colors.oniViolet2, bg = bg }
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
condition = conditions.has_diagnostics,
|
||||||
|
static = {
|
||||||
|
error_icon = vim.fn.sign_getdefined("DiagnosticSignError")[1].text,
|
||||||
|
warn_icon = vim.fn.sign_getdefined("DiagnosticSignWarn")[1].text,
|
||||||
|
info_icon = vim.fn.sign_getdefined("DiagnosticSignInfo")[1].text,
|
||||||
|
hint_icon = vim.fn.sign_getdefined("DiagnosticSignHint")[1].text,
|
||||||
|
},
|
||||||
|
init = function(self)
|
||||||
|
self.errors = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.ERROR })
|
||||||
|
self.warnings = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.WARN })
|
||||||
|
self.hints = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.HINT })
|
||||||
|
self.info = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.INFO })
|
||||||
|
end,
|
||||||
|
update = { "DiagnosticChanged", "BufEnter" },
|
||||||
|
{
|
||||||
|
provider = " ",
|
||||||
|
hl = { fg = colors.sumiInk2, bg = colors.sumiInk2 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = function(self)
|
||||||
|
-- 0 is just another output, we can decide to print it or not!
|
||||||
|
return self.errors > 0 and (self.error_icon .. self.errors .. " ")
|
||||||
|
end,
|
||||||
|
hl = { fg = utils.get_highlight("DiagnosticError").fg, bg = colors.sumiInk2 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = function(self)
|
||||||
|
return self.warnings > 0 and (self.warn_icon .. self.warnings .. " ")
|
||||||
|
end,
|
||||||
|
hl = { fg = utils.get_highlight("DiagnosticWarn").fg, bg = colors.sumiInk2 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = function(self)
|
||||||
|
return self.info > 0 and (self.info_icon .. self.info .. " ")
|
||||||
|
end,
|
||||||
|
hl = { fg = utils.get_highlight("DiagnosticInfo").fg, bg = colors.sumiInk2 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = function(self)
|
||||||
|
return self.hints > 0 and (self.hint_icon .. self.hints)
|
||||||
|
end,
|
||||||
|
hl = { fg = utils.get_highlight("DiagnosticHint").fg, bg = colors.sumiInk2 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = seps.full.right,
|
||||||
|
hl = { fg = colors.sumiInk2, bg = utils.get_highlight("WinBar").bg },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = "%=",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{
|
||||||
|
provider = seps.full.left,
|
||||||
|
hl = function()
|
||||||
|
return { fg = colors.sumiInk5, bg = utils.get_highlight("WinBar").bg }
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = "%p%% ",
|
||||||
|
hl = {
|
||||||
|
fg = colors.fujiWhite,
|
||||||
|
bg = colors.sumiInk5,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = seps.full.left,
|
||||||
|
hl = function()
|
||||||
|
return { fg = colors.carpYellow, bg = colors.sumiInk5 }
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = " ",
|
||||||
|
hl = {
|
||||||
|
fg = colors.sumiInk0,
|
||||||
|
bg = colors.carpYellow,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = seps.full.right,
|
||||||
|
hl = function()
|
||||||
|
return { fg = colors.carpYellow, bg = utils.get_highlight("WinBar").bg }
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
margin(1),
|
||||||
|
{
|
||||||
|
{
|
||||||
|
provider = seps.full.left,
|
||||||
|
hl = function()
|
||||||
|
return { fg = colors.sumiInk5, bg = utils.get_highlight("WinBar").bg }
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = "%3l:%c ",
|
||||||
|
hl = {
|
||||||
|
fg = colors.fujiWhite,
|
||||||
|
bg = colors.sumiInk5,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = seps.full.left,
|
||||||
|
hl = function()
|
||||||
|
return { fg = colors.crystalBlue, bg = colors.sumiInk5 }
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = " ",
|
||||||
|
hl = {
|
||||||
|
fg = colors.sumiInk0,
|
||||||
|
bg = colors.crystalBlue,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = seps.full.right,
|
||||||
|
hl = function()
|
||||||
|
return { fg = colors.crystalBlue, bg = utils.get_highlight("WinBar").bg }
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
vim.opt.showcmdloc = "statusline"
|
||||||
|
|
||||||
|
return {
|
||||||
|
statusline = {
|
||||||
|
{
|
||||||
|
hl = "StatusLine",
|
||||||
|
fallthrough = false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
condition = function()
|
||||||
|
local session = require("dap").session()
|
||||||
|
return session ~= nil
|
||||||
|
end,
|
||||||
|
provider = function()
|
||||||
|
return " " .. require("dap").status()
|
||||||
|
end,
|
||||||
|
hl = "Debug",
|
||||||
|
-- see Click-it! section for clickable actions
|
||||||
|
},
|
||||||
|
VimMode,
|
||||||
|
margin(1),
|
||||||
|
{
|
||||||
|
condition = function()
|
||||||
|
return vim.v.hlsearch ~= 0
|
||||||
|
end,
|
||||||
|
{
|
||||||
|
provider = seps.full.left,
|
||||||
|
hl = {
|
||||||
|
fg = colors.surimiOrange,
|
||||||
|
bg = utils.get_highlight("StatusLine").bg,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = " ",
|
||||||
|
hl = {
|
||||||
|
fg = colors.sumiInk0,
|
||||||
|
bg = colors.surimiOrange,
|
||||||
|
bold = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = seps.full.right,
|
||||||
|
hl = {
|
||||||
|
fg = colors.surimiOrange,
|
||||||
|
bg = colors.sumiInk4,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
init = function(self)
|
||||||
|
local ok, search = pcall(vim.fn.searchcount)
|
||||||
|
if ok and search.total then
|
||||||
|
self.search = search
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
provider = function(self)
|
||||||
|
local search = self.search
|
||||||
|
return string.format(" %d/%d", search.current, math.min(search.total, search.maxcount))
|
||||||
|
end,
|
||||||
|
hl = {
|
||||||
|
fg = colors.fujiWhite,
|
||||||
|
bg = colors.sumiInk4,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = seps.full.right,
|
||||||
|
hl = {
|
||||||
|
fg = colors.sumiInk4,
|
||||||
|
bg = utils.get_highlight("StatusLine").bg,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
condition = function()
|
||||||
|
return vim.fn.reg_recording() ~= ""
|
||||||
|
end,
|
||||||
|
update = {
|
||||||
|
"RecordingEnter",
|
||||||
|
"RecordingLeave",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = seps.full.left,
|
||||||
|
hl = {
|
||||||
|
fg = colors.surimiOrange,
|
||||||
|
bg = utils.get_highlight("StatusLine").bg,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = " ",
|
||||||
|
hl = {
|
||||||
|
fg = colors.sumiInk0,
|
||||||
|
bg = colors.surimiOrange,
|
||||||
|
bold = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = seps.full.right,
|
||||||
|
hl = {
|
||||||
|
fg = colors.surimiOrange,
|
||||||
|
bg = colors.sumiInk4,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{
|
||||||
|
provider = " [",
|
||||||
|
hl = {
|
||||||
|
fg = colors.peachRed,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = function()
|
||||||
|
return vim.fn.reg_recording()
|
||||||
|
end,
|
||||||
|
hl = {
|
||||||
|
fg = colors.surimiOrange,
|
||||||
|
bg = colors.sumiInk4,
|
||||||
|
bold = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = "]",
|
||||||
|
hl = {
|
||||||
|
fg = colors.peachRed,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = seps.full.right,
|
||||||
|
hl = {
|
||||||
|
fg = colors.sumiInk4,
|
||||||
|
bg = utils.get_highlight("StatusLine").bg,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
margin(1),
|
||||||
|
{
|
||||||
|
{
|
||||||
|
provider = seps.full.left,
|
||||||
|
hl = function()
|
||||||
|
if conditions.is_active() then
|
||||||
|
return { fg = colors.sumiInk4, bg = utils.get_highlight("StatusLine").bg }
|
||||||
|
else
|
||||||
|
return { fg = colors.sumiInk0, bg = utils.get_highlight("StatusLineNC").bg }
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
FileNameBlock,
|
||||||
|
},
|
||||||
|
margin(1),
|
||||||
|
{
|
||||||
|
condition = conditions.is_git_repo,
|
||||||
|
|
||||||
|
init = function(self)
|
||||||
|
self.status_dict = vim.b.gitsigns_status_dict
|
||||||
|
self.has_changes = self.status_dict.added ~= 0
|
||||||
|
or self.status_dict.removed ~= 0
|
||||||
|
or self.status_dict.changed ~= 0
|
||||||
|
end,
|
||||||
|
|
||||||
|
{
|
||||||
|
provider = seps.full.left,
|
||||||
|
hl = {
|
||||||
|
fg = colors.springGreen,
|
||||||
|
bg = utils.get_highlight("StatusLine").bg,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = " ",
|
||||||
|
hl = {
|
||||||
|
fg = colors.sumiInk0,
|
||||||
|
bg = colors.springGreen,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = seps.full.right,
|
||||||
|
hl = {
|
||||||
|
fg = colors.springGreen,
|
||||||
|
bg = colors.autumnGreen,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = function(self)
|
||||||
|
local branch = self.status_dict.head
|
||||||
|
return " " .. self.status_dict.head
|
||||||
|
end,
|
||||||
|
hl = { fg = colors.sumiInk0, bg = colors.autumnGreen },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = function(self)
|
||||||
|
local suffix = ""
|
||||||
|
if self.has_changes then
|
||||||
|
suffix = " "
|
||||||
|
end
|
||||||
|
return seps.full.right .. suffix
|
||||||
|
end,
|
||||||
|
hl = function(self)
|
||||||
|
local bg = utils.get_highlight("StatusLine").bg
|
||||||
|
if self.has_changes then
|
||||||
|
bg = colors.sumiInk4
|
||||||
|
end
|
||||||
|
return {
|
||||||
|
fg = colors.autumnGreen,
|
||||||
|
bg = bg,
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = function(self)
|
||||||
|
local count = self.status_dict.added or 0
|
||||||
|
return count > 0 and (" " .. count)
|
||||||
|
end,
|
||||||
|
hl = { fg = utils.get_highlight("DiffAdd").fg, bg = colors.sumiInk4 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = function(self)
|
||||||
|
local count = self.status_dict.changed or 0
|
||||||
|
return count > 0 and (" " .. count)
|
||||||
|
end,
|
||||||
|
hl = { fg = utils.get_highlight("DiffChanged").fg, bg = colors.sumiInk4 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = function(self)
|
||||||
|
local count = self.status_dict.removed or 0
|
||||||
|
return count > 0 and (" " .. count)
|
||||||
|
end,
|
||||||
|
hl = { fg = utils.get_highlight("DiffDelete").fg, bg = colors.sumiInk4 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
condition = function(self)
|
||||||
|
return self.has_changes
|
||||||
|
end,
|
||||||
|
provider = seps.full.right,
|
||||||
|
hl = {
|
||||||
|
fg = colors.sumiInk4,
|
||||||
|
bg = utils.get_highlight("StatusLine").bg,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- Align Right
|
||||||
|
{
|
||||||
|
provider = "%=",
|
||||||
|
},
|
||||||
|
BufferLine,
|
||||||
|
{
|
||||||
|
provider = seps.full.left,
|
||||||
|
hl = { fg = colors.roninYellow, bg = utils.get_highlight("StatusLine").bg },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = " ",
|
||||||
|
hl = { fg = colors.sumiInk0, bg = colors.roninYellow },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = seps.full.right,
|
||||||
|
hl = { fg = colors.roninYellow, bg = utils.get_highlight("StatusLine").bg },
|
||||||
|
},
|
||||||
|
TabPages,
|
||||||
|
},
|
||||||
|
winbar = {
|
||||||
|
InactiveWinbar,
|
||||||
|
ActiveWinbar,
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
disable_winbar_cb = function(args)
|
||||||
|
return conditions.buffer_matches({
|
||||||
|
buftype = { "nofile", "prompt", "quickfix", "terminal" },
|
||||||
|
filetype = { "^git.*", "fugitive", "Trouble", "dashboard" },
|
||||||
|
}, args.buf)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
@ -39,6 +39,8 @@ return {
|
|||||||
vim.api.nvim_set_hl(0, "NvimNotifyTrace", { fg = colors.oniViolet })
|
vim.api.nvim_set_hl(0, "NvimNotifyTrace", { fg = colors.oniViolet })
|
||||||
|
|
||||||
local overrides = {
|
local overrides = {
|
||||||
|
StatusLine = { fg = colors.fujiWhite, bg = colors.sumiInk0 },
|
||||||
|
WinBar = { fg = colors.fujiWhite, bg = nil },
|
||||||
Visual = { bg = "#1d3554" },
|
Visual = { bg = "#1d3554" },
|
||||||
DiffAdd = { bg = colors.winterGreen, fg = colors.autumnGreen },
|
DiffAdd = { bg = colors.winterGreen, fg = colors.autumnGreen },
|
||||||
DiffDelete = { bg = colors.winterRed, fg = colors.autumnRed },
|
DiffDelete = { bg = colors.winterRed, fg = colors.autumnRed },
|
||||||
@ -125,7 +127,6 @@ return {
|
|||||||
TelescopePreviewNormal = { bg = colors.sumiInk4 },
|
TelescopePreviewNormal = { bg = colors.sumiInk4 },
|
||||||
TelescopePreviewBorder = { link = "TelescopePreviewNormal" },
|
TelescopePreviewBorder = { link = "TelescopePreviewNormal" },
|
||||||
TelescopeResultsTitle = { fg = "NONE", bg = "NONE" },
|
TelescopeResultsTitle = { fg = "NONE", bg = "NONE" },
|
||||||
WinSeparator = { fg = colors.sumiInk4, bg = "NONE" },
|
|
||||||
MiniCursorword = { bg = colors.waveBlue2 },
|
MiniCursorword = { bg = colors.waveBlue2 },
|
||||||
MiniCursorwordCurrent = { bg = colors.waveBlue2 },
|
MiniCursorwordCurrent = { bg = colors.waveBlue2 },
|
||||||
rainbowcol1 = { fg = colors.oniViolet },
|
rainbowcol1 = { fg = colors.oniViolet },
|
||||||
@ -136,8 +137,6 @@ return {
|
|||||||
rainbowcol6 = { fg = colors.springViolet2 },
|
rainbowcol6 = { fg = colors.springViolet2 },
|
||||||
rainbowcol7 = { fg = colors.carpYellow },
|
rainbowcol7 = { fg = colors.carpYellow },
|
||||||
packerSuccess = { fg = colors.autumnGreen, bg = "NONE" },
|
packerSuccess = { fg = colors.autumnGreen, bg = "NONE" },
|
||||||
WinBar = { fg = colors.fujiWhite, bg = colors.sumiInk1 },
|
|
||||||
WinBarNC = { fg = colors.fujiWhite, bg = colors.sumiInk1 },
|
|
||||||
NeoTreeNormal = { bg = colors.sumiInk1 },
|
NeoTreeNormal = { bg = colors.sumiInk1 },
|
||||||
NeoTreeNormalNC = { bg = colors.sumiInk1 },
|
NeoTreeNormalNC = { bg = colors.sumiInk1 },
|
||||||
NoiceCmdlineIconCmdline = { fg = colors.oniViolet },
|
NoiceCmdlineIconCmdline = { fg = colors.oniViolet },
|
||||||
@ -207,7 +206,13 @@ return {
|
|||||||
return overrides
|
return overrides
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
vim.cmd.colorscheme("kanagawa")
|
vim.cmd.colorscheme("kanagawa")
|
||||||
|
local colors = require("kanagawa.colors").setup().palette
|
||||||
|
vim.api.nvim_set_hl(0, "StatusLine", { bg = colors.sumiInk0 })
|
||||||
|
vim.api.nvim_set_hl(0, "WinBar", { bg = nil })
|
||||||
|
vim.api.nvim_set_hl(0, "StatusLineNC", { bg = nil })
|
||||||
|
vim.api.nvim_set_hl(0, "WinBarNC", { bg = nil })
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -1,235 +0,0 @@
|
|||||||
---@diagnostic disable: missing-fields
|
|
||||||
return {
|
|
||||||
{
|
|
||||||
"nvim-lualine/lualine.nvim",
|
|
||||||
event = "VeryLazy",
|
|
||||||
opts = function()
|
|
||||||
-- For location, show total lines
|
|
||||||
local function customLocation(str)
|
|
||||||
return string.gsub(str, "%w+", "%1" .. "/%%L", 1)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- For progress, add a fancy icon
|
|
||||||
local function customProgress(str)
|
|
||||||
return " " .. str
|
|
||||||
end
|
|
||||||
|
|
||||||
-- For filename, show the filename and the filesize
|
|
||||||
local function fileNameAndSize(str)
|
|
||||||
-- For doc, only show filename
|
|
||||||
if string.find(str, ".*/doc/.*%.txt") then
|
|
||||||
str = vim.fn.expand("%:t")
|
|
||||||
end
|
|
||||||
local size = require("lualine.components.filesize")()
|
|
||||||
return size == "" and str or str .. " [" .. size .. "]"
|
|
||||||
end
|
|
||||||
|
|
||||||
local function show_macro_recording()
|
|
||||||
local recording_register = vim.fn.reg_recording()
|
|
||||||
if recording_register == "" then
|
|
||||||
return ""
|
|
||||||
else
|
|
||||||
return "Recording @" .. recording_register
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local show_lsp_name = {
|
|
||||||
function()
|
|
||||||
local buf_ft = vim.api.nvim_get_option_value("filetype", { scope = "local" })
|
|
||||||
local clients = vim.lsp.get_clients({})
|
|
||||||
if next(clients) == nil then
|
|
||||||
return "No Active Lsp"
|
|
||||||
else
|
|
||||||
local msg = nil
|
|
||||||
for _, client in ipairs(clients) do
|
|
||||||
local filetypes = client.config.filetypes
|
|
||||||
-- Prep filetypes for indexing, some language servers only register with a single filetype so we need to
|
|
||||||
-- convert them into a blob so vim.fn.index doesn't throw a fit
|
|
||||||
if type(filetypes) == "string" then
|
|
||||||
filetypes = { filetypes }
|
|
||||||
end
|
|
||||||
|
|
||||||
if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then
|
|
||||||
if not msg then
|
|
||||||
msg = client.name
|
|
||||||
else
|
|
||||||
msg = msg .. ", " .. client.name
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return msg or "No Active Lsp"
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
icon = " LSP:",
|
|
||||||
color = { fg = "#957fb8" },
|
|
||||||
}
|
|
||||||
|
|
||||||
local macro_refresh_places = { "statusline", "winbar" }
|
|
||||||
vim.api.nvim_create_autocmd("RecordingEnter", {
|
|
||||||
callback = function()
|
|
||||||
lualine.refresh({
|
|
||||||
place = macro_refresh_places,
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd("RecordingLeave", {
|
|
||||||
callback = function()
|
|
||||||
lualine.refresh({
|
|
||||||
place = macro_refresh_places,
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
return {
|
|
||||||
options = {
|
|
||||||
icons_enabled = true,
|
|
||||||
theme = "auto",
|
|
||||||
component_separators = { left = "", right = "" },
|
|
||||||
section_separators = { left = "", right = "" },
|
|
||||||
disabled_filetypes = { "alpha", "neo-tree" },
|
|
||||||
always_divide_middle = true,
|
|
||||||
globalstatus = true,
|
|
||||||
},
|
|
||||||
winbar = {
|
|
||||||
lualine_a = {
|
|
||||||
{
|
|
||||||
"filename",
|
|
||||||
path = 1,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
lualine_b = {
|
|
||||||
{
|
|
||||||
"macro-recording",
|
|
||||||
color = {
|
|
||||||
fg = "#FF9E3B",
|
|
||||||
},
|
|
||||||
fmt = show_macro_recording,
|
|
||||||
},
|
|
||||||
show_lsp_name,
|
|
||||||
{
|
|
||||||
"diagnostics",
|
|
||||||
sources = { "nvim_diagnostic" },
|
|
||||||
symbols = { error = " ", warn = " ", info = " ", hint = "" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
lualine_c = {},
|
|
||||||
lualine_x = {
|
|
||||||
"encoding",
|
|
||||||
"fileformat",
|
|
||||||
"filetype",
|
|
||||||
},
|
|
||||||
lualine_y = {
|
|
||||||
{
|
|
||||||
"location",
|
|
||||||
fmt = customLocation,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
lualine_z = {
|
|
||||||
{
|
|
||||||
"progress",
|
|
||||||
fmt = customProgress,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
inactive_winbar = {
|
|
||||||
lualine_a = { { "filename", path = 1 } },
|
|
||||||
lualine_b = { show_lsp_name },
|
|
||||||
lualine_c = {},
|
|
||||||
lualine_x = {
|
|
||||||
"filetype",
|
|
||||||
},
|
|
||||||
lualine_y = {},
|
|
||||||
lualine_z = {},
|
|
||||||
},
|
|
||||||
sections = {
|
|
||||||
lualine_a = {
|
|
||||||
{
|
|
||||||
function()
|
|
||||||
return ""
|
|
||||||
end
|
|
||||||
},
|
|
||||||
{
|
|
||||||
color = {
|
|
||||||
fg = "#C34043",
|
|
||||||
gui = "bold,italic",
|
|
||||||
},
|
|
||||||
function()
|
|
||||||
local user = os.getenv("USER")
|
|
||||||
if user == "root" then
|
|
||||||
return user
|
|
||||||
end
|
|
||||||
return ""
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
lualine_b = {
|
|
||||||
{
|
|
||||||
"branch",
|
|
||||||
icon = "",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"diff",
|
|
||||||
symbols = { added = " ", modified = " ", removed = " " },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"macro-recording",
|
|
||||||
color = {
|
|
||||||
fg = "#FF9E3B",
|
|
||||||
},
|
|
||||||
fmt = show_macro_recording,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
lualine_c = {
|
|
||||||
{
|
|
||||||
"filename",
|
|
||||||
path = 3,
|
|
||||||
symbols = {
|
|
||||||
modified = "[+]",
|
|
||||||
readonly = "[]",
|
|
||||||
unnamed = "[No Name]",
|
|
||||||
},
|
|
||||||
fmt = fileNameAndSize,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Right
|
|
||||||
lualine_x = {
|
|
||||||
{
|
|
||||||
function()
|
|
||||||
local lazy_stats = require("lazy").stats()
|
|
||||||
local plugin_count = lazy_stats.count
|
|
||||||
local loaded_plugins = lazy_stats.loaded
|
|
||||||
return "" .. loaded_plugins .. "/" .. plugin_count .. " "
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
require("lazy.status").updates,
|
|
||||||
cond = require("lazy.status").has_updates,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
lualine_y = {
|
|
||||||
{
|
|
||||||
"buffers",
|
|
||||||
mode = 2,
|
|
||||||
show_filename_only = false,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
lualine_z = {
|
|
||||||
{ "tabs" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
inactive_sections = {},
|
|
||||||
tabline = {},
|
|
||||||
extensions = {
|
|
||||||
"aerial",
|
|
||||||
"fugitive",
|
|
||||||
"nvim-tree",
|
|
||||||
"neo-tree",
|
|
||||||
"quickfix",
|
|
||||||
"toggleterm",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user