summaryrefslogtreecommitdiff
path: root/.config/nvim/lua/core/galaxyline.lua
diff options
context:
space:
mode:
authorGustaf Rydholm <gustaf.rydholm@gmail.com>2021-07-22 00:08:36 +0200
committerGustaf Rydholm <gustaf.rydholm@gmail.com>2021-07-22 00:08:36 +0200
commitb51f1ae28924a752258e7607fbc3210f9b18eaac (patch)
tree8c8c095528990b3f6eb499dbcca15e9720e636d1 /.config/nvim/lua/core/galaxyline.lua
parentda936b0ed9ac4c171d3c7908e41af1875a82b08b (diff)
Updates based on Chris's lunarvim
Diffstat (limited to '.config/nvim/lua/core/galaxyline.lua')
-rw-r--r--.config/nvim/lua/core/galaxyline.lua315
1 files changed, 315 insertions, 0 deletions
diff --git a/.config/nvim/lua/core/galaxyline.lua b/.config/nvim/lua/core/galaxyline.lua
new file mode 100644
index 0000000..1f9f781
--- /dev/null
+++ b/.config/nvim/lua/core/galaxyline.lua
@@ -0,0 +1,315 @@
+-- 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}}})