| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320 | -- if not package.loaded['galaxyline'] then--   return-- endlocal Log = require "core.log"local status_ok, gl = pcall(require, "galaxyline")if not status_ok then  Log:get_default().error "Failed to load galaxyline"  returnend-- NOTE: if someone defines colors but doesn't have them then this will breaklocal palette_status_ok, colors = pcall(require, lvim.colorscheme .. ".palette")if not palette_status_ok then  colors = lvim.builtin.galaxyline.colorsendlocal condition = require "galaxyline.condition"local gls = gl.sectiongl.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 commandfunction 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 send-- cleanup virtual envlocal 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 venvendlocal 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 ""endtable.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_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  vim.list_extend(buf_client_names, null_ls_providers)  return table.concat(buf_client_names, ", ")endtable.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}}})
 |