You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
my-nvim-lua/lua/plugins/statusline.lua

219 lines
5.4 KiB
Lua

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

local present1, gl = pcall(require, "galaxyline")
local present2, condition = pcall(require, "galaxyline.condition")
if not (present1 or present2) then
return
end
local gls = gl.section
gl.short_line_list = {" "}
local global_theme = "themes/" .. vim.g.nvchad_theme
local colors = require(global_theme)
gls.left[1] = {
FirstElement = {
provider = function()
return ""
end,
highlight = {colors.nord_blue, colors.nord_blue}
}
}
gls.left[2] = {
statusIcon = {
provider = function()
return ""
end,
highlight = {colors.statusline_bg, colors.nord_blue},
separator = "",
separator_highlight = {colors.nord_blue, colors.lightbg}
}
}
gls.left[3] = {
FileIcon = {
provider = "FileIcon",
condition = condition.buffer_not_empty,
highlight = {colors.white, colors.lightbg}
}
}
gls.left[4] = {
FileName = {
provider = {"FileName"},
condition = condition.buffer_not_empty,
highlight = {colors.white, colors.lightbg},
separator = "",
separator_highlight = {colors.lightbg, colors.lightbg2}
}
}
gls.left[5] = {
current_dir = {
provider = function()
local dir_name = vim.fn.fnamemodify(vim.fn.getcwd(), ":t")
return "" .. dir_name .. " "
end,
highlight = {colors.grey_fg2, colors.lightbg2},
separator = "",
separator_highlight = {colors.lightbg2, colors.statusline_bg}
}
}
local checkwidth = function()
local squeeze_width = vim.fn.winwidth(0) / 2
if squeeze_width > 30 then
return true
end
return false
end
gls.left[6] = {
DiffAdd = {
provider = "DiffAdd",
condition = checkwidth,
icon = "",
highlight = {colors.white, colors.statusline_bg}
}
}
gls.left[7] = {
DiffModified = {
provider = "DiffModified",
condition = checkwidth,
icon = "",
highlight = {colors.grey_fg2, colors.statusline_bg}
}
}
gls.left[8] = {
DiffRemove = {
provider = "DiffRemove",
condition = checkwidth,
icon = "",
highlight = {colors.grey_fg2, colors.statusline_bg}
}
}
gls.left[9] = {
DiagnosticError = {
provider = "DiagnosticError",
icon = "",
highlight = {colors.red, colors.statusline_bg}
}
}
gls.left[10] = {
DiagnosticWarn = {
provider = "DiagnosticWarn",
icon = "",
highlight = {colors.yellow, colors.statusline_bg}
}
}
gls.right[1] = {
lsp_status = {
provider = function()
local clients = vim.lsp.get_active_clients()
if next(clients) ~= nil then
local buf_ft = vim.api.nvim_buf_get_option(0, "filetype")
for _, client in ipairs(clients) do
local filetypes = client.config.filetypes
if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then
return " " .. "" .. " LSP "
end
end
return ""
else
return ""
end
end,
highlight = {colors.grey_fg2, colors.statusline_bg}
}
}
gls.right[2] = {
GitIcon = {
provider = function()
return ""
end,
condition = require("galaxyline.condition").check_git_workspace,
highlight = {colors.grey_fg2, colors.statusline_bg},
separator = " ",
separator_highlight = {colors.statusline_bg, colors.statusline_bg}
}
}
gls.right[3] = {
GitBranch = {
provider = "GitBranch",
condition = require("galaxyline.condition").check_git_workspace,
highlight = {colors.grey_fg2, colors.statusline_bg}
}
}
gls.right[4] = {
viMode_icon = {
provider = function()
return ""
end,
highlight = {colors.statusline_bg, colors.red},
separator = "",
separator_highlight = {colors.red, colors.statusline_bg}
}
}
gls.right[5] = {
ViMode = {
provider = function()
local alias = {
n = "Normal",
i = "Insert",
c = "Command",
V = "Visual",
[""] = "Visual",
v = "Visual",
R = "Replace"
}
local current_Mode = alias[vim.fn.mode()]
if current_Mode == nil then
return " Terminal "
else
return " " .. current_Mode .. " "
end
end,
highlight = {colors.red, colors.lightbg}
}
}
gls.right[6] = {
some_icon = {
provider = function()
return ""
end,
separator = "",
separator_highlight = {colors.green, colors.lightbg},
highlight = {colors.lightbg, colors.green}
}
}
gls.right[7] = {
line_percentage = {
provider = function()
local current_line = vim.fn.line(".")
local total_line = vim.fn.line("$")
if current_line == 1 then
return " Top "
elseif current_line == vim.fn.line("$") then
return " Bot "
end
local result, _ = math.modf((current_line / total_line) * 100)
return " " .. result .. "% "
end,
highlight = {colors.green, colors.lightbg}
}
}