Changed lualine to catppuccin theme

This commit is contained in:
2023-08-27 11:32:21 +02:00
parent 88baa12ef2
commit 518e82fe9c

View File

@@ -1,219 +1,213 @@
local setup, lualine = pcall(require, 'lualine') local setup, lualine = pcall(require, "lualine")
if not setup then if not setup then
return return
end end
local colors = { local colors = {
bg = '#202328', bg = "#1e1e2e",
fg = '#bbc2cf', fg = "#cdd6f4",
yellow = '#ECBE7B', yellow = "#f9e2af",
cyan = '#008080', cyan = "#89dceb",
darkblue = '#081633', darkblue = "#2374f6",
green = '#98be65', green = "#a6e3a1",
orange = '#FF8800', orange = "#fab387",
violet = '#a9a1e1', violet = "#f5c2e7",
magenta = '#c678dd', magenta = "#cba6f7",
blue = '#51afef', blue = "#89b4fa",
red = '#ec5f67', red = "#f38ba8",
} }
local conditions = { local conditions = {
buffer_not_empty = function() buffer_not_empty = function()
return vim.fn.empty(vim.fn.expand('%:t')) ~= 1 return vim.fn.empty(vim.fn.expand("%:t")) ~= 1
end, end,
hide_in_width = function() hide_in_width = function()
return vim.fn.winwidth(0) > 80 return vim.fn.winwidth(0) > 80
end, end,
check_git_workspace = function() check_git_workspace = function()
local filepath = vim.fn.expand('%:p:h') local filepath = vim.fn.expand("%:p:h")
local gitdir = vim.fn.finddir('.git', filepath .. ';') local gitdir = vim.fn.finddir(".git", filepath .. ";")
return gitdir and #gitdir > 0 and #gitdir < #filepath return gitdir and #gitdir > 0 and #gitdir < #filepath
end, end,
} }
-- Config -- Config
local config = { local config = {
options = { options = {
-- Disable sections and component separators -- Disable sections and component separators
component_separators = '', component_separators = "",
section_separators = '', section_separators = "",
theme = { theme = {
-- We are going to use lualine_c an lualine_x as left and -- We are going to use lualine_c an lualine_x as left and
-- right section. Both are highlighted by c theme . So we -- right section. Both are highlighted by c theme . So we
-- are just setting default looks o statusline -- are just setting default looks o statusline
normal = { c = { fg = colors.fg, bg = colors.bg } }, normal = { c = { fg = colors.fg, bg = colors.bg } },
inactive = { c = { fg = colors.fg, bg = colors.bg } }, inactive = { c = { fg = colors.fg, bg = colors.bg } },
}, },
}, },
sections = { sections = {
-- these are to remove the defaults -- these are to remove the defaults
lualine_a = {}, lualine_a = {},
lualine_b = {}, lualine_b = {},
lualine_y = {}, lualine_y = {},
lualine_z = {}, lualine_z = {},
-- These will be filled later -- These will be filled later
lualine_c = {}, lualine_c = {},
lualine_x = {}, lualine_x = {},
}, },
inactive_sections = { inactive_sections = {
-- these are to remove the defaults -- these are to remove the defaults
lualine_a = {}, lualine_a = {},
lualine_b = {}, lualine_b = {},
lualine_y = {}, lualine_y = {},
lualine_z = {}, lualine_z = {},
lualine_c = {}, lualine_c = {},
lualine_x = {}, lualine_x = {},
}, },
} }
-- Inserts a component in lualine_c at left section -- Inserts a component in lualine_c at left section
local function ins_left(component) local function ins_left(component)
table.insert(config.sections.lualine_c, component) table.insert(config.sections.lualine_c, component)
end end
-- Inserts a component in lualine_x at right section -- Inserts a component in lualine_x at right section
local function ins_right(component) local function ins_right(component)
table.insert(config.sections.lualine_x, component) table.insert(config.sections.lualine_x, component)
end end
ins_left { ins_left({
function() function()
return '' return ""
end, end,
color = { fg = colors.blue }, -- Sets highlighting of component color = { fg = colors.blue }, -- Sets highlighting of component
padding = { left = 0, right = 1 }, -- We don't need space before this padding = { left = 0, right = 1 }, -- We don't need space before this
} })
ins_left { ins_left({
-- mode component -- mode component
function() function()
return '' return ""
end, end,
color = function() color = function()
-- auto change color according to neovims mode -- auto change color according to neovims mode
local mode_color = { local mode_color = {
n = colors.red, n = colors.red,
i = colors.green, i = colors.green,
v = colors.blue, v = colors.blue,
[''] = colors.blue, [""] = colors.blue,
V = colors.blue, V = colors.blue,
c = colors.magenta, c = colors.magenta,
no = colors.red, no = colors.red,
s = colors.orange, s = colors.orange,
S = colors.orange, S = colors.orange,
[''] = colors.orange, [""] = colors.orange,
ic = colors.yellow, ic = colors.yellow,
R = colors.violet, R = colors.violet,
Rv = colors.violet, Rv = colors.violet,
cv = colors.red, cv = colors.red,
ce = colors.red, ce = colors.red,
r = colors.cyan, r = colors.cyan,
rm = colors.cyan, rm = colors.cyan,
['r?'] = colors.cyan, ["r?"] = colors.cyan,
['!'] = colors.red, ["!"] = colors.red,
t = colors.red, t = colors.red,
} }
return { fg = mode_color[vim.fn.mode()] } return { fg = mode_color[vim.fn.mode()] }
end, end,
padding = { right = 1 }, padding = { right = 1 },
} })
ins_left { ins_left({
-- filesize component -- filesize component
'filesize', "filesize",
cond = conditions.buffer_not_empty, cond = conditions.buffer_not_empty,
} })
ins_left { ins_left({
'filename', "filename",
cond = conditions.buffer_not_empty, cond = conditions.buffer_not_empty,
color = { fg = colors.magenta, gui = 'bold' }, color = { fg = colors.magenta, gui = "bold" },
} })
ins_left { 'location' } ins_left({ "location" })
ins_left { 'progress', color = { fg = colors.fg, gui = 'bold' } } ins_left({ "progress", color = { fg = colors.fg, gui = "bold" } })
ins_left { ins_left({
'diagnostics', "diagnostics",
sources = { 'nvim_diagnostic' }, sources = { "nvim_diagnostic" },
symbols = { error = '', warn = '', info = '' }, symbols = { error = "", warn = "", info = "" },
diagnostics_color = { diagnostics_color = {
color_error = { fg = colors.red }, color_error = { fg = colors.red },
color_warn = { fg = colors.yellow }, color_warn = { fg = colors.yellow },
color_info = { fg = colors.cyan }, color_info = { fg = colors.cyan },
}, },
} })
-- Insert mid section. You can make any number of sections in neovim :) -- Insert mid section. You can make any number of sections in neovim :)
-- for lualine it's any number greater then 2 -- for lualine it's any number greater then 2
ins_left { ins_left({
function() function()
return '%=' return "%="
end, end,
} })
ins_left { ins_right({
-- Lsp server name . -- Lsp server name .
function() function()
local msg = 'No Active Lsp' local msg = "No Active Lsp"
local buf_ft = vim.api.nvim_buf_get_option(0, 'filetype') local buf_ft = vim.api.nvim_buf_get_option(0, "filetype")
local clients = vim.lsp.get_active_clients() local clients = vim.lsp.get_active_clients()
if next(clients) == nil then if next(clients) == nil then
return msg return msg
end end
for _, client in ipairs(clients) do for _, client in ipairs(clients) do
local filetypes = client.config.filetypes local filetypes = client.config.filetypes
if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then
return client.name return client.name
end end
end end
return msg return msg
end, end,
icon = ' LSP:', icon = " :",
color = { fg = '#ffffff', gui = 'bold' }, color = { fg = "#ffffff", gui = "bold" },
} })
-- Add components to right sections -- Add components to right sections
ins_right { ins_right({
'o:encoding', -- option component same as &encoding in viml function()
fmt = string.upper, -- I'm not sure why it's upper case either ;) return ""
cond = conditions.hide_in_width, end,
color = { fg = colors.green, gui = 'bold' }, cond = require("lazy.status").has_updates,
} color = { fg = colors.violet },
})
ins_right { ins_right({
'fileformat', "branch",
fmt = string.upper, icon = "",
icons_enabled = false, -- I think icons are cool but Eviline doesn't have them. sigh color = { fg = colors.violet, gui = "bold" },
color = { fg = colors.green, gui = 'bold' }, })
}
ins_right { ins_right({
'branch', "diff",
icon = '', -- Is it me or the symbol for modified us really weird
color = { fg = colors.violet, gui = 'bold' }, 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 { ins_right({
'diff', function()
-- Is it me or the symbol for modified us really weird return ""
symbols = { added = '', modified = '󰝤 ', removed = '' }, end,
diff_color = { color = { fg = colors.blue },
added = { fg = colors.green }, padding = { left = 1 },
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 -- Now don't forget to initialize lualine
lualine.setup(config) lualine.setup(config)