-- if not package.loaded['galaxyline'] then -- return -- end local Log = require "core.log" local status_ok, gl = pcall(require, "galaxyline") if not status_ok then Log:get_default().error "Failed to load galaxyline" return end -- NOTE: if someone defines colors but doesn't have them then this will break local palette_status_ok, colors = pcall(require, options.colorscheme .. ".palette") if not palette_status_ok then colors = options.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() local alias = { n = "NORMAL", i = "INSERT", c = "COMMAND", V = "VISUAL", [""] = "VISUAL", v = "VISUAL", R = "REPLACE", } local alias_mode = alias[vim.fn.mode()] if alias_mode == nil then alias_mode = vim.fn.mode() end return alias_mode .. " " end, separator_highlight = { "NONE", colors.alt_bg }, highlight = { colors.grey, colors.alt_bg }, }, }) 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() if next(buf_clients) == nil then return msg end local buf_client_names = {} for _, client in pairs(buf_clients) do if client.name ~= "null-ls" then table.insert(buf_client_names, client.name) end end local null_ls = require "lsp.null-ls" local null_ls_providers = null_ls.list_supported_provider_names(vim.bo.filetype) vim.list_extend(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 }, }, })