From b51f1ae28924a752258e7607fbc3210f9b18eaac Mon Sep 17 00:00:00 2001 From: Gustaf Rydholm Date: Thu, 22 Jul 2021 00:08:36 +0200 Subject: Updates based on Chris's lunarvim --- .config/nvim/lua/core/galaxyline.lua | 315 +++++++++++++++++++++++++++++++++++ 1 file changed, 315 insertions(+) create mode 100644 .config/nvim/lua/core/galaxyline.lua (limited to '.config/nvim/lua/core/galaxyline.lua') 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}}}) -- cgit v1.2.3-70-g09d2