-- 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, O.colorscheme .. ".palette") if not palette_status_ok then colors = O.plugin.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 get_lsp_client = function(msg) msg = msg or "LSP Inactive" local buf_ft = vim.api.nvim_buf_get_option(0, "filetype") local clients = vim.lsp.get_active_clients() if next(clients) == nil then return msg end local lsps = "" for _, client in ipairs(clients) do local filetypes = client.config.filetypes if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then -- print(client.name) if lsps == "" then -- print("first", lsps) lsps = client.name else if not string.find(lsps, client.name) then lsps = lsps .. ", " .. client.name end -- print("more", lsps) end end end if lsps == "" then return msg else return lsps end end table.insert(gls.right, { ShowLspClient = { provider = get_lsp_client, 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() return "Spaces: " .. 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}}})