mirror of
https://github.com/LunarVim/LunarVim.git
synced 2024-09-21 11:05:08 +02:00
319 lines
7.6 KiB
Lua
319 lines
7.6 KiB
Lua
-- if not package.loaded['galaxyline'] then
|
||
-- return
|
||
-- end
|
||
local status_ok, gl = pcall(require, "galaxyline")
|
||
if not status_ok then
|
||
return
|
||
end
|
||
|
||
-- NOTE: if someone defines colors but doesn't have them then this will break
|
||
local palette_status_ok, colors = pcall(require, lvim.colorscheme .. ".palette")
|
||
if not palette_status_ok then
|
||
colors = lvim.builtin.galaxyline.colors
|
||
end
|
||
|
||
local condition = require "galaxyline.condition"
|
||
local gls = gl.section
|
||
gl.short_line_list = { "NvimTree", "vista", "dbui", "packer" }
|
||
|
||
table.insert(gls.left, {
|
||
ViMode = {
|
||
provider = function()
|
||
-- auto change color according the vim mode
|
||
local mode_color = {
|
||
n = colors.blue,
|
||
i = colors.green,
|
||
v = colors.purple,
|
||
[""] = colors.purple,
|
||
V = colors.purple,
|
||
c = colors.magenta,
|
||
no = colors.blue,
|
||
s = colors.orange,
|
||
S = colors.orange,
|
||
[""] = colors.orange,
|
||
ic = colors.yellow,
|
||
R = colors.red,
|
||
Rv = colors.red,
|
||
cv = colors.blue,
|
||
ce = colors.blue,
|
||
r = colors.cyan,
|
||
rm = colors.cyan,
|
||
["r?"] = colors.cyan,
|
||
["!"] = colors.blue,
|
||
t = colors.blue,
|
||
}
|
||
vim.api.nvim_command("hi GalaxyViMode guifg=" .. mode_color[vim.fn.mode()])
|
||
return "▊"
|
||
end,
|
||
separator_highlight = { "NONE", colors.alt_bg },
|
||
highlight = { "NONE", colors.alt_bg },
|
||
},
|
||
})
|
||
-- print(vim.fn.getbufvar(0, 'ts'))
|
||
vim.fn.getbufvar(0, "ts")
|
||
|
||
table.insert(gls.left, {
|
||
GitIcon = {
|
||
provider = function()
|
||
return " "
|
||
end,
|
||
condition = condition.check_git_workspace,
|
||
separator = " ",
|
||
separator_highlight = { "NONE", colors.alt_bg },
|
||
highlight = { colors.orange, colors.alt_bg },
|
||
},
|
||
})
|
||
|
||
table.insert(gls.left, {
|
||
GitBranch = {
|
||
provider = "GitBranch",
|
||
condition = condition.check_git_workspace,
|
||
separator = " ",
|
||
separator_highlight = { "NONE", colors.alt_bg },
|
||
highlight = { colors.grey, colors.alt_bg },
|
||
},
|
||
})
|
||
|
||
table.insert(gls.left, {
|
||
DiffAdd = {
|
||
provider = "DiffAdd",
|
||
condition = condition.hide_in_width,
|
||
icon = " ",
|
||
highlight = { colors.green, colors.alt_bg },
|
||
},
|
||
})
|
||
|
||
table.insert(gls.left, {
|
||
DiffModified = {
|
||
provider = "DiffModified",
|
||
condition = condition.hide_in_width,
|
||
icon = " 柳",
|
||
highlight = { colors.blue, colors.alt_bg },
|
||
},
|
||
})
|
||
|
||
table.insert(gls.left, {
|
||
DiffRemove = {
|
||
provider = "DiffRemove",
|
||
condition = condition.hide_in_width,
|
||
icon = " ",
|
||
highlight = { colors.red, colors.alt_bg },
|
||
},
|
||
})
|
||
|
||
table.insert(gls.left, {
|
||
Filler = {
|
||
provider = function()
|
||
return " "
|
||
end,
|
||
highlight = { colors.grey, colors.alt_bg },
|
||
},
|
||
})
|
||
-- get output from shell command
|
||
function os.capture(cmd, raw)
|
||
local f = assert(io.popen(cmd, "r"))
|
||
local s = assert(f:read "*a")
|
||
f:close()
|
||
if raw then
|
||
return s
|
||
end
|
||
s = string.gsub(s, "^%s+", "")
|
||
s = string.gsub(s, "%s+$", "")
|
||
s = string.gsub(s, "[\n\r]+", " ")
|
||
return s
|
||
end
|
||
-- cleanup virtual env
|
||
local function env_cleanup(venv)
|
||
if string.find(venv, "/") then
|
||
local final_venv = venv
|
||
for w in venv:gmatch "([^/]+)" do
|
||
final_venv = w
|
||
end
|
||
venv = final_venv
|
||
end
|
||
return venv
|
||
end
|
||
local PythonEnv = function()
|
||
if vim.bo.filetype == "python" then
|
||
local venv = os.getenv "CONDA_DEFAULT_ENV"
|
||
if venv ~= nil then
|
||
return " (" .. env_cleanup(venv) .. ")"
|
||
end
|
||
venv = os.getenv "VIRTUAL_ENV"
|
||
if venv ~= nil then
|
||
return " (" .. env_cleanup(venv) .. ")"
|
||
end
|
||
return ""
|
||
end
|
||
return ""
|
||
end
|
||
table.insert(gls.left, {
|
||
VirtualEnv = {
|
||
provider = PythonEnv,
|
||
event = "BufEnter",
|
||
highlight = { colors.green, colors.alt_bg },
|
||
},
|
||
})
|
||
|
||
table.insert(gls.right, {
|
||
DiagnosticError = {
|
||
provider = "DiagnosticError",
|
||
icon = " ",
|
||
highlight = { colors.red, colors.alt_bg },
|
||
},
|
||
})
|
||
table.insert(gls.right, {
|
||
DiagnosticWarn = {
|
||
provider = "DiagnosticWarn",
|
||
icon = " ",
|
||
highlight = { colors.orange, colors.alt_bg },
|
||
},
|
||
})
|
||
|
||
table.insert(gls.right, {
|
||
DiagnosticInfo = {
|
||
provider = "DiagnosticInfo",
|
||
icon = " ",
|
||
highlight = { colors.yellow, colors.alt_bg },
|
||
},
|
||
})
|
||
|
||
table.insert(gls.right, {
|
||
DiagnosticHint = {
|
||
provider = "DiagnosticHint",
|
||
icon = " ",
|
||
highlight = { colors.blue, colors.alt_bg },
|
||
},
|
||
})
|
||
|
||
table.insert(gls.right, {
|
||
TreesitterIcon = {
|
||
provider = function()
|
||
if next(vim.treesitter.highlighter.active) ~= nil then
|
||
return " "
|
||
end
|
||
return ""
|
||
end,
|
||
separator = " ",
|
||
separator_highlight = { "NONE", colors.alt_bg },
|
||
highlight = { colors.green, colors.alt_bg },
|
||
},
|
||
})
|
||
|
||
local function get_attached_provider_name(msg)
|
||
msg = msg or "LSP Inactive"
|
||
local buf_clients = vim.lsp.buf_get_clients()
|
||
local utils = require "utils"
|
||
if next(buf_clients) == nil then
|
||
return msg
|
||
end
|
||
local buf_ft = vim.bo.filetype
|
||
local buf_client_names = {}
|
||
local null_ls_providers = require("lsp.null-ls").get_registered_providers_by_filetype(buf_ft)
|
||
for _, client in pairs(buf_clients) do
|
||
if client.name ~= "null-ls" then
|
||
table.insert(buf_client_names, client.name)
|
||
end
|
||
end
|
||
utils.list_extend_unique(buf_client_names, null_ls_providers)
|
||
return table.concat(buf_client_names, ", ")
|
||
end
|
||
|
||
table.insert(gls.right, {
|
||
ShowLspClient = {
|
||
provider = get_attached_provider_name,
|
||
condition = function()
|
||
local tbl = { ["dashboard"] = true, [" "] = true }
|
||
if tbl[vim.bo.filetype] then
|
||
return false
|
||
end
|
||
return true
|
||
end,
|
||
icon = " ",
|
||
highlight = { colors.grey, colors.alt_bg },
|
||
},
|
||
})
|
||
|
||
table.insert(gls.right, {
|
||
LineInfo = {
|
||
provider = "LineColumn",
|
||
separator = " ",
|
||
separator_highlight = { "NONE", colors.alt_bg },
|
||
highlight = { colors.grey, colors.alt_bg },
|
||
},
|
||
})
|
||
|
||
table.insert(gls.right, {
|
||
PerCent = {
|
||
provider = "LinePercent",
|
||
separator = " ",
|
||
separator_highlight = { "NONE", colors.alt_bg },
|
||
highlight = { colors.grey, colors.alt_bg },
|
||
},
|
||
})
|
||
|
||
table.insert(gls.right, {
|
||
Tabstop = {
|
||
provider = function()
|
||
local label = "Spaces: "
|
||
if not vim.api.nvim_buf_get_option(0, "expandtab") then
|
||
label = "Tab size: "
|
||
end
|
||
return label .. vim.api.nvim_buf_get_option(0, "shiftwidth") .. " "
|
||
end,
|
||
condition = condition.hide_in_width,
|
||
separator = " ",
|
||
separator_highlight = { "NONE", colors.alt_bg },
|
||
highlight = { colors.grey, colors.alt_bg },
|
||
},
|
||
})
|
||
|
||
table.insert(gls.right, {
|
||
BufferType = {
|
||
provider = "FileTypeName",
|
||
condition = condition.hide_in_width,
|
||
separator = " ",
|
||
separator_highlight = { "NONE", colors.alt_bg },
|
||
highlight = { colors.grey, colors.alt_bg },
|
||
},
|
||
})
|
||
|
||
table.insert(gls.right, {
|
||
FileEncode = {
|
||
provider = "FileEncode",
|
||
condition = condition.hide_in_width,
|
||
separator = " ",
|
||
separator_highlight = { "NONE", colors.alt_bg },
|
||
highlight = { colors.grey, colors.alt_bg },
|
||
},
|
||
})
|
||
|
||
table.insert(gls.right, {
|
||
Space = {
|
||
provider = function()
|
||
return " "
|
||
end,
|
||
separator = " ",
|
||
separator_highlight = { "NONE", colors.alt_bg },
|
||
highlight = { colors.grey, colors.alt_bg },
|
||
},
|
||
})
|
||
|
||
table.insert(gls.short_line_left, {
|
||
BufferType = {
|
||
provider = "FileTypeName",
|
||
separator = " ",
|
||
separator_highlight = { "NONE", colors.alt_bg },
|
||
highlight = { colors.alt_bg, colors.alt_bg },
|
||
},
|
||
})
|
||
|
||
table.insert(gls.short_line_left, {
|
||
SFileName = {
|
||
provider = "SFileName",
|
||
condition = condition.buffer_not_empty,
|
||
highlight = { colors.alt_bg, colors.alt_bg },
|
||
},
|
||
})
|
||
|
||
--table.insert(gls.short_line_right[1] = {BufferIcon = {provider = 'BufferIcon', highlight = {colors.grey, colors.alt_bg}}})
|