summaryrefslogtreecommitdiff
path: root/lua/core/galaxyline.lua
diff options
context:
space:
mode:
authorchristianchiarulli <[email protected]>2021-07-12 21:11:43 -0400
committerchristianchiarulli <[email protected]>2021-07-12 21:11:43 -0400
commit2423fcdc904ec1413edaaac1fd8b9c0971f4a869 (patch)
tree388a51b436b364009dc83e301270657f40d8212a /lua/core/galaxyline.lua
parent476f7bb22f1d6d696ad9c2e2cc6e574167aef841 (diff)
refactor single file
Diffstat (limited to 'lua/core/galaxyline.lua')
-rw-r--r--lua/core/galaxyline.lua353
1 files changed, 353 insertions, 0 deletions
diff --git a/lua/core/galaxyline.lua b/lua/core/galaxyline.lua
new file mode 100644
index 00000000..0e0ce1f4
--- /dev/null
+++ b/lua/core/galaxyline.lua
@@ -0,0 +1,353 @@
+local M = {}
+M.config = function()
+ O.plugin.galaxyline = {
+ active = true,
+ colors = {
+ alt_bg = "#2E2E2E",
+ grey = "#858585",
+ blue = "#569CD6",
+ green = "#608B4E",
+ yellow = "#DCDCAA",
+ orange = "#FF8800",
+ purple = "#C586C0",
+ magenta = "#D16D9E",
+ cyan = "#4EC9B0",
+ red = "#D16969",
+ error_red = "#F44747",
+ warning_orange = "#FF8800",
+ info_yellow = "#FFCC66",
+ hint_blue = "#9CDCFE",
+ },
+ }
+end
+
+M.setup = function()
+ -- 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()
+ -- 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 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.grey, colors.alt_bg },
+ },
+ })
+
+ table.insert(gls.short_line_left, {
+ SFileName = {
+ provider = "SFileName",
+ condition = condition.buffer_not_empty,
+ highlight = { colors.grey, colors.alt_bg },
+ },
+ })
+
+ --table.insert(gls.short_line_right[1] = {BufferIcon = {provider = 'BufferIcon', highlight = {colors.grey, colors.alt_bg}}})
+end
+
+return M