From 04d47e8b5b990fac69a648dfd98027d442f663b4 Mon Sep 17 00:00:00 2001 From: Michaël Ball Date: Fri, 13 Sep 2024 16:56:16 +0100 Subject: Replace galaxyline with lualine --- neovim/.config/nvim/lua/config/lualine.lua | 221 +++++++++++++++++++++++++ neovim/.config/nvim/lua/plugins/galaxyline.lua | 72 -------- neovim/.config/nvim/lua/plugins/lualine.lua | 71 ++++++++ 3 files changed, 292 insertions(+), 72 deletions(-) create mode 100644 neovim/.config/nvim/lua/config/lualine.lua delete mode 100644 neovim/.config/nvim/lua/plugins/galaxyline.lua create mode 100644 neovim/.config/nvim/lua/plugins/lualine.lua (limited to 'neovim') diff --git a/neovim/.config/nvim/lua/config/lualine.lua b/neovim/.config/nvim/lua/config/lualine.lua new file mode 100644 index 0000000..eac00d1 --- /dev/null +++ b/neovim/.config/nvim/lua/config/lualine.lua @@ -0,0 +1,221 @@ +-- Eviline config for lualine +-- Author: shadmansaleh +-- Credit: glepnir +local lualine = require('lualine') + +-- Color table for highlights +--stylua: ignore +local colors = { + bg = 'StatusLine', + fg = 'StatusLine', + yellow = vim.g.terminal_color_11, + cyan = vim.g.terminal_color_14, + darkblue = vim.g.terminal_color_4, + green = vim.g.terminal_color_10, + orange = vim.g.terminal_color_3, + violet = vim.g.terminal_color_5, + magenta = vim.g.terminal_color_13, + blue = vim.g.terminal_color_12, + red = vim.g.terminal_color_9, +} + +local conditions = { + buffer_not_empty = function() + return vim.fn.empty(vim.fn.expand('%:t')) ~= 1 + end, + hide_in_width = function() + return vim.fn.winwidth(0) > 80 + end, + check_git_workspace = function() + local filepath = vim.fn.expand('%:p:h') + local gitdir = vim.fn.finddir('.git', filepath .. ';') + return gitdir and #gitdir > 0 and #gitdir < #filepath + end, +} + +-- Config +local config = { + options = { + -- Disable sections and component separators + component_separators = '', + section_separators = '', + theme = { + -- We are going to use lualine_c an lualine_x as left and + -- right section. Both are highlighted by c theme . So we + -- are just setting default looks o statusline + normal = { c = { fg = colors.fg, bg = colors.bg } }, + inactive = { c = { fg = colors.fg, bg = colors.bg } }, + }, + }, + sections = { + -- these are to remove the defaults + lualine_a = {}, + lualine_b = {}, + lualine_y = {}, + lualine_z = {}, + -- These will be filled later + lualine_c = {}, + lualine_x = {}, + }, + inactive_sections = { + -- these are to remove the defaults + lualine_a = {}, + lualine_b = {}, + lualine_y = {}, + lualine_z = {}, + lualine_c = {}, + lualine_x = {}, + }, +} + +-- Inserts a component in lualine_c at left section +local function ins_left(component) + table.insert(config.sections.lualine_c, component) +end + +-- Inserts a component in lualine_x at right section +local function ins_right(component) + table.insert(config.sections.lualine_x, component) +end + +ins_left { + function() + return '▊' + end, + color = { fg = colors.blue }, -- Sets highlighting of component + padding = { left = 0, right = 1 }, -- We don't need space before this +} + +ins_left { + -- mode component + function() + return '' + end, + color = function() + -- auto change color according to neovims mode + local mode_color = { + n = colors.red, + i = colors.green, + v = colors.blue, + [''] = colors.blue, + V = colors.blue, + c = colors.magenta, + no = colors.red, + s = colors.orange, + S = colors.orange, + [''] = colors.orange, + ic = colors.yellow, + R = colors.violet, + Rv = colors.violet, + cv = colors.red, + ce = colors.red, + r = colors.cyan, + rm = colors.cyan, + ['r?'] = colors.cyan, + ['!'] = colors.red, + t = colors.red, + } + return { fg = mode_color[vim.fn.mode()] } + end, + padding = { right = 1 }, +} + +ins_left { + -- filesize component + 'filesize', + cond = conditions.buffer_not_empty, +} + +ins_left { + 'filetype', + cond = conditions.buffer_not_empty, + icon_only = true, +} + +ins_left { + 'filename', + cond = conditions.buffer_not_empty, + color = { fg = colors.magenta, gui = 'bold' }, +} + +ins_left { 'location' } + +ins_left { 'progress', color = { fg = colors.fg, gui = 'bold' } } + +ins_left { + 'diagnostics', + sources = { 'nvim_diagnostic' }, + symbols = { error = ' ', warn = ' ', info = ' ' }, + diagnostics_color = { + error = { fg = colors.red }, + warn = { fg = colors.yellow }, + info = { fg = colors.cyan }, + }, +} + +-- Insert mid section. You can make any number of sections in neovim :) +-- for lualine it's any number greater then 2 +ins_left { + function() + return '%=' + end, +} + +ins_left { + -- Lsp server name . + function() + local msg = 'No Active Lsp' + 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 + for _, client in ipairs(clients) do + local filetypes = client.config.filetypes + if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then + return client.name + end + end + return msg + end, + cond = function() + local tbl = { ['dashboard'] = true, [''] = true } + if tbl[vim.bo.filetype] then + return false + elseif next(vim.lsp.get_active_clients()) == nil then + return false + end + return true + end, + icon = '⚙ LSP:', + color = { fg = colors.fg, gui = 'bold' }, +} + +ins_right { + 'branch', + icon = '', + color = { fg = colors.violet, gui = 'bold' }, +} + +ins_right { + 'diff', + -- Is it me or the symbol for modified us really weird + symbols = { added = ' ', modified = '󰝤 ', removed = ' ' }, + diff_color = { + added = { fg = colors.green }, + modified = { fg = colors.orange }, + removed = { fg = colors.red }, + }, + cond = conditions.hide_in_width, +} + +ins_right { + function() + return '▊' + end, + color = { fg = colors.blue }, + padding = { left = 1 }, +} + +-- Now don't forget to initialize lualine +lualine.setup(config) diff --git a/neovim/.config/nvim/lua/plugins/galaxyline.lua b/neovim/.config/nvim/lua/plugins/galaxyline.lua deleted file mode 100644 index d3f8ba7..0000000 --- a/neovim/.config/nvim/lua/plugins/galaxyline.lua +++ /dev/null @@ -1,72 +0,0 @@ -return { - { - 'nvimdev/galaxyline.nvim', - branch = 'main', - dependencies = { - { - 'nvim-tree/nvim-web-devicons', - }, - { - "catppuccin/nvim", - name = "catppuccin", - priority = 1000, - lazy = false, - opts = { - term_colors = true, - }, - }, - { - 'navarasu/onedark.nvim', - lazy = false, - priority = 1000, - opts = { - style = 'light', - }, - }, - { - 'nyoom-engineering/oxocarbon.nvim', - lazy = false, - priority = 1000, - }, - { - "folke/tokyonight.nvim", - lazy = false, - priority = 1000, - opts = {}, - }, - { - 'lunacookies/vim-colors-xcode', - lazy = false, - priority = 1000, - config = function() - local colorscheme_rules_augroup = vim.api.nvim_create_augroup('Colors', {}) - vim.api.nvim_create_autocmd({ 'ColorScheme' }, { - pattern = { '*' }, - group = colorscheme_rules_augroup, - callback = function() - vim.api.nvim_set_hl(0, 'WinSeparator', { link = 'VertSplit', force = 1, default = 1 }) - end, - }) - end, - dependencies = { - { - 'f-person/auto-dark-mode.nvim', - opts = { - update_interval = 1000, - set_dark_mode = function() - vim.api.nvim_set_option('background', 'dark') - end, - set_light_mode = function() - vim.api.nvim_set_option('background', 'light') - end - } - } - }, - }, - }, - event = { 'BufEnter', 'VimEnter' }, - config = function() - require('config.galaxyline') - end, - }, -} diff --git a/neovim/.config/nvim/lua/plugins/lualine.lua b/neovim/.config/nvim/lua/plugins/lualine.lua new file mode 100644 index 0000000..fda2e78 --- /dev/null +++ b/neovim/.config/nvim/lua/plugins/lualine.lua @@ -0,0 +1,71 @@ +return { + { + 'nvim-lualine/lualine.nvim', + dependencies = { + { + 'nvim-tree/nvim-web-devicons', + }, + { + "catppuccin/nvim", + name = "catppuccin", + priority = 1000, + lazy = false, + opts = { + term_colors = true, + }, + }, + { + 'navarasu/onedark.nvim', + lazy = false, + priority = 1000, + opts = { + style = 'light', + }, + }, + { + 'nyoom-engineering/oxocarbon.nvim', + lazy = false, + priority = 1000, + }, + { + "folke/tokyonight.nvim", + lazy = false, + priority = 1000, + opts = {}, + }, + { + 'lunacookies/vim-colors-xcode', + lazy = false, + priority = 1000, + config = function() + local colorscheme_rules_augroup = vim.api.nvim_create_augroup('Colors', {}) + vim.api.nvim_create_autocmd({ 'ColorScheme' }, { + pattern = { '*' }, + group = colorscheme_rules_augroup, + callback = function() + vim.api.nvim_set_hl(0, 'WinSeparator', { link = 'VertSplit', force = 1, default = 1 }) + end, + }) + end, + dependencies = { + { + 'f-person/auto-dark-mode.nvim', + opts = { + update_interval = 1000, + set_dark_mode = function() + vim.api.nvim_set_option('background', 'dark') + end, + set_light_mode = function() + vim.api.nvim_set_option('background', 'light') + end + } + } + }, + }, + }, + event = { 'BufEnter', 'VimEnter' }, + config = function() + require('config.lualine') + end, + } +} -- cgit v1.2.3