--- @type LazyPluginSpec return { "nvim-lualine/lualine.nvim", dependencies = { "nvim-tree/nvim-web-devicons", "AndreM222/copilot-lualine", "letieu/harpoon-lualine", }, config = function() local lualine = require("lualine") local colors = { bg = "#1e1e2e", fg = "#cdd6f4", yellow = "#f9e2af", cyan = "#89dceb", darkblue = "#89b4fa", green = "#a6e3a1", orange = "#fab387", violet = "#f5c2e7", magenta = "#cba6f7", blue = "#74c7ec", red = "#f38ba8", } local conditions = { hide_in_width = function() return vim.fn.winwidth(0) > 80 end, } 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, } local mode = { "mode", separator = { left = "" }, right_padding = 2, color = function() return { bg = mode_color[vim.fn.mode()], fg = colors.bg } end, } local filename = { "filename", color = { fg = colors.magenta, gui = "bold" }, } local branch = { "branch", icon = "", color = { fg = colors.violet, gui = "bold" }, on_click = function() vim.cmd("Neogit") end, } local diagnostics = { "diagnostics", sources = { "nvim_diagnostic" }, symbols = { error = " ", warn = " ", info = " " }, diagnostics_color = { color_error = { fg = colors.red }, color_warn = { fg = colors.yellow }, color_info = { fg = colors.cyan }, }, } local harpoon = { "harpoon2", indicators = { "1", "2", "3", "4" }, active_indicators = { "[1]", "[2]", "[3]", "[4]" }, separator = " ", } local copilot = { "copilot", show_colors = true, } local diff = { "diff", symbols = { added = " ", modified = "󰝤 ", removed = " " }, diff_color = { added = { fg = colors.green }, modified = { fg = colors.orange }, removed = { fg = colors.red }, }, cond = conditions.hide_in_width, } local fileformat = { "fileformat", fmt = string.upper, color = { fg = colors.green, gui = "bold" }, } local lazy = { require("lazy.status").updates, cond = require("lazy.status").has_updates, color = { fg = colors.violet }, on_click = function() local confirmation = vim.ui.select({ "Yes", "No" }, { prompt = "Update plugins?" }, function(choice) if choice == "Yes" then vim.cmd("Lazy sync") else vim.notify("Update cancelled", "info", { title = "Lazy" }) end end) end, } local filetype = { "filetype", color = { fg = colors.darkblue }, } local progress = { "progress", color = { fg = colors.magenta }, } local location = { "location", separator = { right = "" }, left_padding = 2, color = function() return { bg = mode_color[vim.fn.mode()], fg = colors.bg } end, } lualine.setup({ options = { component_separators = "", section_separators = { left = "", right = "" }, }, sections = { lualine_a = { mode }, lualine_b = { filename, branch }, lualine_c = { diagnostics, "%=", harpoon }, lualine_x = { copilot, diff, fileformat, lazy }, lualine_y = { filetype, progress }, lualine_z = { location }, }, inactive_sections = { lualine_a = { "filename" }, lualine_b = {}, lualine_c = {}, lualine_x = {}, lualine_y = {}, lualine_z = { "location" }, }, tabline = {}, extensions = {}, }) end, }