my-nvim-lua/lua/statusline.lua

205 lines
4.9 KiB
Lua
Raw Normal View History

2021-03-13 01:23:02 +00:00
local gl = require("galaxyline")
2021-03-07 14:22:30 +00:00
local gls = gl.section
2021-06-06 05:35:53 +00:00
local condition = require("galaxyline.condition")
2021-04-02 05:36:20 +00:00
2021-06-02 01:39:16 +00:00
gl.short_line_list = {" "}
2021-03-07 14:22:30 +00:00
local colors = require "themes/onedark"
gls.left[1] = {
FirstElement = {
provider = function() return '' end,
highlight = { colors.nord_blue, colors.nord_blue }
},
2021-03-08 05:24:53 +00:00
}
2021-03-07 14:22:30 +00:00
gls.left[2] = {
2021-04-02 05:36:20 +00:00
statusIcon = {
2021-03-13 01:23:02 +00:00
provider = function()
return ""
2021-03-13 01:23:02 +00:00
end,
highlight = {colors.statusline_bg, colors.nord_blue},
2021-05-25 02:31:14 +00:00
separator = "",
separator_highlight = {colors.nord_blue, colors.lightbg}
2021-03-13 01:23:02 +00:00
}
2021-03-07 14:22:30 +00:00
}
2021-03-13 01:23:02 +00:00
gls.left[3] = {
FileIcon = {
provider = "FileIcon",
2021-06-06 05:35:53 +00:00
condition = condition.buffer_not_empty,
highlight = {colors.white, colors.lightbg}
2021-03-13 01:23:02 +00:00
}
2021-03-07 14:22:30 +00:00
}
gls.left[4] = {
2021-03-13 01:23:02 +00:00
FileName = {
2021-05-25 02:31:14 +00:00
provider = {"FileName"},
2021-06-06 05:35:53 +00:00
condition = condition.buffer_not_empty,
highlight = {colors.white, colors.lightbg},
2021-05-25 02:31:14 +00:00
separator = "",
2021-06-01 18:47:46 +00:00
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},
2021-06-01 18:47:46 +00:00
separator = "",
separator_highlight = {colors.lightbg2, colors.statusline_bg}
2021-03-13 01:23:02 +00:00
}
2021-03-08 05:24:53 +00:00
}
2021-03-07 14:22:30 +00:00
local checkwidth = function()
2021-03-13 01:23:02 +00:00
local squeeze_width = vim.fn.winwidth(0) / 2
2021-05-25 02:31:14 +00:00
if squeeze_width > 30 then
2021-03-13 01:23:02 +00:00
return true
end
return false
2021-03-07 14:22:30 +00:00
end
2021-06-01 18:47:46 +00:00
gls.left[6] = {
2021-03-13 01:23:02 +00:00
DiffAdd = {
provider = "DiffAdd",
condition = checkwidth,
2021-05-25 02:31:14 +00:00
icon = "",
highlight = {colors.white, colors.statusline_bg}
2021-03-13 01:23:02 +00:00
}
2021-03-07 14:22:30 +00:00
}
2021-06-01 18:47:46 +00:00
gls.left[7] = {
2021-03-13 01:23:02 +00:00
DiffModified = {
provider = "DiffModified",
condition = checkwidth,
2021-05-25 02:31:14 +00:00
icon = "",
highlight = {colors.grey_fg2, colors.statusline_bg}
2021-03-13 01:23:02 +00:00
}
2021-03-07 14:22:30 +00:00
}
2021-06-01 18:47:46 +00:00
gls.left[8] = {
2021-03-13 01:23:02 +00:00
DiffRemove = {
provider = "DiffRemove",
condition = checkwidth,
2021-05-25 02:31:14 +00:00
icon = "",
highlight = {colors.grey_fg2, colors.statusline_bg}
2021-03-13 01:23:02 +00:00
}
2021-03-07 14:22:30 +00:00
}
2021-06-01 18:47:46 +00:00
gls.left[9] = {
2021-03-13 01:23:02 +00:00
DiagnosticError = {
provider = "DiagnosticError",
icon = "",
highlight = {colors.red, colors.statusline_bg}
2021-03-13 01:23:02 +00:00
}
2021-03-07 14:22:30 +00:00
}
2021-06-01 18:47:46 +00:00
gls.left[10] = {
2021-03-13 01:23:02 +00:00
DiagnosticWarn = {
provider = "DiagnosticWarn",
icon = "",
highlight = {colors.yellow, colors.statusline_bg}
2021-03-13 01:23:02 +00:00
}
2021-03-07 14:22:30 +00:00
}
2021-03-08 05:24:53 +00:00
gls.right[1] = {
2021-06-06 05:35:53 +00:00
lsp_status = {
provider = function()
2021-06-06 05:35:53 +00:00
local clients = vim.lsp.get_active_clients()
if next(clients) ~= nil then
return " " .. "" .. " LSP "
2021-06-06 05:35:53 +00:00
else
return ""
end
end,
highlight = {colors.grey_fg2, colors.statusline_bg}
2021-06-06 05:35:53 +00:00
}
}
gls.right[2] = {
2021-03-13 01:23:02 +00:00
GitIcon = {
provider = function()
2021-05-25 02:31:14 +00:00
return ""
2021-03-13 01:23:02 +00:00
end,
condition = require("galaxyline.provider_vcs").check_git_workspace,
highlight = {colors.grey_fg2, colors.lightbg},
2021-05-25 02:31:14 +00:00
separator = "",
separator_highlight = {colors.lightbg, colors.statusline_bg}
2021-03-13 01:23:02 +00:00
}
2021-03-08 07:34:48 +00:00
}
2021-06-06 05:35:53 +00:00
gls.right[3] = {
2021-03-13 01:23:02 +00:00
GitBranch = {
provider = "GitBranch",
condition = require("galaxyline.provider_vcs").check_git_workspace,
highlight = {colors.grey_fg2, colors.lightbg}
2021-03-13 01:23:02 +00:00
}
2021-03-08 07:34:48 +00:00
}
2021-06-06 05:35:53 +00:00
gls.right[4] = {
2021-05-25 02:31:14 +00:00
viMode_icon = {
2021-03-13 01:23:02 +00:00
provider = function()
2021-05-25 02:31:14 +00:00
return ""
2021-03-13 01:23:02 +00:00
end,
highlight = {colors.statusline_bg, colors.red},
2021-05-25 02:31:14 +00:00
separator = "",
separator_highlight = {colors.red, colors.lightbg}
2021-03-13 01:23:02 +00:00
}
2021-03-08 05:24:53 +00:00
}
2021-06-06 05:35:53 +00:00
gls.right[5] = {
2021-04-02 05:36:20 +00:00
ViMode = {
2021-03-13 01:23:02 +00:00
provider = function()
local alias = {
2021-05-25 02:31:14 +00:00
n = "Normal",
i = "Insert",
c = "Command",
V = "Visual",
[""] = "Visual",
v = "Visual",
R = "Replace"
2021-03-13 01:23:02 +00:00
}
2021-05-25 02:54:22 +00:00
local current_Mode = alias[vim.fn.mode()]
2021-05-25 11:37:37 +00:00
if current_Mode == nil then
return " Terminal "
else
2021-05-25 02:54:22 +00:00
return " " .. current_Mode .. " "
end
2021-03-13 01:23:02 +00:00
end,
2021-05-25 02:31:14 +00:00
highlight = {colors.red, colors.lightbg}
2021-03-13 01:23:02 +00:00
}
2021-03-07 14:22:30 +00:00
}
2021-06-06 05:35:53 +00:00
gls.right[6] = {
some_icon = {
2021-05-25 02:31:14 +00:00
provider = function()
2021-06-06 05:35:53 +00:00
return ""
2021-05-25 02:31:14 +00:00
end,
separator = "",
2021-06-01 18:47:46 +00:00
separator_highlight = {colors.green, colors.lightbg},
2021-05-25 02:31:14 +00:00
highlight = {colors.lightbg, colors.green}
2021-03-13 01:23:02 +00:00
}
2021-03-07 14:22:30 +00:00
}
2021-03-08 06:19:27 +00:00
2021-06-06 05:35:53 +00:00
gls.right[7] = {
line_percentage = {
2021-03-13 01:23:02 +00:00
provider = function()
2021-06-06 05:35:53 +00:00
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 .. "% "
2021-03-13 01:23:02 +00:00
end,
2021-05-25 02:31:14 +00:00
highlight = {colors.green, colors.lightbg}
2021-03-13 01:23:02 +00:00
}
2021-03-08 06:19:27 +00:00
}