2025-10-11 17:34:21 +11:00
|
|
|
|
-- Now don't forget to initialize lualine
|
|
|
|
|
|
return {
|
2025-10-22 14:20:19 +11:00
|
|
|
|
-- {
|
|
|
|
|
|
-- "nvim-lualine/lualine.nvim",
|
|
|
|
|
|
-- dependencies = { "nvim-tree/nvim-web-devicons" },
|
|
|
|
|
|
-- config = function()
|
|
|
|
|
|
-- local lualine = require("lualine")
|
|
|
|
|
|
-- local colors = {
|
|
|
|
|
|
-- bg = "#202328",
|
|
|
|
|
|
-- fg = "#bbc2cf",
|
|
|
|
|
|
-- yellow = "#ECBE7B",
|
|
|
|
|
|
-- cyan = "#008080",
|
|
|
|
|
|
-- darkblue = "#081633",
|
|
|
|
|
|
-- green = "#98be65",
|
|
|
|
|
|
-- orange = "#FF8800",
|
|
|
|
|
|
-- violet = "#a9a1e1",
|
|
|
|
|
|
-- magenta = "#c678dd",
|
|
|
|
|
|
-- blue = "#51afef",
|
|
|
|
|
|
-- red = "#ec5f67",
|
|
|
|
|
|
-- }
|
|
|
|
|
|
--
|
|
|
|
|
|
-- 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 = 'auto'
|
|
|
|
|
|
-- -- 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({
|
|
|
|
|
|
-- "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_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" },
|
|
|
|
|
|
-- })
|
|
|
|
|
|
--
|
|
|
|
|
|
-- -- 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,
|
|
|
|
|
|
-- -- icons_enabled = false, -- I think icons are cool but Eviline doesn't have them. sigh
|
|
|
|
|
|
-- -- color = { fg = colors.green, 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 },
|
|
|
|
|
|
-- })
|
|
|
|
|
|
--
|
|
|
|
|
|
-- lualine.setup(config)
|
|
|
|
|
|
-- end,
|
|
|
|
|
|
-- },
|
2025-10-11 17:18:56 +11:00
|
|
|
|
}
|