diff options
| author | Tom Li Dobnik <tomlidobnik1@gmail.com> | 2025-08-09 17:12:43 +0200 |
|---|---|---|
| committer | Tom Li Dobnik <tomlidobnik1@gmail.com> | 2025-08-09 17:12:43 +0200 |
| commit | ea82cbb1c0b778dd946c717cceace53fab391ba8 (patch) | |
| tree | f0c84a86f48d61d918b6de9dc464c08370ab6a7c /.config/nvim/lua/config/plugins/lualine.lua | |
init
Diffstat (limited to '.config/nvim/lua/config/plugins/lualine.lua')
| -rw-r--r-- | .config/nvim/lua/config/plugins/lualine.lua | 218 |
1 files changed, 218 insertions, 0 deletions
diff --git a/.config/nvim/lua/config/plugins/lualine.lua b/.config/nvim/lua/config/plugins/lualine.lua new file mode 100644 index 0000000..466d7b4 --- /dev/null +++ b/.config/nvim/lua/config/plugins/lualine.lua @@ -0,0 +1,218 @@ +return { + "nvim-lualine/lualine.nvim", + event = "VeryLazy", + dependencies = { "nvim-tree/nvim-web-devicons" }, + -- Eviline config for lualine + -- Author: shadmansaleh + -- Credit: glepnir + config = function() + local lualine = require("lualine") + + -- Color table for highlights + -- stylua: ignore + local colors = { + bg = '#434c5e', + fg = '#d8dee9', + yellow = '#ebcb8b', + cyan = '#88c0d0', + darkblue = '#5e81ac', + green = '#a3be8c', + orange = '#d08770', + violet = '#b48ead', + blue = '#81a1c1', + red = '#bf616a', + } + + 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, + } + + local config = { + options = { + component_separators = "", + section_separators = "", + theme = { + normal = { c = { fg = colors.fg, bg = colors.bg } }, + inactive = { c = { fg = colors.fg, bg = colors.bg } }, + }, + }, + sections = { + lualine_a = {}, + lualine_b = {}, + lualine_y = {}, + lualine_z = {}, + lualine_c = {}, + lualine_x = {}, + }, + inactive_sections = { + 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 " " .. string.upper(vim.fn.mode()) + 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.violet, + 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({ + "filename", + cond = conditions.buffer_not_empty, + color = { fg = colors.green, gui = "bold" }, + }) + ins_left({ + "filesize", + cond = conditions.buffer_not_empty, + }) + + ins_right({ "location" }) + + ins_right({ "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_get_option_value("filetype", { buf = 0 }) + -- local clients = vim.lsp.get_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, + -- icon = " LSP:", + -- color = { fg = "#ffffff", gui = "bold" }, + -- }) + + -- ins_right({ + -- "filetype", + -- color = { fg = colors.fg, gui = "bold" }, + -- }) + -- -- Add components to right sections + -- ins_right({ + -- "o:encoding", -- option component same as &encoding in viml + -- fmt = string.upper, -- I'm not sure why it's upper case either ;) + -- cond = conditions.hide_in_width, + -- color = { fg = colors.green, gui = "bold" }, + -- }) + -- + -- ins_right({ + -- "fileformat", + -- fmt = string.upper, + -- color = { fg = colors.green, gui = "bold" }, + -- }) + + -- ins_right({ + -- "branch", + -- icon = "", + -- color = { fg = colors.violet, gui = "bold" }, + -- }) + + -- ins_right({ + -- "diff", + -- 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 }, + -- }) + + lualine.setup(config) + end, +} |
