From 7f16820fb96009d98c65ee57bc57aa890c23a751 Mon Sep 17 00:00:00 2001 From: Price Hiller Date: Thu, 16 Dec 2021 09:25:09 -0600 Subject: [PATCH] Lualine, blankline updates --- lua/plugins/galaxy-line.lua | 566 +++++++++++++++++++++++++++++++ lua/plugins/indent-blankline.lua | 21 +- lua/plugins/lualine.lua | 78 ++--- lua/user_settings.lua | 3 - 4 files changed, 602 insertions(+), 66 deletions(-) create mode 100644 lua/plugins/galaxy-line.lua diff --git a/lua/plugins/galaxy-line.lua b/lua/plugins/galaxy-line.lua new file mode 100644 index 0000000..98e8b55 --- /dev/null +++ b/lua/plugins/galaxy-line.lua @@ -0,0 +1,566 @@ +local present, gl = pcall(require, "galaxyline") +if not present then + return +end + +local gls = gl.section +local fileinfo = require('galaxyline.provider_fileinfo') +local iconz = require("nvim-nonicons") + +gl.short_line_list = {'plug', 'fugitive', 'NvimTree', 'vista', 'dbui', 'packer', 'startify', 'coq'} + +local icons = { + sep = { + right = "", + left = "" + }, + diagnostic = { + -- error = " ", + error = iconz.get("x-circle-fill"), + -- warn = " ", + warn = iconz.get("alert"), + -- info = " " + info = iconz.get("info") + }, + diff = { + added = iconz.get("diff-added"), + modified = iconz.get("diff-modified"), + removed = iconz.get("diff-removed"), + -- add = " ", + -- modified = " ", + -- remove = " " + }, + git = iconz.get("git-branch"), + line_nr = iconz.get("list-ordered"), + file = { + read_only = '', + -- modified = '⨁ ', + -- modified = '✎', + modified = iconz.get("pencil"), + }, + normal = iconz.get("vim-normal-mode"), + insert = iconz.get("vim-insert-mode"), + command = iconz.get("vim-command-mode"), + visual = iconz.get("vim-visual-mode"), + replace = iconz.get("vim-replace-mode"), + selection = iconz.get("vim-select-mode"), + terminal = iconz.get("terminal"), + visual_block = iconz.get("field") + -- terminal = iconz.get("vim-terminal-mode") +} + +local colors = { + main = "#ff87ff", + bg_alt = "#0B0C15", + main_bg = "#262626", + lightbg = "#21252B", + commented = "#5c6370", + grey = "#3c4048", + line_bg = "#282c34", + creamydark = "#282c34", + purple = "#252930", + cyan = "#00FFFF", + nord = "#81A1C1", + lightblue = "#81a1c1", + darkblue = "#61afef", + blue = "#61afef", + limegreen = "#bbe67e", + green = "#7ed491", + fg_green = "#65a380", + creamygreen = "#a3be8c", + yellow = "#cccc00", + creamyorange = "#ff8800", + orange = "#FF8800", + bg = "#000B0C15", + fg = "#D8DEE9", + magenta = "#c678dd", + red = "#df8890", + crimsonRed = "#990000", + crimsonRed2 = "#ff4d4d", + greenYel = "#EBCB8B", + white = "#d8dee9", + brown = "#91684a", + teal = '#23D4AC', + blue2 = '#5c5c81', + icon_inactive= '#9896AA' +} + +local mode_map = { + -- n = {" NORMAL ", colors.red}, + -- i = {" INSERT ", colors.green}, + -- c = {" COMMAND ", colors.orange}, + -- v = {" VISUAL ", colors.lightblue}, + n = {icons.normal .. " NORMAL ", colors.red}, + no = {icons.normal .. " NORMAL ", colors.red}, + i = {icons.insert .. " INSERT ", colors.green}, + ic = {icons.insert .. " INSERT ", colors.green}, + c = {icons.command .. " COMMAND ", colors.orange}, + ce = {icons.command .. " COMMAND ", colors.orange}, + cv = {icons.command .. " COMMAND ", colors.orange}, + v = {icons.visual .. " VISUAL ", colors.lightblue}, + V = {icons.visual .. " VISUAL ", colors.lightblue}, + [""] = {icons.visual .. " VISUAL" .. icons.visual_block .. " ", colors.brown}, + R = {icons.replace .. " REPLACE ", colors.crimsonRed2}, + ['r?'] = {icons.replace .. " REPLACE ", colors.lightblue}, + Rv = {icons.replace .. " REPLACE ", colors.crimsonRed2}, + r = {icons.replace .. " REPLACE ", colors.blue2}, + rm = {icons.replace .. " REPLACE ", colors.blue2}, + s = {icons.selection .. " SELECT ", colors.greenYelenYel}, + S = {icons.selection .. " SELECT ", colors.greenYelenYel}, + [''] = {icons.selection .. " SELECT ", colors.greenYelenYel}, + t = {icons.terminal .. " TERMINAL ", colors.magenta}, + ['!'] = { " ! ", colors.crimsonRed} +} + +----------------------------=== Funcs ===-------------------------- + +local function mode_label() return mode_map[vim.fn.mode()][1] or 'N/A' end +local function mode_hl() return mode_map[vim.fn.mode()][2] or colors.main end + +local function highlight1(group, fg, gui) + local cmd = string.format('highlight %s guifg=%s', group, fg) + if gui ~= nil then cmd = cmd .. ' gui=' .. gui end + vim.cmd(cmd) +end + +local function highlight2(group, bg, fg, gui) + local cmd = string.format('highlight %s guibg=%s guifg=%s', group, bg, fg) + if gui ~= nil then cmd = cmd .. ' gui=' .. gui end + vim.cmd(cmd) +end + +local function get_coc_lsp() + local f, status = pcall(vim.api.nvim_get_var, 'coc_status') + if not f or status == '' then + return nil + else + return status + end +end + +local function get_diagnostic_info() + if vim.fn.exists('*coc#rpc#start_server') == 1 then + return get_coc_lsp() + end + return nil +end + +local function get_current_func() + local has_func, func_name = pcall(vim.api.nvim_buf_get_var, 0, 'coc_current_function') + if not has_func then return nil end + return func_name +end + +local function get_function_info() + if vim.fn.exists('*coc#rpc#start_server') == 1 then + return get_current_func() + end + return '' +end + +CocStatus = get_diagnostic_info +CocFunc = get_function_info + +local checkwidth = function() + local squeeze_width = vim.fn.winwidth(0) / 2 + if squeeze_width > 40 then + return true + end + return false +end + +local function file_name(is_active, highlight_group) + local normal_fg = is_active and colors.creamydark or colors.blue2 + local modified_fg = is_active and "#ff0000" or "#cc8800" + if vim.bo.modifiable then + if vim.bo.modified then + vim.api.nvim_command('hi ' .. highlight_group .. ' guifg='.. modified_fg .. ' gui=bold') + else + vim.api.nvim_command('hi ' .. highlight_group .. ' guifg='.. normal_fg .. ' gui=NONE') + end + end + local fname = fileinfo.get_current_file_name(icons.file.modified, icons.file.read_only) + if (require("galaxyline.condition").check_git_workspace()) and checkwidth() then + local git_dir = require("galaxyline.provider_vcs").get_git_dir(vim.fn.expand("%:p")) + local current_dir = vim.fn.expand("%:p:h") + if git_dir == current_dir .. "/.git" or git_dir == nil then + return fname + end + local get_path_from_git_root = current_dir:sub(#git_dir - 3) + return get_path_from_git_root .. "/" .. fname + end + return fname +end + +local white_space = function() return ' ' end + +local function trailing_whitespace() + local trail = vim.fn.search("\\s$", "nw") + if trail ~= 0 then + return ' ' + else + return nil + end +end + +local TrailingWhiteSpace = trailing_whitespace + +local check_git_width = function() + return checkwidth() and require("galaxyline.condition").check_git_workspace() +end + +local check_git_terminal_workspace = function() + return not (vim.fn.mode() == 't') and require("galaxyline.condition").check_git_workspace() +end + +----------------------------=== Components ===-------------------------- + +----------------------------=== Left ===-------------------------- + +local i = 1 +gls.left[i] = { + leftRounded = { + provider = function() + return "" + end, + highlight = 'GalaxyViModeInv' + } +} + +i = i + 1 +gls.left[i] = { + ViMode = { + provider = function() + highlight2('GalaxyViMode', mode_hl(), colors.main_bg, 'bold') + highlight1('GalaxyViModeInv', mode_hl(), 'bold') + return string.format(' %s', mode_label()) + end, + } +} + +i = i + 1 +gls.left[i] = { + WhiteSpace = { + provider = function() + highlight2('SecondGalaxyViMode', mode_hl(), colors.white, 'bold') + end, + separator = "", + separator_highlight = 'SecondGalaxyViMode' + } +} + +i = i + 1 +gls.left[i] = { + FileIcon = { + provider = "FileIcon", + separator = " ", + separator_highlight = {colors.white, colors.white}, + highlight = {colors.creamydark, colors.white} + } +} + +i = i + 1 +gls.left[i] = { + FileName = { + provider = function() return file_name(true, 'GalaxyFileName') end, + condition = require('galaxyline.condition').buffer_not_empty, + highlight = {colors.creamydark, colors.white}, + } +} + +i = i + 1 +gls.left[i] = { + teech = { + provider = function() + return "" + end, + separator = "", + highlight = {colors.white, colors.main_bg} + } +} + +i = i + 1 +gls.left[i] = { + Space = { + provider = white_space, + highlight = {colors.bg, colors.main_bg} + } +} +i = i + 1 +gls.left[i] = { + DiagnosticError = { + provider = "DiagnosticError", + -- icon = "  ", + icon = " " .. icons.diagnostic.error .. " ", + highlight = {colors.red, colors.main_bg} + } +} + +i = i + 1 +gls.left[i] = { + Space = { + provider = white_space, + highlight = {colors.bg, colors.main_bg}, + condition = function() + return require('galaxyline.provider_diagnostic').get_diagnostic_error() ~= '' + end + } +} + +i = i + 1 +gls.left[i] = { + DiagnosticWarn = { + provider = "DiagnosticWarn", + -- icon = "  ", + icon = " " .. icons.diagnostic.warn .. " ", + highlight = {colors.yellow, colors.main_bg} + } +} + +i = i + 1 +gls.left[i] = { + Space = { + provider = white_space, + highlight = {colors.bg, colors.main_bg}, + condition = function() + return require('galaxyline.provider_diagnostic').get_diagnostic_warn() ~= '' + end + } +} + +i = i + 1 +gls.left[i] = { + DiagnosticInfo = { + provider = "DiagnosticInfo", + -- icon = "  ", + icon = " " .. icons.diagnostic.info .. " ", + highlight = {colors.blue, colors.main_bg} + } +} + +i = i + 1 +gls.left[i] = { + Space = { + provider = white_space, + highlight = {colors.bg, colors.main_bg}, + condition = function() + return require('galaxyline.provider_diagnostic').get_diagnostic_info() ~= '' + end + } +} + +i = i + 1 +gls.left[i] = { + Space = { + provider = white_space, + highlight = {colors.bg, colors.main_bg}, + condition = function() + return require('galaxyline.provider_diagnostic').get_diagnostic_info() ~= '' + end + } +} + +i = i + 1 +gls.left[i] = { + DiagnosticHint = { + provider = "DiagnosticHint", + icon = "  ", + highlight = {colors.blue, colors.main_bg} + } +} + +i = i + 1 +gls.left[i] = { + CocStatus = { + provider = function() + if CocStatus() ~= nil then + return ' ' .. CocStatus() + else + return '' + end + end, + separator = ' ', + separator_highlight = {colors.main_bg, colors.main_bg}, + highlight = {colors.blue, colors.main_bg}, + } +} + +i = i + 1 +gls.left[i] = { + CocFunc = { + provider = function() + if CocFunc() ~= nil and CocFunc() ~= '' then + return ' ⨍' .. CocFunc() + else + return '' + end + end, + highlight = {colors.blue, colors.main_bg}, + } +} + +----------------------------=== Middle ===-------------------------- + +-- gls.mid[1] = { +-- ShowLspClient = { +-- provider = 'GetLspClient', +-- condition = function () +-- local tbl = {['dashboard'] = true,['']=true} + +-- if tbl[vim.bo.filetype] then +-- return false +-- end +-- return true +-- end, +-- icon = ' LSP:', +-- highlight = {colors.white,colors.bg,'bold'} +-- } +-- } + +----------------------------=== Right ===-------------------------- +i = 1 +gls.right[i] = { + DiffAdd = { + provider = "DiffAdd", + condition = check_git_width, + -- icon = "  ", + icon = " " .. icons.diff.added .. " ", + highlight = {colors.greenYel, colors.main_bg} + } +} + +i = i + 1 +gls.right[i] = { + DiffModified = { + provider = "DiffModified", + condition = check_git_width, + -- icon = " 柳", + icon = " " .. icons.diff.modified .. " ", + highlight = {colors.creamyorange, colors.main_bg} + } +} +i = i + 1 +gls.right[i] = { + DiffRemove = { + provider = "DiffRemove", + condition = check_git_width, + -- icon = "  ", + icon = " " .. icons.diff.removed .. " ", + highlight = {colors.red, colors.main_bg} + } +} + +i = i + 1 +gls.right[i] = { + right_LeftRounded1 = { + separator = " ", + separator_highlight = {colors.main_bg, colors.main_bg}, + provider = function() + return "" + end, + condition = require("galaxyline.condition").check_git_workspace, + highlight = {colors.blue2, colors.main_bg} + } +} + +i = i + 1 +gls.right[i] = { + GitIcon = { + provider = function() + return icons.git .. ' ' + end, + condition = check_git_terminal_workspace, + highlight = {colors.white, colors.blue2} + } +} + +i = i + 1 +gls.right[i] = { + GitBranch = { + provider = "GitBranch", + condition = require("galaxyline.condition").check_git_workspace, + highlight = {colors.white, colors.blue2}, + } +} + +i = i + 1 +gls.right[i] = { + Space2 = { + provider = white_space, + condition = require("galaxyline.condition").check_git_workspace, + highlight = {colors.blue2, colors.blue2}, + } +} + +i = i + 1 +gls.right[i] = { + right_LeftRounded = { + provider = function() + return "" + end, + highlight = function() + if require("galaxyline.condition").check_git_workspace() then + return {colors.grey, colors.blue2} + else + return {colors.grey, colors.main_bg} + end + end + } +} + +i = i + 1 +gls.right[i] = { + LineInfo = { + provider = "LineColumn", + icon = icons.line_nr .. " ", + highlight = {colors.white, colors.grey} + } +} + +i = i + 1 +gls.right[i] = { + PerCent = { + provider = "LinePercent", + separator = " ", + separator_highlight = {colors.white, colors.grey}, + highlight = {colors.white, colors.grey} + } +} + +i = i + 1 +gls.right[i] = { + rightRounded = { + provider = function() + return "" + end, + highlight = {colors.grey, colors.bg} + } +} + +-- -------------------------Short status line--------------------------------------- + +local k = 1 +gls.short_line_left[k] = { + SFirstElement = { + provider = function() return icons.sep.right end, + highlight = { colors.grey, 'NONE' }, + }, +} + +k = k + 1 +gls.short_line_left[k] ={ + SFileIcon = { + provider = 'FileIcon', + highlight = { colors.icon_inactive, colors.grey }, + }, +} + +k = k + 1 +gls.short_line_left[k] = { + SMyFileName = { + provider = function() return file_name(false, 'GalaxySMyFileName') end, + highlight = {colors.red, colors.grey}, + separator = icons.sep.left, + separator_highlight = {colors.grey, colors.main_bg} + } +} diff --git a/lua/plugins/indent-blankline.lua b/lua/plugins/indent-blankline.lua index 03aad25..e8101a1 100755 --- a/lua/plugins/indent-blankline.lua +++ b/lua/plugins/indent-blankline.lua @@ -1,21 +1,5 @@ --- indent-blankline character. - -require("../user_settings") -local indent_blankline_style = 1 -if user_indent_blankline_style then - indent_blankline_style = user_indent_blankline_style -end - -indent_blankline_styles = { - "▏", - "¦", - "┆", - "│", - "⎸", - "|", -} - -vim.g.indent_blankline_char = indent_blankline_styles[indent_blankline_style] +vim.g.indent_blankline_char = "▏" +vim.g.space_char_blankline = " " -- Disable indent-blankline on these pages. vim.g.indent_blankline_filetype_exclude = { @@ -27,6 +11,7 @@ vim.g.indent_blankline_filetype_exclude = { "lspinfo", "vista_kind" } + vim.g.indent_blankline_buftype_exclude = { "terminal" } vim.g.indent_blankline_show_trailing_blankline_indent = false diff --git a/lua/plugins/lualine.lua b/lua/plugins/lualine.lua index 6cc8cdc..7933144 100755 --- a/lua/plugins/lualine.lua +++ b/lua/plugins/lualine.lua @@ -1,53 +1,41 @@ local present, lualine = pcall(require, "lualine") if not present then - return + return end -require("../user_settings") -local lualine_style = 1 -if user_lualine_style then - lualine_style = user_lualine_style -end - -local lualine_styles = { - { - { left = " ", right = " " }, - { left = "│", right = "│" }, - }, - { - { left = ' ', right = ''}, - { left = ' ', right = ' '}, - }, - { - { left = '', right = ''}, - { left = ' ', right = ' '}, - }, - { - { left = "", right = "" }, - { left = '', right = '' } - }, - { - { left = "", right = ""}, - { left = ' ', right = ' '} - } -} +local left_pad = "" +local right_pad = "" lualine.setup { - options = { - theme = "auto", - disabled_filetypes = { - "toggleterm", - "NvimTree", - "vista_kind", - "dapui_scopes", - "dapui_breakpoints", - "dapui_stacks", - "dapui_watches", - "dap-repl" + options = { + icons_enabled = true, + theme = "auto", + component_separators = "|", + section_separators = { left = left_pad, right = right_pad}, + disabled_filetypes = {}, + always_divide_middle = true, }, - - section_separators = lualine_styles[lualine_style][1], - component_separators = lualine_styles[lualine_style][2] - }, - extensions = { "fugitive" }, + sections = { + lualine_a = { + { + "mode", + padding = { left = 3 }, + } + }, + lualine_b = {"branch", "diff", "diagnostics"}, + lualine_c = {"filename"}, + lualine_x = {"encoding", "fileformat", "filetype"}, + lualine_y = {"progress"}, + lualine_z = {"location"} + }, + inactive_sections = { + lualine_a = {}, + lualine_b = {}, + lualine_c = {"filename"}, + lualine_x = {"location"}, + lualine_y = {}, + lualine_z = {} + }, + tabline = {}, + extensions = { "fugitive", "fzf" } } diff --git a/lua/user_settings.lua b/lua/user_settings.lua index 1d936f4..1fe4c47 100755 --- a/lua/user_settings.lua +++ b/lua/user_settings.lua @@ -33,9 +33,6 @@ additional_plugins = { -- map("n", "", ":ToggleTerm") -- map("t", "", ":ToggleTerm") -user_lualine_style = 3 -- You can choose between 1, 2, 3, 4 and 5 -user_indent_blankline_style = 4 -- You can choose between 1, 2, 3, 4,5 and 6 - -- Set theme to be transparent vim.g.tokyonight_transparent = true