speedie-nvim/.config/nvim/lua/lualine_config.lua

276 lines
6.2 KiB
Lua
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

--[[
speedie's neovim configuration
-- https://git.speedie.site/speedie/speedie-nvim --
]]--
local lualine = require('lualine')
-- Color table for highlights
-- stylua: ignore
local colors = {
bg = '#202328',
fg = '#bbc2cf',
yellow = '#ECBE7B',
cyan = '#008080',
darkblue = '#081633',
green = '#98be65',
orange = '#FF8800',
violet = '#a9a1e1',
magenta = '#c678dd',
blue = '#51afef',
red = '#ec5f67',
pink = '#eba8ff',
sep = '#222222',
}
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 = StatusTheme,
},
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.bg }, -- 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 = 0 },
}
-- Some padding
ins_left {
function()
return ''
end,
color = { fg = colors.sep },
padding = { left = 3, right = 1 },
}
--[[ Looks good, but takes up quite a bit of space, so I think I'm good.
ins_left {
'datetime',
icons_enabled = true,
icon = '󰥔',
color = { fg = colors.violet, gui = 'bold' },
style = "%T",
}
--]]
ins_left {
'filetype',
fmt = string.upper,
icons_enabled = true,
icon_only = true,
color = { fg = colors.magenta, gui = 'bold' },
}
ins_left {
'filename',
cond = conditions.buffer_not_empty,
icons_enabled = false,
color = { fg = colors.magenta, gui = 'bold' },
}
ins_left {
'location',
icons_enabled = true,
icon = '';
color = { fg = colors.red, gui = 'bold' },
}
ins_left {
'progress',
icons_enabled = true,
icon = '󰹺',
color = { fg = colors.pink, gui = 'bold' },
}
ins_left {
'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 },
},
}
-- 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_right {
-- search component
'searchcount',
icons_enabled = true,
icon = '',
color = { fg = colors.violet, gui = 'bold' },
}
ins_right {
-- filesize component
'filesize',
icons_enabled = true,
icon = '󰉉',
color = { fg = colors.orange, gui = 'bold' },
cond = conditions.buffer_not_empty,
}
-- 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' },
icons_enabled = true,
icon = '󰉢';
}
ins_right {
'aerial',
sep = " ) ",
depth = nil,
colored = false,
color = { fg = colors.pink, gui = 'bold' },
}
ins_right {
function()
if vim.b.gitsigns_status == nil then
return '0'
else
return vim.b.gitsigns_status
end
end,
color = { fg = colors.orange, gui = 'bold' },
icon = '',
icons_enabled = true,
padding = { left = 1 },
}
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 {
'fileformat',
fmt = string.upper,
symbols = {
unix = '',
dos = '',
mac = '',
},
icons_enabled = true,
color = { fg = colors.blue, gui = 'bold' },
}
-- Some padding
ins_right {
function()
return ' '
end,
color = { fg = colors.bg },
padding = { left = 1 },
}
-- Now don't forget to initialize lualine
lualine.setup(config)